Files
syshelper/installer/setup.iss
T
2026-08-02 13:47:00 +07:00

100 lines
4.3 KiB
Plaintext

; Установщик «System Helper» для Windows x64.
; Сборка: ISCC.exe /DAppVersion=0.1.0 installer\setup.iss
; Результат кладётся в dist\syshelper-<версия>-setup.exe
#ifndef AppVersion
#define AppVersion "0.0.0-dev"
#endif
#ifndef ExeSource
#define ExeSource "..\target\release\syshelper.exe"
#endif
#define AppName "System Helper"
#define AppExeName "syshelper.exe"
#define AppUrl "http://127.0.0.1:8787"
; Имя задачи автообновления — должно совпадать с TASK_NAME в src/update.rs.
#define TaskName "SysHelperUpdate"
[Setup]
; AppId определяет программу при обновлении и удалении — не менять между версиями.
AppId={{B3F1C0A2-7E5D-4A19-9C3B-2D8E6F4A1B57}
AppName={#AppName}
AppVersion={#AppVersion}
AppVerName={#AppName} {#AppVersion}
DefaultDirName={autopf}\SysHelper
DefaultGroupName={#AppName}
DisableProgramGroupPage=yes
UninstallDisplayName={#AppName}
UninstallDisplayIcon={app}\{#AppExeName}
OutputDir=..\dist
OutputBaseFilename=syshelper-{#AppVersion}-setup
Compression=lzma2/max
SolidCompression=yes
WizardStyle=modern
; Ставим в 64-битный Program Files; программа собрана только под x64.
ArchitecturesAllowed=x64compatible
ArchitecturesInstallIn64BitMode=x64compatible
; Program Files и автозапуск через HKLM требуют администратора.
PrivilegesRequired=admin
CloseApplications=yes
RestartApplications=no
[Languages]
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
Name: "english"; MessagesFile: "compiler:Default.isl"
[Tasks]
Name: "autostart"; \
Description: "Запускать при входе в систему"; \
GroupDescription: "Дополнительно:"
Name: "desktopicon"; \
Description: "{cm:CreateDesktopIcon}"; \
GroupDescription: "Дополнительно:"; \
Flags: unchecked
[Dirs]
; Сюда работающая от пользователя программа кладёт скачанный установщик, а
; задача Планировщика (от SYSTEM) забирает его. Нужен доступ на запись обоим.
Name: "{commonappdata}\SysHelper\update"; Permissions: users-modify
[Files]
Source: "{#ExeSource}"; DestDir: "{app}"; Flags: ignoreversion
[Icons]
Name: "{group}\{#AppName}"; Filename: "{app}\{#AppExeName}"
Name: "{group}\Веб-панель"; Filename: "{#AppUrl}"
Name: "{autodesktop}\{#AppName}"; Filename: "{app}\{#AppExeName}"; Tasks: desktopicon
[Registry]
; Автозапуск для всех пользователей. Запускается без повышения прав —
; этого хватает, чтобы завершать процессы того же пользователя.
Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\Run"; \
ValueType: string; ValueName: "SysHelper"; \
ValueData: """{app}\{#AppExeName}"""; \
Flags: uninsdeletevalue; Tasks: autostart
[Run]
; Задача автообновления: программа скачивает свежий установщик и просит
; Планировщик запустить его от SYSTEM с наивысшими правами — так обновление
; ставится тихо, без запроса UAC. Своего расписания у задачи нет (SC ONCE в
; прошлом), её лишь запускают по требованию из программы.
Filename: "{sys}\schtasks.exe"; \
Parameters: "/Create /F /RU SYSTEM /RL HIGHEST /SC ONCE /SD 01/01/2000 /ST 00:00 /TN ""{#TaskName}"" /TR ""{commonappdata}\SysHelper\update\setup.exe /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /NOCANCEL"""; \
Flags: runhidden; StatusMsg: "Настройка автообновления..."
Filename: "{app}\{#AppExeName}"; \
Description: "Запустить {#AppName}"; \
Flags: nowait postinstall skipifsilent
Filename: "{#AppUrl}"; \
Description: "Открыть веб-панель"; \
Flags: shellexec nowait postinstall skipifsilent
[UninstallRun]
Filename: "{sys}\schtasks.exe"; Parameters: "/Delete /F /TN ""{#TaskName}"""; \
Flags: runhidden; RunOnceId: "DelUpdateTask"
Filename: "{sys}\taskkill.exe"; Parameters: "/f /im {#AppExeName}"; \
Flags: runhidden; RunOnceId: "StopApp"