ZBLOG

Inno Setup 封装winfrom exe程序

好的,使用 Inno Setup 封装 WinForms 的 .exe 程序是一个非常常见的场景。下面我将为您提供一个从零开始的、完整的详细指南。

第一步:准备工作

  1. 获取 Inno Setup

    • 官网下载并安装 Inno Setup。安装时建议勾选“安装预处理器”和“安装 ISTool(可视化脚本编辑器)”选项。
  2. 准备你的应用程序

    • 将你的 WinForms 项目在 Visual Studio 中编译为 Release 模式。
    • 找到生成的 bin\Releasebin\Release\netx.0 (对于 .NET Framework/Core) 文件夹。
    • 确保所有必要的文件都在这里:主程序 .exe、依赖的 .dll 文件、配置文件 (appsettings.json, *.config)、资源文件等。
    • 最佳实践:将所有需要打包的文件整理到一个单独的文件夹中(例如 MyAppPackage),这样在编写脚本时不容易出错。

第二步:使用 Inno Setup 编译器创建脚本

这是最简单的方法,特别适合新手。

  1. 打开 Inno Setup Compiler
  2. 点击菜单栏的 File > New…,这会启动一个脚本向导。
  3. 填写应用程序信息
    • Application Name: 你的程序名称 (e.g., “我的酷炫软件”)
    • Application Version: 版本号 (e.g., “1.0.0”)
    • Application Publisher: 你的公司或姓名 (可选)
    • Application Website: 你的网站 (可选)
  4. 选择应用程序目录
    • Application destination base directory: 通常保持默认的 {pf}(表示 Program Files)。
    • Application folder name: 在 Program Files 下创建的文件夹名。
  5. 指定应用程序文件
    • 点击 Add file(s)…,选择你的主程序 .exe
    • 点击 Add folder…,选择你准备好的包含所有依赖文件的文件夹。向导会自动递归添加所有文件和子文件夹。这是最省事的方法。
  6. 添加快捷方式
    • 向导会询问你是否要在开始菜单和桌面上创建快捷方式。通常都勾选上。你可以自定义开始菜单的文件夹名。
  7. 安装程序设置
    • Setup installer file name: 生成的安装包的名字 (e.g., Setup_MyCoolApp)。
    • Setup icon file: 可以为你的安装包指定一个自定义图标 (.ico)。
    • Setup password: 给安装包设置密码(很少用)。
  8. 编译设置
    • 保持默认即可。可以选择压缩方式以减小安装包体积。
  9. 点击 Next,然后 Finish。向导会生成一个 .iss 脚本文件并自动在编译器中打开。

第三步:审查和调整生成的脚本

向导生成的脚本已经很好了,但你通常需要微调一下。以下是一个典型生成脚本的解析和常见调整点:

; -- Example.iss --
; Inno Setup 脚本示例,用于安装 WinForms App

[Setup]
AppId={{YourAppID-GUID-Here} ; GUID很重要,是应用的唯一标识。卸载时会用到。
AppName=我的酷炫软件
AppVersion=1.0.0
AppPublisher=我的公司
DefaultDirName={autopf}\我的酷炫软件 ; {autopf} = Program Files (根据系统位数自动选择)
DefaultGroupName=我的酷炫软件       ; 开始菜单中的组名
OutputBaseFilename=Setup_MyCoolApp
Compression=lzma
SolidCompression=yes
;OutputDir=userdocs:Inno Setup Examples Output ;可以改为更简单的路径,如 OutputDir=D:\Output
;确保安装了.NET框架!对于WinForms至关重要!见下文说明。

[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"
Name: "chinese"; MessagesFile: "compiler:Languages\ChineseSimplified.isl" ;添加中文支持

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

[Files]
;这是核心部分,确保所有文件都被正确包含 Source: "D:\MyAppPackage\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs 
;关键参数解释:
;ignoreversion -即使文件版本比已存在的旧也覆盖它。
;recursesubdirs -包含源目录中的所有子目录。
;createallsubdirs -在目标目录中创建相同的子目录结构。


[Icons]
Name: "{group}\我的酷炫软件"; Filename: "{app}\MyWinFormsApp.exe"
Name: "{group}\{cm:UninstallProgram,我的酷炫软件}"; Filename: "{uninstallexe}"
Name: "{autodesktop}\我的酷炫软件"; Filename: "{app}\MyWinFormsApp.exe"; Tasks: desktopicon

[Run]
;可选:安装完成后运行程序 Filename: "{app}\MyWinFormsApp.exe"; Description: "{cm:LaunchProgram,我的酷炫软件}"; Flags: nowait postinstall skipifsilent

🔧 最重要的调整:检查 .NET Framework/.NET Desktop Runtime

如果你的 WinForms App是基于 .NET Framework (如4.7.2)或 .NET (Core)构建的,你必须确保目标电脑上安装了相应的运行时!

在你的 [Setup]段后面添加依赖检查:

  • 对于 .NET Framework:
[Setup] 
...其他设置... 

[Tasks] 
... 

[Files] 
... 

;*** .NET Framework检查 *** 
[Code] 
function InitializeSetup(): Boolean; 
begin 
  if not IsDotNetInstalled(net_version, '') then 
  begin 
    MsgBox('此软件需要 Microsoft .NET Framework ' + net_version + '。请先安装它后再运行本安装程序。', mbCriticalError, MB_OK); 
    Result := False; //中止安装 
  end 
  else 
    Result := True; //继续安装 
end;

你需要定义一个常量并在函数中使用它。将以下代码放在 [Code]段的最前面:

#IFDEF UNICODE 
  #DEFINE AW "W" 
#ELSE 
  #DEFINE AW "A" 
#ENDIF 

function IsDotNetInstalled(version: string; service: cardinal): boolean;  
// ... (这里需要很长一段Pascal代码来检测.NET)  
// ***强烈建议去Inno Setup官网Wiki搜索「dotnet」直接复制现成的检测函数代码***  
const  
  net462 = '4.6.2'; //定义你需要的版本号  

  • 对于 .NET (Core) Desktop Runtime:
    检查逻辑更复杂,通常需要检查注册表HKEY_LOCAL_MACHINE\SOFTWARE\dotnet\Setup\InstalledVersions\x64\sharedhost\Version或检查文件是否存在。网上有很多现成的Inno Setup代码片段可供参考。

第四步:编译并测试

  1. 在 Inno Setup Compiler中,按下 F9或点击工具栏上的编译按钮。
  2. 如果没有错误,编译器会在你指定的 OutputDir中生成一个 .exe安装文件。 3.至关重要的测试:
       *  在一台干净的、没有开发环境的Windows虚拟机或电脑上运行生成的安装包。
       *  测试安装过程是否顺利。
       *  测试安装后的程序能否正常启动和运行(点击开始菜单和桌面快捷方式)。
       *  测试控制面板中的“卸载程序”功能是否正常工作。

总结与最佳实践

步骤 关键动作 说明
1.准备 编译Release版,收集所有文件 确保.exe, .dll, config文件齐全
2.编写脚本 使用向导生成基础脚本 快速创建主框架
3.调整脚本 添加.NET依赖检查 最重要的一步,确保兼容性
完善文件列表([Files]) 使用通配符简化操作
自定义快捷方式和任务([Icons], [Tasks]) 提升用户体验
4.编译测试 在纯净系统中测试 最关键的一步,验证依赖和功能

通过以上步骤,你就可以专业地将你的 WinForms应用程序打包成一个用户友好的 Windows Installer了


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://sdn.0voice.com/?id=8377

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?