Beta_cartrigesg_bd Beta v0.8
This commit is contained in:
@@ -10,7 +10,8 @@
|
||||
- проверка занятости портов;
|
||||
- создание базы, пользователя и конфигурации приложения;
|
||||
- правило брандмауэра Windows для выбранного порта Inventera;
|
||||
- ярлыки Inventera в меню «Пуск», на рабочем столе и в общей автозагрузке.
|
||||
- ярлыки веб-приложения Inventera в меню «Пуск» и на рабочем столе;
|
||||
- автоматический запуск сервера Inventera при старте Windows.
|
||||
|
||||
## Автоматический режим
|
||||
|
||||
@@ -77,6 +78,23 @@ HKEY_LOCAL_MACHINE\Software\Inventera\Installer
|
||||
|
||||
При запуске `Inventera.Server.exe` читает из этого файла адрес и порт PostgreSQL, имя базы, логин, пароль и порт веб-приложения. Поэтому введённые в мастере значения автоматически используются кодом приложения.
|
||||
|
||||
## Ярлык и автозапуск
|
||||
|
||||
Ярлык `Inventera` на рабочем столе открывает веб-приложение в браузере по адресу:
|
||||
|
||||
```text
|
||||
http://127.0.0.1:<порт Inventera>
|
||||
```
|
||||
|
||||
Сервер регистрируется в Планировщике заданий Windows под именем
|
||||
`Inventera Server`. Он запускается от системной учётной записи при старте
|
||||
Windows, даже если пользователь ещё не вошёл в систему. При аварийном завершении
|
||||
Планировщик пытается запустить его повторно до пяти раз с интервалом в одну минуту.
|
||||
|
||||
При обновлении удаляется старый ярлык `Inventera Server` из общей папки
|
||||
«Автозагрузка», чтобы одновременно не запускались два экземпляра сервера.
|
||||
При удалении Inventera задание Планировщика также удаляется.
|
||||
|
||||
## Сборка на Windows x64
|
||||
|
||||
Требования:
|
||||
|
||||
@@ -34,20 +34,32 @@ Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
|
||||
[Files]
|
||||
Source: "{#PostgreSqlInstaller}"; Flags: dontcopy noencryption nocompression
|
||||
Source: "installer\initialize_inventera_database.ps1"; Flags: dontcopy noencryption
|
||||
Source: "installer\configure_inventera_autostart.ps1"; Flags: dontcopy noencryption
|
||||
Source: "dist\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion
|
||||
|
||||
[INI]
|
||||
Filename: "{app}\Inventera.url"; Section: "InternetShortcut"; Key: "URL"; String: "http://127.0.0.1:{code:GetApplicationPort}"
|
||||
Filename: "{app}\Inventera.url"; Section: "InternetShortcut"; Key: "IconFile"; String: "{app}\{#MyAppExeName}"
|
||||
Filename: "{app}\Inventera.url"; Section: "InternetShortcut"; Key: "IconIndex"; String: "0"
|
||||
|
||||
[Icons]
|
||||
Name: "{group}\Inventera"; Filename: "http://127.0.0.1:{code:GetApplicationPort}"; IconFilename: "{app}\{#MyAppExeName}"
|
||||
Name: "{commondesktop}\Inventera"; Filename: "http://127.0.0.1:{code:GetApplicationPort}"; IconFilename: "{app}\{#MyAppExeName}"
|
||||
Name: "{commonstartup}\Inventera Server"; Filename: "{app}\{#MyAppExeName}"; WorkingDir: "{app}"; IconFilename: "{app}\{#MyAppExeName}"
|
||||
Name: "{group}\Inventera"; Filename: "{app}\Inventera.url"; IconFilename: "{app}\{#MyAppExeName}"; Comment: "Открыть веб-приложение Inventera"
|
||||
Name: "{commondesktop}\Inventera"; Filename: "{app}\Inventera.url"; IconFilename: "{app}\{#MyAppExeName}"; Comment: "Открыть веб-приложение Inventera"
|
||||
|
||||
[InstallDelete]
|
||||
Type: files; Name: "{commonstartup}\Inventera Server.lnk"
|
||||
|
||||
[UninstallDelete]
|
||||
Type: files; Name: "{app}\Inventera.url"
|
||||
|
||||
[Run]
|
||||
Filename: "{sys}\netsh.exe"; Parameters: "advfirewall firewall delete rule name=""Inventera Web"""; Flags: runhidden waituntilterminated
|
||||
Filename: "{sys}\netsh.exe"; Parameters: "advfirewall firewall add rule name=""Inventera Web"" dir=in action=allow protocol=TCP localport={code:GetApplicationPort}"; Flags: runhidden waituntilterminated
|
||||
Filename: "{app}\{#MyAppExeName}"; WorkingDir: "{app}"; Flags: nowait runhidden; StatusMsg: "Запуск сервера Inventera..."
|
||||
Filename: "{sys}\schtasks.exe"; Parameters: "/Run /TN ""Inventera Server"""; Flags: runhidden waituntilterminated; StatusMsg: "Запуск сервера Inventera..."
|
||||
Filename: "http://127.0.0.1:{code:GetApplicationPort}"; Description: "Открыть Inventera"; Flags: shellexec nowait postinstall skipifsilent
|
||||
|
||||
[UninstallRun]
|
||||
Filename: "{sys}\schtasks.exe"; Parameters: "/Delete /F /TN ""Inventera Server"""; Flags: runhidden waituntilterminated; RunOnceId: "RemoveInventeraAutostart"
|
||||
Filename: "{sys}\taskkill.exe"; Parameters: "/F /IM ""{#MyAppExeName}"""; Flags: runhidden waituntilterminated; RunOnceId: "StopInventera"
|
||||
Filename: "{sys}\netsh.exe"; Parameters: "advfirewall firewall delete rule name=""Inventera Web"""; Flags: runhidden waituntilterminated; RunOnceId: "RemoveInventeraFirewallRule"
|
||||
|
||||
@@ -698,6 +710,15 @@ begin
|
||||
'-ConfigPath ' + QuoteArgument(ExpandConstant('{commonappdata}\Inventera\config.json'));
|
||||
end;
|
||||
|
||||
function AutostartConfigurationParameters: String;
|
||||
begin
|
||||
Result :=
|
||||
'-NoProfile -NonInteractive -ExecutionPolicy Bypass -File ' +
|
||||
QuoteArgument(ExpandConstant('{tmp}\configure_inventera_autostart.ps1')) + ' ' +
|
||||
'-ExecutablePath ' + QuoteArgument(ExpandConstant('{app}\{#MyAppExeName}')) + ' ' +
|
||||
'-WorkingDirectory ' + QuoteArgument(ExpandConstant('{app}'));
|
||||
end;
|
||||
|
||||
function PrepareToInstall(var NeedsRestart: Boolean): String;
|
||||
var
|
||||
ExitCode: Integer;
|
||||
@@ -798,4 +819,23 @@ begin
|
||||
IntToStr(ExitCode);
|
||||
Exit;
|
||||
end;
|
||||
|
||||
WizardForm.PreparingLabel.Caption :=
|
||||
'Настройка автоматического запуска Inventera при старте Windows...';
|
||||
ExtractTemporaryFile('configure_inventera_autostart.ps1');
|
||||
Success := Exec(
|
||||
PowerShellPath,
|
||||
AutostartConfigurationParameters,
|
||||
'',
|
||||
SW_HIDE,
|
||||
ewWaitUntilTerminated,
|
||||
ExitCode
|
||||
);
|
||||
if (not Success) or (ExitCode <> 0) then
|
||||
begin
|
||||
Result :=
|
||||
'Не удалось настроить автозапуск Inventera. Код ошибки: ' +
|
||||
IntToStr(ExitCode);
|
||||
Exit;
|
||||
end;
|
||||
end;
|
||||
|
||||
45
installer/configure_inventera_autostart.ps1
Normal file
45
installer/configure_inventera_autostart.ps1
Normal file
@@ -0,0 +1,45 @@
|
||||
[CmdletBinding()]
|
||||
param(
|
||||
[Parameter(Mandatory = $true)]
|
||||
[string]$ExecutablePath,
|
||||
|
||||
[Parameter(Mandatory = $true)]
|
||||
[string]$WorkingDirectory
|
||||
)
|
||||
|
||||
$ErrorActionPreference = 'Stop'
|
||||
$taskName = 'Inventera Server'
|
||||
|
||||
if (-not (Split-Path -Parent $ExecutablePath)) {
|
||||
throw 'The Inventera executable path is invalid.'
|
||||
}
|
||||
|
||||
$action = New-ScheduledTaskAction `
|
||||
-Execute $ExecutablePath `
|
||||
-WorkingDirectory $WorkingDirectory
|
||||
|
||||
$trigger = New-ScheduledTaskTrigger -AtStartup
|
||||
|
||||
$settings = New-ScheduledTaskSettingsSet `
|
||||
-StartWhenAvailable `
|
||||
-RestartCount 5 `
|
||||
-RestartInterval (New-TimeSpan -Minutes 1) `
|
||||
-ExecutionTimeLimit ([TimeSpan]::Zero) `
|
||||
-MultipleInstances IgnoreNew
|
||||
|
||||
$principal = New-ScheduledTaskPrincipal `
|
||||
-UserId 'SYSTEM' `
|
||||
-LogonType ServiceAccount `
|
||||
-RunLevel Highest
|
||||
|
||||
$task = New-ScheduledTask `
|
||||
-Action $action `
|
||||
-Trigger $trigger `
|
||||
-Settings $settings `
|
||||
-Principal $principal `
|
||||
-Description 'Starts the Inventera web server when Windows starts.'
|
||||
|
||||
Register-ScheduledTask `
|
||||
-TaskName $taskName `
|
||||
-InputObject $task `
|
||||
-Force | Out-Null
|
||||
Reference in New Issue
Block a user