installer\nfarms.iss¶
源码路径:
installer\nfarms.iss· 129 行
; ============================================================================
; NFarms HUB 的 Windows 安装包(Inno Setup 6)
;
; 为什么是 Inno Setup,而不是 MSI / WiX / NSIS:
; * 这台机器没有 MSVC,winget 也坏了 —— WiX 那条路(.NET SDK + msbuild)走不通;
; * Inno 只要一个自包含的 ISCC.exe,脚本自己装到 .tools\inno,不进 PATH、不污染系统;
; * 免管理员:PrivilegesRequired=lowest 时默认装到
; %LOCALAPPDATA%\Programs\NFarms HUB,不碰 Program Files、不弹 UAC。
; (原版 C# 的安装包就卡在这儿 —— 没有管理员权限的用户装不上。)
;
; 不要用 Inno 的 IDE 直接编译这个文件:AppVersion / DistDir 这些变量是
; scripts\build-installer.ps1 通过 /D 传进来的,下面每个都有兜底默认值,
; 默认值只够本机调试用。
;
; 命令行等价物:
; ISCC.exe /Q /DAppVersion=0.1.0 /DDistDir=C:/.../dist /DOutDir=C:/.../dist-out ^
; installer\nfarms.iss
; ============================================================================
#ifndef AppVersion
#define AppVersion "0.1.0"
#endif
; 注意路径统一用**正斜杠**:Inno 预处理器把反斜杠当转义符,
; 传 "C:\Cy\..." 会被吃掉一部分,报的错还很难看懂。
#ifndef DistDir
#define DistDir "..\dist"
#endif
#ifndef RepoDir
#define RepoDir ".."
#endif
#ifndef OutDir
#define OutDir "..\dist-out"
#endif
; VersionInfoVersion 必须是**四段**数字(x.x.x.x)。Cargo.toml 里是 0.1.0,
; 直接塞进去 ISCC 会报 "Invalid version number"。构建脚本会补成 0.1.0.0。
#ifndef VerInfoVersion
#define VerInfoVersion "0.1.0.0"
#endif
; 0 = 只装程序本体(约 7 MB);1 = 连 llama.cpp / stable-diffusion.cpp 的运行库一起装。
; 模型权重**任何时候都不打包**:libs\model 有 28 GB,应该由程序自己按需下载。
#ifndef WithLibs
#define WithLibs "0"
#endif
[Setup]
; AppId 一旦发布就不要再改 —— Windows 靠它认「这是同一个程序的另一个版本」,
; 改了会变成两份并列的安装,卸载也各卸各的。{{ 是转义,最终值是一个左花括号。
AppId={{9C1B0C3A-7A2E-4B4C-9E0D-2F1A6C8B4D51}
AppName=NFarms HUB
AppVersion={#AppVersion}
AppVerName=NFarms HUB {#AppVersion}
AppPublisher=NFarms
AppPublisherURL=https://tools.nfarms.cn
AppSupportURL=https://tools.nfarms.cn
DefaultDirName={localappdata}\Programs\NFarms HUB
DefaultGroupName=NFarms HUB
DisableProgramGroupPage=yes
; 只要当前用户权限 —— 装到用户目录,不需要管理员
PrivilegesRequired=lowest
; 单文件安装包,内嵌 cab
OutputDir={#OutDir}
OutputBaseFilename=NFarms-HUB-Setup-{#AppVersion}
SetupIconFile={#DistDir}/nfarms.ico
UninstallDisplayIcon={app}/nfarms.ico
UninstallDisplayName=NFarms HUB
Compression=lzma2/max
SolidCompression=yes
WizardStyle=modern
; 64 位 Windows 10 及以上(egui/glow 走 OpenGL,Win10 起步最稳)
ArchitecturesAllowed=x64compatible
ArchitecturesInstallIn64BitMode=x64compatible
MinVersion=10.0
; 装的时候如果 nfarms.exe 正在跑,让重启管理器去关掉它,别直接报「文件被占用」
CloseApplications=yes
RestartApplications=no
AllowNoIcons=yes
; 留一份安装日志:%TEMP%\Setup Log *.txt —— 出问题时有据可查
SetupLogging=yes
; 版本号写进「应用和功能」列表
VersionInfoVersion={#VerInfoVersion}
VersionInfoDescription=NFarms HUB 安装程序
VersionInfoProductName=NFarms HUB
[Languages]
; 排在前面的就是默认语言
Name: "chinese"; MessagesFile: "compiler:Languages\ChineseSimplified.isl"
Name: "english"; MessagesFile: "compiler:Default.isl"
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"
[Dirs]
; 程序根目录约定(见 paths.rs):exe 就平铺在程序根,**没有 bin\ 也不上溯**。
; 这几个目录提前建好,免得起界面时才发现没地方写日志。
Name: "{app}\logs"
Name: "{app}\libs"
Name: "{app}\wiki"
Name: "{app}\logs\bak"
Name: "{app}\libs\live"
[Files]
Source: "{#DistDir}/nfarms.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#DistDir}/nfarms.ico"; DestDir: "{app}"; Flags: ignoreversion
; Harness 页的「下载缺失组件 / 下载缺失模型」会去调 <程序根>\libs\scripts\fetch-libs.ps1
Source: "{#DistDir}/libs/scripts/*.ps1"; DestDir: "{app}\libs\scripts"; Flags: ignoreversion
Source: "{#RepoDir}/README.md"; DestDir: "{app}"; Flags: ignoreversion skipifsourcedoesntexist
#if WithLibs == "1"
; 运行库:llama-server.exe / sd-cli.exe 这些。模型不在这里面。
Source: "{#DistDir}/libs/llama.cpp/*"; DestDir: "{app}\libs\llama.cpp"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "{#DistDir}/libs/stable-diffusion.cpp/*"; DestDir: "{app}\libs\stable-diffusion.cpp"; Flags: ignoreversion recursesubdirs createallsubdirs
#endif
[Icons]
Name: "{group}\NFarms HUB"; Filename: "{app}\nfarms.exe"; IconFilename: "{app}\nfarms.ico"
Name: "{group}\{cm:UninstallProgram,NFarms HUB}"; Filename: "{uninstallexe}"
Name: "{autodesktop}\NFarms HUB"; Filename: "{app}\nfarms.exe"; IconFilename: "{app}\nfarms.ico"; Tasks: desktopicon
[Run]
Filename: "{app}\nfarms.exe"; Description: "{cm:LaunchProgram,NFarms HUB}"; Flags: nowait postinstall skipifsilent
; 卸载时**故意不删** logs\ 和 wiki\:里面是用户自己的日志、settings.json 与知识库索引。
; 想彻底清干净就手动删 {app} —— 宁可留一点垃圾,也不要误删用户的设置。