Files
IT-Nexus/agent/setup.iss

104 lines
4.0 KiB
Plaintext

#define MyAppName "IT Nexus Agent"
#define MyAppVersion "1.2.4"
#define MyAppPublisher "Cereda Systems GmbH"
#define MyAppURL "https://it-nexus.cereda-systems.de"
#define MyAppExeName "it-nexus-agent.ps1"
#define InstallDir "{commonappdata}\IT Nexus Agent"
[Setup]
AppId={{B3F7A2C1-4E8D-4F2A-9B1C-7D3E5F6A8B2C}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
DefaultDirName={#InstallDir}
DisableDirPage=yes
DefaultGroupName={#MyAppName}
DisableProgramGroupPage=yes
OutputDir=..\dist
OutputBaseFilename=IT-Nexus-Agent-Setup-v{#MyAppVersion}
SetupIconFile=
Compression=lzma2/ultra64
SolidCompression=yes
WizardStyle=modern
WizardSizePercent=120
PrivilegesRequired=admin
UninstallDisplayName={#MyAppName}
UninstallDisplayIcon={app}\it-nexus-agent.ps1
CloseApplications=no
DisableWelcomePage=no
WizardImageFile=compiler:WizModernImage.bmp
WizardSmallImageFile=compiler:WizModernSmallImage.bmp
[Languages]
Name: "german"; MessagesFile: "compiler:Languages\German.isl"
[Files]
Source: "it-nexus-agent.ps1"; DestDir: "{app}"; Flags: ignoreversion
Source: "config.json.template"; DestDir: "{app}"; DestName: "config.json"; Flags: ignoreversion onlyifdoesntexist
[Run]
Filename: "powershell.exe"; Parameters: "-ExecutionPolicy Bypass -NonInteractive -Command ""Unregister-ScheduledTask -TaskName 'IT Nexus Agent' -Confirm:$false -ErrorAction SilentlyContinue; $a = New-ScheduledTaskAction -Execute 'powershell.exe' -Argument '-ExecutionPolicy Bypass -NonInteractive -WindowStyle Hidden -File \""{app}\it-nexus-agent.ps1\""'; $t = New-ScheduledTaskTrigger -RepetitionInterval (New-TimeSpan -Minutes 1) -Once -At (Get-Date); $s = New-ScheduledTaskSettingsSet -ExecutionTimeLimit (New-TimeSpan -Minutes 2) -MultipleInstances IgnoreNew -StartWhenAvailable; $p = New-ScheduledTaskPrincipal -UserId 'SYSTEM' -LogonType ServiceAccount -RunLevel Highest; Register-ScheduledTask -TaskName 'IT Nexus Agent' -Action $a -Trigger $t -Settings $s -Principal $p -Force; Start-ScheduledTask -TaskName 'IT Nexus Agent'"""; Flags: runhidden waituntilterminated; StatusMsg: "Registriere Windows Scheduled Task..."
[UninstallRun]
Filename: "powershell.exe"; Parameters: "-ExecutionPolicy Bypass -NonInteractive -Command ""Unregister-ScheduledTask -TaskName 'IT Nexus Agent' -Confirm:$false -ErrorAction SilentlyContinue"""; Flags: runhidden waituntilterminated
[Code]
var
ServerUrlPage: TInputQueryWizardPage;
AgentKeyPage: TInputQueryWizardPage;
procedure InitializeWizard;
begin
ServerUrlPage := CreateInputQueryPage(wpWelcome,
'Server-Konfiguration',
'Gib die IT Nexus Server-Adresse ein.',
'');
ServerUrlPage.Add('Server URL:', False);
ServerUrlPage.Values[0] := 'https://it-nexus.cereda-systems.de';
AgentKeyPage := CreateInputQueryPage(ServerUrlPage.ID,
'API Key',
'Gib den Agent API Key ein. Diesen findest du in den IT Nexus Einstellungen.',
'');
AgentKeyPage.Add('Agent API Key:', False);
AgentKeyPage.Values[0] := 'itx-4CPJPTHmCfdrL9D62WacCATEvuvULXcp7ECMpSaNUjsS344F6_L4Ug';
end;
function NextButtonClick(CurPageID: Integer): Boolean;
begin
Result := True;
if CurPageID = ServerUrlPage.ID then begin
if ServerUrlPage.Values[0] = '' then begin
MsgBox('Bitte gib eine Server URL ein.', mbError, MB_OK);
Result := False;
end;
end;
if CurPageID = AgentKeyPage.ID then begin
if AgentKeyPage.Values[0] = '' then begin
MsgBox('Bitte gib einen API Key ein.', mbError, MB_OK);
Result := False;
end;
end;
end;
procedure CurStepChanged(CurStep: TSetupStep);
var
ConfigFile: string;
Config: TStringList;
begin
if CurStep = ssPostInstall then begin
ConfigFile := ExpandConstant('{app}\config.json');
Config := TStringList.Create;
try
Config.Add('{');
Config.Add(' "server_url": "' + ServerUrlPage.Values[0] + '",');
Config.Add(' "agent_key": "' + AgentKeyPage.Values[0] + '"');
Config.Add('}');
Config.SaveToFile(ConfigFile);
finally
Config.Free;
end;
end;
end;