; Inno Setup 安装脚本（全局安装）
; 产物约定（统一放在 dist\niumasoftware 下）：
; - dist\niumasoftware\niumasoftware.exe        （主程序，PyInstaller onedir）
; - dist\niumasoftware\update_helper.exe        （更新助手，PyInstaller onefile）
;
; 安装时会创建一个“按需运行”的计划任务（最高权限）用于静默覆盖更新：
;   CleanDesktopOrganizer\Update
;
; 同时创建 ProgramData 目录并赋予 Users Modify 权限，主程序把下载与请求文件写进去：
;   {commonappdata}\CleanDesktopOrganizer\

[Setup]
AppName=牛马软件柜
; 由 build_installer.py 生成时注入（不要手改）
AppVersion={#AppVersion}
; 安装包自身图标
SetupIconFile=..\logo.ico
DefaultDirName={autopf}\牛马软件柜
DefaultGroupName=牛马软件柜
OutputBaseFilename=牛马软件柜安装包_{#AppVersion}
Compression=lzma2
SolidCompression=yes
PrivilegesRequired=admin
ArchitecturesAllowed=x64
ArchitecturesInstallIn64BitMode=x64
DisableProgramGroupPage=yes
UninstallDisplayIcon={app}\niumasoftware.exe

[Tasks]
Name: desktopicon; Description: "创建桌面快捷方式"; GroupDescription: "附加图标："; Flags: unchecked

[Dirs]
; ProgramData：给普通用户写入下载包与请求文件（更新计划任务读取）
Name: "{commonappdata}\CleanDesktopOrganizer"; Permissions: users-modify
Name: "{commonappdata}\CleanDesktopOrganizer\updates"; Permissions: users-modify

[Files]
; PyInstaller onedir：直接复制整个目录（包含 _internal、dll、资源等）
Source: "..\dist\niumasoftware\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; 更新助手：PyInstaller onefile 也输出到 dist\niumasoftware 目录
Source: "..\dist\niumasoftware\update_helper.exe"; DestDir: "{app}"; Flags: ignoreversion

[Icons]
Name: "{group}\牛马软件柜"; Filename: "{app}\niumasoftware.exe"; IconFilename: "{app}\niumasoftware.exe"
Name: "{autodesktop}\牛马软件柜"; Filename: "{app}\niumasoftware.exe"; Tasks: desktopicon; IconFilename: "{app}\niumasoftware.exe"

[Run]
Filename: "{app}\niumasoftware.exe"; Description: "运行 牛马软件柜"; Flags: nowait postinstall skipifsilent

[UninstallRun]
Filename: "{sys}\schtasks.exe"; Parameters: "/Delete /TN ""CleanDesktopOrganizer\Update"" /F"; Flags: runhidden

[Code]
procedure CreateUpdateTask();
var
  ResultCode: Integer;
  Cmd: string;
begin
  // 计划任务：以 SYSTEM 运行，按需触发（/SC ONDEMAND）
  // 注意：TR 不带参数，update_helper.exe 会读取 ProgramData 请求文件
  Cmd :=
    '/Create /F /TN "CleanDesktopOrganizer\Update" ' +
    '/RU "SYSTEM" /RL HIGHEST /SC ONDEMAND ' +
    '/TR "' + ExpandConstant('{app}\update_helper.exe') + '"';

  Exec(ExpandConstant('{sys}\schtasks.exe'), Cmd, '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
  if CurStep = ssPostInstall then
  begin
    CreateUpdateTask();
  end;
end;

