当前位置: 首页 > 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.jsqmd.com/news/941822/

相关文章:

  • 3PEAK思瑞浦 TP1561AUL1-CR SOT353 运算放大器
  • 现代汽车成数据收集“大户”,如何阻止个人数据外流?
  • 云端科研第一性原理:从可重复性到成本优化的实践框架
  • 积家中国官方售后服务中心|网点地址与电话权威信息公示(2026年6月最新) - 亨得利官方服务中心
  • Spark新手避坑指南:用Scala 2.12和Spark 3.0搞定订单支付金额Top 5分析
  • CANN分组HiFloat8量化矩阵乘
  • 2026年洛阳婚礼堂全案设计与宴会厅改造一站式落地完全指南 - 优质企业观察收录
  • 微信里投票怎么做的?微信投票活动制作教程|火星投票2026最新版|附操作步骤 - 微信投票小程序
  • WorkshopDL终极指南:轻松获取Steam创意工坊模组的完整解决方案
  • ComfyUI-Manager终极指南:如何批量卸载自定义节点并彻底清理依赖
  • 【保姆级教程】2026 开发者必看:手把手教你本地部署专属 Claude 工作流,打造超强私有化 AI 助手
  • 如何快速提升OneNote效率:终极插件完全指南
  • 【无锡市黄金白银回收城区连锁门店精选】 - 余生黄金回收
  • Video2X 6.0.0完整指南:用AI技术让你的视频瞬间焕发新生
  • Neo4j 5.25.1 Windows 便携版:含完整Java依赖、SSL证书与Cypher运行环境
  • 闲置宝玑宝珀想变现,石家庄本地靠谱名表回收机构盘点 - 合扬奢侈品交易中心
  • 减速机厂家选购指南:如何选择靠谱的减速机厂家 - 资讯纵览
  • 聚焦旧房焕新赛道|2026 珠海家先生装饰专项测评,装配式翻新 + 本土防潮双优势 - 起跑123
  • 社会人工智能:从算法优化到社会价值的技术实践框架
  • Steam成就管理终极指南:如何免费快速掌控你的游戏成就
  • 《Agent Skills橙皮书:给AI装技能的完全指南》读书摘记
  • PyQt5轻量首页模板:侧边导航悬停高亮 + 窗口自由拖拽关闭
  • 【Java框架】知识点汇总Day2:MyBatis(含集合基础)(持续更新)
  • 3PEAK思瑞浦 TP1564AL1-TR TSSOP14 运算放大器
  • 深圳翡翠回收:2026年实地走访,行家甄选,六大机构各有专长 - 薛定谔的梨花猫
  • 抖音下载神器:免费批量下载视频、直播回放与图集的终极指南
  • Git 分支merge合并常用步骤与命令操作
  • 5分钟搭建Python股票数据分析系统:MOOTDX让你轻松玩转通达信数据
  • 匠选:变压器吊装公司推荐榜 - 品牌推广大师
  • 题解:P10121 『STA - R4』保险丝