#pragma charset utf-8 ; DeepSeek Harness desktop client - online installer #define MyAppName "DeepSeek Harness" #define MyAppVersion "1.0.1" #define MyAppPublisher "VanuSystems" #define MyAppExeName "dsh-app.exe" [Setup] AppId={{B4E7A9C2-3F51-4D8A-9C6B-2E1A5F7D8E90} AppName={#MyAppName} AppVersion={#MyAppVersion} AppPublisher={#MyAppPublisher} DefaultDirName={localappdata}\DeepSeekHarness DisableProgramGroupPage=yes PrivilegesRequired=lowest OutputDir=output OutputBaseFilename=DeepSeekHarness-Setup Compression=lzma2 SolidCompression=yes WizardStyle=modern SetupIconFile=dsh.ico UninstallDisplayIcon={app}\dsh.ico UninstallDisplayName=DeepSeek Harness ArchitecturesAllowed=x64compatible ArchitecturesInstallIn64BitMode=x64compatible ChangesEnvironment=no [Languages] Name: "chinesesimplified"; MessagesFile: "ChineseSimplified.isl" Name: "english"; MessagesFile: "compiler:Default.isl" [Tasks] Name: "desktopicon"; Description: "创建桌面快捷方式"; GroupDescription: "附加任务:"; Flags: unchecked [Files] Source: "app\dsh-app.exe"; DestDir: "{app}\app"; Flags: ignoreversion Source: "app\Microsoft.Web.WebView2.Core.dll"; DestDir: "{app}\app"; Flags: ignoreversion Source: "app\Microsoft.Web.WebView2.WinForms.dll"; DestDir: "{app}\app"; Flags: ignoreversion Source: "app\WebView2Loader.dll"; DestDir: "{app}\app"; Flags: ignoreversion Source: "app\src\dsh-app.cs"; DestDir: "{app}\app\src"; Flags: ignoreversion Source: "app\src\app.manifest"; DestDir: "{app}\app\src"; Flags: ignoreversion Source: "dsh.ico"; DestDir: "{app}"; Flags: ignoreversion Source: "README.md"; DestDir: "{app}"; Flags: ignoreversion Source: "uninstall.vbs"; DestDir: "{app}"; Flags: ignoreversion Source: "register-uninstall.ps1"; DestDir: "{app}"; Flags: ignoreversion [Icons] Name: "{group}\{#MyAppName}"; Filename: "{app}\app\{#MyAppExeName}"; IconFilename: "{app}\dsh.ico" Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\app\{#MyAppExeName}"; IconFilename: "{app}\dsh.ico"; Tasks: desktopicon [Run] Filename: "{cmd}"; Parameters: "/c ""winget install --id OpenJS.NodeJS.LTS -e --accept-source-agreements --accept-package-agreements"""; StatusMsg: "正在安装 Node.js..."; Flags: runhidden waituntilterminated; Check: IsNodeMissing Filename: "{cmd}"; Parameters: "/c ""set PATH=%PATH%;C:\Program Files\nodejs;%APPDATA%\npm&& npm config set registry https://registry.npmmirror.com && npm install -g @deepseek-ai/dsh"""; StatusMsg: "正在安装 DeepSeek Harness 后端..."; Flags: runhidden waituntilterminated; Check: IsDshMissing Filename: "{app}\app\{#MyAppExeName}"; Description: "启动 {#MyAppName}"; Flags: nowait postinstall skipifsilent [UninstallRun] Filename: "taskkill"; Parameters: "/F /IM dsh-app.exe"; Flags: runhidden Filename: "taskkill"; Parameters: "/F /IM node.exe"; Flags: runhidden [Code] function IsNodeMissing: Boolean; begin Result := not FileExists(ExpandConstant('{pf64}\nodejs\node.exe')); end; function IsDshMissing: Boolean; begin Result := not FileExists(ExpandConstant('{userappdata}\npm\node_modules\@deepseek-ai\dsh\lib\bin.js')); end;