Inno Setup 是一个功能强大且免费的 Windows 安装程序制作工具。它由 Jordan Russell 开发,并以开放源码的方式提供,为开发者提供了高效、灵活的解决方案来包装和分发 Windows 应用程序。
下载地址如下:https://jrsoftware.org/isdl.php#stable
下载中文语言配置:
将该文件放在程序安装目录中language 文件夹中

脚本内容
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
#define MyAppName "软件名称"
#define MyAppVersion "1.3.0" ;app版本
#define FileVersion "1.3.0.1" ;安装包版本
#define MyAppPublisher "技术有限公司"
#define MyAppURL "https://u1timate.cc/"
#define MyAppExeName "run.exe"
[Setup]
; NOTE: The value of AppId uniquely identifies this application. Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{5F93EBB8-C6A9-4283-A649-1078C87B57D6}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={userappdata}\JJZeroTrust ;默认安装路径
DisableProgramGroupPage=yes
LicenseFile=C:\Users\u1timate\Desktop\programe\License.rtf
; Uncomment the following line to run in non administrative install mode (install for current user only.)
;PrivilegesRequired=lowest
OutputDir=C:\Users\u1timate\Desktop\programe ;安装包输出文件夹
OutputBaseFilename=软件名称
SetupIconFile=C:\Users\u1timate\Desktop\programe\webroot\favicon.ico ;安装程序图标
Compression=zip
SolidCompression=yes
WizardStyle=modern
VersionInfoVersion={#FileVersion}
[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"
Name: "chinesesimplified"; MessagesFile: "compiler:Languages\ChineseSimplified.isl"
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}";
[Files]
Source: "C:\Users\u1timate\Desktop\programe\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\u1timate\Desktop\programe\Browser\*"; DestDir: "{app}\Browser"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "C:\Users\u1timate\Desktop\programe\config\*"; DestDir: "{app}\config"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "C:\Users\u1timate\Desktop\programe\cert\*"; DestDir: "{app}\cert"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "C:\Users\u1timate\Desktop\programet\extension\*"; DestDir: "{app}\extension"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "C:\Users\u1timate\Desktop\programelog\*"; DestDir: "{app}\log"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "C:\Users\u1timate\Desktop\programe\webroot\*"; DestDir: "{app}\webroot"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "C:\Users\u1timate\Desktop\programe\upgrade.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\u1timate\Desktop\programe\License.rtf"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\u1timate\Desktop\programet\wintun.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\u1timate\Desktop\programe\run.exe"; DestDir: "{app}"; Flags: ignoreversion
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
[Icons]
Name: "{autoprograms}\{#MyAppName}"; Filename:"{app}\{#MyAppExeName}"; IconFilename: "{app}\webroot\favicon.ico";
Name: "{autodesktop}\{#MyAppName}";Filename:"{app}\{#MyAppExeName}"; IconFilename: "{app}\webroot\favicon.ico"; Tasks: desktopicon
[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
[Code]
procedure InitializeWizard;
begin
// 设置LicenseFile的默认选择为"I accept the agreement"
WizardForm.LicenseAcceptedRadio.Checked := True;
end;
[UninstallDelete]
// 删除安装目录下的所有文件和目录
Type: filesandordirs; Name: "{app}\Browser\*";
Type: filesandordirs; Name: "{app}\cert\*";
Type: filesandordirs; Name: "{app}\config\*";
Type: filesandordirs; Name: "{app}\extension\*";
Type: filesandordirs; Name: "{app}\log\*";
Type: filesandordirs; Name: "{app}\webroot\*";
Type: filesandordirs; Name: "{app}\run.exe";
Type: filesandordirs; Name: "{app}\UserData";
Type: filesandordirs; Name: "{app}\upgrade.exe";
Type: filesandordirs; Name: "{app}\wintun.dll";
运行界面
软件签名
使用openssl基于证书和私钥生成签名文件
openssl pkcs12 -export -out windows/sign.pfx -inkey ca.key -in ca.crt 密码: 123456
windows上执行程序签名
"C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x64\signtool.exe" sign /f sign.pfx /p sec!!!@@@ /fd SHA256 /d "程序名称" "run.exe"SignTool 是 Windows 软件开发工具包 (SDK) 的一部分。该工具安装在 Windows SDK 安装路径的 \Bin 文件夹中,例如:C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x64\signtool.exe。 https://developer.microsoft.com/windows/downloads/windows-sdk