当前位置: 首页 > news >正文

【保姆级喂饭教程】Inno Setup下载安装、添加中文、打包、自动化教程

目录

  • 前言
  • 一、下载安装Inno Setup
  • 二、添加中文语言包
  • 三、打包应用
  • 四、测试
  • 五、自动化构建
    • 1. 获取版本号
    • 2. 移动Inno Setup脚本文件
    • 3. 修改生成后事件脚本
    • 4. 测试
  • 六、优化
    • 1. 打包名称
    • 2. 默认添加快捷方式
    • 3. 悬停版本号
    • 4. 卸载程序
    • 5. 自定义安装包压缩等级
  • 后记
  • 参考文献

前言

之前需要开发一个小工具,虽然大部分功能都已经实现,但由于要推广用户,为了防止用户一不小心删除可行性文件,决定将工具打包为安装包。
【AI总结】WinForms应用打包发布完全指南:从官方方案到第三方工具,一网打尽
【AI总结】【技术选型】 .NET Framework 打包指南:5种主流免费单EXE安装方案对比与推荐
最终选型为通过Inno Setup方式打包

一、下载安装Inno Setup

csdn下载链接:innosetup-6.7.1+简体中文

Inno Setup官网:https://jrsoftware.org/isdl.php

打开官网进行下载,目前最新是6.7.1,下面还有预览版的7.0,大家以后可以尝试

以前还好奇有些软件怎么都是这个图标,现在才知道他们都是inno setup打包的,双击打开

选择安装给所有用户

没有中文,默认英文,点击ok

点击同意,next

修改安装位置,点击next

默认创建开始菜单,不用管,next

把桌面快捷方式勾上,第二个是关联.iss格式文件,next

点击install

安装完成后点击finish,由于上面勾选了launch inno setup,默认会打开软件

打开软件如下,取消就好

二、添加中文语言包

为了使用方便,下载个汉化包,在之前的下载窗口点击Translations
Inno Setup语言包:https://jrsoftware.org/files/istrans/

往下在非官方中会找到简体中文语言包
点击作者名称会得到一个邮箱,发送邮件自动回复GitHub地址,大家可以直接点进去下载
https://github.com/kira-96/Inno-Setup-Chinese-Simplified-Translation
点击右边的版本号会直接打开汉化文本,可以复制到txt中然后改名为ChineseSimplified.isl,这里提供一个文本和汉化包链接
文本:Inno Setup 简体中文语言包文本 6.5.0+
csdn下载链接:Inno Setup 简体中文 6.5.0+

打开之前的安装目录下面的Languages文件夹,把下载到的语言包复制进去


三、打包应用

接下来开始演示一下打包应用程序,双击我们的Inno Setup图标

选择使用脚本引导创建一个脚本,
上面的选项是创建一个空脚本文件,自己写代码,适合熟练以后,
下面是选择之前的脚本文件,可以看到Inno Setup内置了一些示例脚本

如果不小心点了取消也没事,点击工具栏图标也可以,或者菜单栏File-New

点击next

填写应用程序的基础信息,分别是

  • Application name:应用名称(必填)
  • Application Version:应用版本号(必填)
  • Application publisher:应用发布者,可以填公司或组织名称(选填)
  • Application website:应用网址,可以填应用首页/下载页或者公司网址(选填)


这一步设置安装目录

  • Application destination base folder:默认安装目录为Program Files
  • Application folder name:应用文件夹名称,默认和之前的应用名称一样,不管名称中文英文,文件夹名称都推荐改成英文,避免一些兼容性的异常错误
  • Allow user to change the application folder:允许用户修改安装目录,默认允许
  • The application doesn’t need a folder:这个应用不需要文件夹,意思就是单文件应用,选了这个以后上面的设置就都失效了,一般别选


展示一下自定义安装路径,选择Custom后,第二行就可以填写路径了,等熟练以后或者有特殊需要再设置

接下来配置打包文件

  • Application main executable file:主exe文件,我们的应用入口,也就是之前在vs中生成的debug或者release下面的exe,正式肯定是使用release下面的
  • Allow user to start the application after Setup has finished:就是安装完后的那个启动程序选项
  • The application doesn’t have a main executable file:该应用没有主执行文件,一般用不到
  • Other application fles:一般来说我们生成后release里面还会生成一些配置文件或者dll(使用costura.fody可打包为一个exe),如果应用大一些还会有各种素材、配置、数据等文件,这些不会放到主exe里面,但是也需要打包
    • Add file(s):添加单个文件
    • Add folder:添加文件夹


这里提醒一下,添加文件夹后需要选择,会把子文件夹一起打包进去

设置关联文件,一般都没有,取消即可,下面两个空分别是文件类型名称和后缀名称

这里分别是设置开始菜单快捷方式和桌面快捷方式。开始菜单快捷方式默认是创建一个应用程序名称的文件夹,取消勾选后可以详细设置。

  • Allow user to change the Start Menu folder name:允许用户改变开始菜单文件夹名
  • Allow user to disable Start Menu folder creation:允许用户不创建开始菜单快捷方式
  • Create an Internet shortcut in the Start Menu folder:创建一个网页快捷方式在文件夹
  • Create an Uninstall shortcut in the Start Menu folder:创建卸载程序的快捷方式在文件夹


设置应用文档,暂且用不上

  • License file:许可证文件
  • Information file shown before installation:安装前显示的信息文件
  • Information file shown after installation:安装后显示的信息文件


设置安装模式,默认为管理员安装

  • Administrative install mode (install for all users):管理安装模式(为所有用户安装)
  • Non administrative install mode (install for current user only):非管理安装模式(仅限当前用户安装)
  • Allow user to override the install mode via the command line:允许用户通过命令行覆盖安装模式
  • Ask the user to choose the install mode at startup:在启动时询问用户选择安装模式


配置注册表,通过导入reg配置文件的方式,由于注册表可以在应用中设置,感觉这里没必要
下面的卸载时的设置可以根据需要调整,也可以在应用内处理

  • Delete keys which are empty on uninstall:卸载时删除空密钥
  • Also delete keys which are not empty:同时删除非空密钥
  • Delete values on uninstall:卸载时删除值
  • Create only if Windows’ version is at least:仅当Windows版本至少为时创建


设置安装引导语言,由于我们之前添加了中文语言包,这里把它勾上,next

终于到编译设置了

  • Custom compiler output folder:编译输出路径,推荐设置一个专门的输出路径,方便查看
  • Compiler output base file name:编译后安装包的文件名称
  • Custom Setup icon file:编译后安装包的图标,选择之前vs中使用的
  • Setup password:设置密码,没见过安装软件需要密码的


设置安装引导界面风格,切换了一下除了黑色模式其他都差别不大, 默认吧

默认使用#define compler指令来简化脚本,这样以后手动更改脚本容易些。

Finish~ over~

完成后可以看到脚本代码已经生成了,提示我们可以现在编译,点击是

编译之前提示我们保存脚本,保存到之前设置的输出路径里面

编译成功

输出文件夹如下


四、测试

简单测试下我们的安装包,双击打开
默认是中文,还可以

选择安装位置

桌面快捷方式没有默认勾选

安装

运行程序默认勾选

开始菜单效果

安装文件夹

测试下卸载,右键应用

跳转到这里了,还得右键

确认一下

卸载完成,看来后续还得完善一下卸载部分

注意:只有第一次安装可以修改目录,后续再次安装时就没有修改目录了,可以卸载后再次安装。


五、自动化构建

应用开发初期版本更新可能会很频繁,每次在vs中生成后再到Inno Setup中打包还是有点麻烦,好在我们可以把这个过程变成自动化的。
核心有两点,让Inno Setup脚本自动找到应用exe,让vs生成后自动调用脚本

1. 获取版本号

正常来说,vs生成后的正式exe就在release文件夹里,一般不做修改
如果是团队开发,可以考虑把Inno Setup脚本中的绝对路径换成相对路径,我这里不做修改
我之前添加了生成后事件脚本,用于生成带自增版本号的exe
【手把手实战教学】基于C#和.NET Framework的WinForms开发教程系列(5)版本自增
所以exe路径需要拼接版本号,同样打包后的文件也需要版本号,就要把版本号传递到Inno Setup脚本中

在脚本开头添加一个变量用于接收命令行参数,头部配置示例如下:

;如果未通过命令行传递版本号,则使用默认值#ifndefMyAppVersion#defineMyAppVersion"1.0.0.0"#endif#defineMyAppName"测试"#defineMyAppEngName"Test"#defineMyAppURL"https://test.com/"#defineMyAppExeNameMyAppName+"_"+MyAppVersion+".exe"

2. 移动Inno Setup脚本文件

既然是自动化了,就是只为这一个项目服务的打包脚本,当然需要移动到项目里来

在Inno Setup中把脚本另存为到项目根目录下,文件格式为.iss

3. 修改生成后事件脚本

在最后面加上调用 Inno Setup 自动打包,Inno Setup 编译器路径换成自己的安装位置。

::=====================调用 Inno Setup 自动打包=====================:: Inno Setup 编译器路径set"innoSetupPath=D:\Program\Work\Inno Setup 6\ISCC.exe":: Inno Setup 脚本文件路径set"issFile=$(ProjectDir)inno setup.iss":: 检查编译器是否存在ifexist"%innoSetupPath%"(echo正在使用 Inno Setup 打包安装程序... :: 传递当前版本号到 Inno Setup 脚本(脚本中需定义#ifndef MyAppVersion)"%innoSetupPath%""%issFile%"/DMyAppVersion=!version!iferrorlevel1(echoInno Setup 打包失败,请检查脚本。exit/b1))else(echo错误:未找到 Inno Setup 编译器,请确认路径正确。exit/b1)

为防止影响调试,可以加个判断,只有Release模式编译项目才会进行打包。加到最前面的声明后面即可。
示例代码如下:

::====================仅 Release 模式执行====================if/I not"$(ConfigurationName)"=="Release"(echo当前为非 Release 模式,跳过版本递增与打包。exit/b0)

4. 测试

检查是否在release模式

点击生成-生成解决方案

查看日志

六、优化

1. 打包名称

打包后的应用名称最好是用英文,否则部分系统特殊情况可能会出错,使用AutoUpdater.NET实现自动更新时必须用英文
可以用英文应用名作为输出文件名,不会影响我们的生成应用exe

OutputBaseFilename={#MyAppEngName}_{#MyAppVersion}

2. 默认添加快捷方式

安装完之后发现桌面没有快捷方式,需要删除[Tasks]中Name为desktopicon这一行最后的; Flags: unchecked

删除后的代码如下

Name:"desktopicon";Description:"{cm:CreateDesktopIcon}";GroupDescription:"{cm:AdditionalIcons}"

3. 悬停版本号

设置鼠标悬停在安装包上显示的版本号,在[Setup]中添加如下行

VersionInfoVersion={#MyAppVersion}

4. 卸载程序

Inno Setup自带卸载程序,前面第四部分测试已经测试过

5. 自定义安装包压缩等级

[Setup]区块的Compression表示生成安装包时的压缩等级,默认没有,默认值是lzma。

Compression=lzma

压缩等级可以填写以下值,从低到高如下

none(不压缩) zip zip/1到zip/9 bzip bzip/1到bzip/9 1zma 1zma/fast 1zma/normal 1zma/max 1zma/ultra 1zma/ultra64 1zma2 1zma2/fast 1zma2/ normal 1zma2/max 1zma2/ultra 1zma2/ultra64

压缩等级越高,生成的安装包越小,不过打包/安装时消耗的CPU和内存 也越高,大家根据实际情况选择。


后记

如果有更复杂的功能可以在最后面增加一个[Code]区块,在下面编写各种函数代码,比如安装前关闭进程,清除旧版本文件。
安装流程的各个步骤触发 Inno Setup 的内置回调函数CurStepChanged
等等


参考文献

InnoSetup使用指南
Inno Setup安装包制作教程(exe打包)
利用Inno Setup在VS编译时自动构建安装包


喜欢的点个关注吧><!祝你永无bug~

/* _ooOoo_ o8888888o 88" . "88 (| -_- |) O\ = /O ____/`---'\____ .' \\| |// `. / \\||| : |||// \ / _||||| -:- |||||- \ | | \\\ - /// | | | \_| ''\---/'' | | \ .-\__ `-` ___/-. / ___`. .' /--.--\ `. . __ ."" '< `.___\_<|>_/___.' >'"". | | : `- \`.;`\ _ /`;.`/ - ` : | | \ \ `-. \_ __\ /__ _/ .-` / / ======`-.____`-.___\_____/___.-`____.-'====== `=---=' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 佛祖保佑 永无BUG */
http://www.zskr.cn/news/1453245.html

相关文章:

  • 3PEAK思瑞浦 TP1561AUL1-CR SOT353 运算放大器
  • 积家中国官方售后服务中心|网点地址与电话权威信息公示(2026年6月最新) - 亨得利官方服务中心
  • 【保姆级教程】2026 开发者必看:手把手教你本地部署专属 Claude 工作流,打造超强私有化 AI 助手
  • PyQt5轻量首页模板:侧边导航悬停高亮 + 窗口自由拖拽关闭
  • Neo4j 5.25.1 Windows 便携版:含完整Java依赖、SSL证书与Cypher运行环境
  • 社会人工智能:从算法优化到社会价值的技术实践框架
  • 闲置宝玑宝珀想变现,石家庄本地靠谱名表回收机构盘点 - 合扬奢侈品交易中心
  • Steam成就管理终极指南:如何免费快速掌控你的游戏成就
  • 抖音下载神器:免费批量下载视频、直播回放与图集的终极指南
  • 题解:P10121 『STA - R4』保险丝
  • 5分钟搭建Python股票数据分析系统:MOOTDX让你轻松玩转通达信数据
  • 泰和县26年最新专业手表包包回收权威店铺推荐,TOP排行榜 - 莘州文化
  • Linux系统篇(一):从零入门操作系统:冯诺依曼体系到进程的完整理解
  • 如何用Scarab模组管理器一键解锁空洞骑士无限可能:完整指南
  • UE5项目上线前必做:如何安全清理GEngine调试消息,避免性能泄露与信息暴露
  • Java 程序员第 41 阶段03:企业智能问答机器人落地,搭建内部智能客服系统,多轮对话与意图识别实现
  • 万年县26年最新专业手表包包回收权威店铺推荐,TOP排行榜 - 莘州文化
  • WPF桌面端音频波形实时绘制工具(C# + NAudio,支持录音/播放/可视化)
  • pET-28a(+)里的‘隐形管家’:除了T7启动子,这些低调元件如何影响你的蛋白表达成败?
  • SynapseML:统一大规模机器学习工作流的开源库实战解析
  • 沈阳智能工厂申报服务机构排行 核心服务能力解析 - 互联网科技品牌测评
  • STM32开发效率翻倍!深度挖掘Keil5工具栏那些被你忽略的快捷键与隐藏功能
  • 2026年成都企业定制酱酒与茅台镇坤沙酒怎么选?盈贵人酒业深度横评与避坑指南 - 优质企业观察收录
  • 【MATLAB】基于MATLAB的BLE通信链路仿真与性能分析
  • 陈刚直言 | 工业 AI 做不成产品,不在 AI,而在泛化能力
  • 光伏电站的“空中巡检员”:无人机如何用AI读懂每一块光伏板?
  • 手机号逆向查询QQ号:技术解析与实践指南
  • 避坑指南:在Ubuntu 24.04上搞定Madagascar地震数据处理软件(附22.04差异点)
  • 新沂市26年最新专业手表包包回收权威店铺推荐,TOP排行榜 - 莘州文化
  • 论文精读:过去十年计算机视觉与深度学习在作物生长管理中的核心技术方法