我们平常使用软件总是会接触到安装包。在Windows上安装包基本上就是一个单独的exe文件。不过我们如何自己去制作一个呢?方法其实有很多,你可以自己编程实现,也可以借助很多工具。
之前我喜欢把一些软件做成安装包自己方便用,或者是把自己开发的小工具打包成安装包。最先开始我用好压的自解压功能,但是很快无法忍受好压的流氓弹窗,就自己用C#做了一个简单的安装包制作工具,但是由于C#水平有限,开发的工具代码很乱难以继续维护,最终还是选择使用开源免费的Inno Setup作为安装包制作工具。
1,下载Inno Setup并添加中文语言文件
在官网下载最新的Inno Setup安装包并安装。
安装完成后,点击官网右侧的Translations
按钮,并往下翻找到Chinese (Simplified)
语言文件:
右侧Download处右键另存为,保存到Inno Setup安装目录中的Languages
目录中:
这样,我们就能做出中文的安装包了!
2,开始打包
今天就以打包自己写的一个程序为例:
打开Inno Setup主程序,新建一个:
弹出向导窗口:
点击Next,填写软件基本信息:
下一步,设定默认安装位置:
下一步,添加你要打包的文件。
先是指定你的程序主文件:
然后添加所有要打包文件,指定你的程序文件夹即可,将会加入文件夹内所有文件:
下一步,设定你的程序文件关联,我的程序没有文件关联,因此去掉这个勾:
下一步,设定快捷方式:
下一步,设定程序文档文件等等,我这里都没有,全部留空即可:
下一步,选择安装模式:
下一步,选择安装语言,选择简体中文:
下一步,设定安装包编译器设定,这里我们通常只需要定义一下安装包输出文件名以及安装包图标即可:
下一步,不用管:
下一步,点击Finish完成:
然后可见根据刚刚的设定生成了脚本,并提示是否立即编译脚本生成安装包,可以点是:
然后再点击是保存脚本:
自定义保存位置后,就开始编译了!等待下面输出成功字样说明安装包生成完毕!
在脚本保存位置有一个Output目录,里面就是生成的安装包,拿出来就可以用了!
3,继续定制安装包
上面已经制作了个简单的安装包,我们可以通过修改脚本内容,再定制一些功能。
脚本语法也很简单,可以看官方文档。
也可以打开软件的帮助,在上工具栏的Help
- Inno Setup Documentation
这里:
下面来讲一讲几个简单操作。
(1) 修改安装之后程序在应用列表的名字
安装包安装的程序我们也可以在设置-卸载程序中找到,并且Inno Setup制作安装包的时候就生成了卸载程序。
在[Setup]
区块找到AppVerName
这一项将其前面分号注释去掉,就可以修改等于号后面的值了!
注意,上面用花括号包围的是变量引用,这些变量是我们刚刚用向导生成好了的:
(2) 自定义安装包压缩等级
找到[Setup]
区块的Compression
项,可以通过修改其值改变生成安装包时的压缩等级,默认是lzma
。
压缩等级可以填写以下值,从低到高如下:
none
(不压缩)zip
zip/1
到zip/9
bzip
bzip/1
到bzip/9
lzma
lzma/fast
lzma/normal
lzma/max
lzma/ultra
lzma/ultra64
lzma2
lzma2/fast
lzma2/normal
lzma2/max
lzma2/ultra
lzma2/ultra64
压缩等级越高,生成的安装包越小,不过打包/安装时消耗的CPU和内存也越高,大家根据实际情况选择。
(3) 定义安装完成后执行
如果说我想要在应用安装完成之后执行一些操作或者命令,也可以在此自定义。
假如我这里是在打包程序文件夹中有一个addRightMenu.exe
的文件,可以通过命令行调用添加右键菜单。我需要在安装完成后执行命令addRightMenu.exe s
以调用该文件添加右键菜单。
就在[Run]
区块中添加以下条目:
Filename: "{app}\addRightMenu.exe"; Parameters: "s"; Description: "添加 ""在这里打开"" 右键菜单"; Flags: nowait postinstall
上述参数意义:
Filename
表示要运行的文件,{app}
是个变量代表安装目录Parameters
运行这个程序的参数,没有参数就不用写这一项Description
条目描述Flags
条目标志,常用上述标志:nowait
表示异步运行这个条目操作,[Run]
区块中有可以有多个条目,加上这个就表示不用等待该条目执行完就执行下一条目,如果该条目是最后一个,就表示不用等待该条目执行完就结束安装进程。若需要等待该条目运行完才能向下就不加上这个标志postinstall
加上这个标志后,该运行条目就会以复选框形式显示在安装程序完成界面,用户打勾才会运行该条目,不加上的话就不会显示,并且就一定会执行- 更多可以看官方文档
(4) 定义卸载完成之前执行
同样还是上述例子,安装完成后添加了右键菜单,那就要卸载之前移除右键菜单,我需要在卸载完成之前执行命令addRightMenu.exe d
移除右键菜单怎么做呢?
在末尾加上[UninstallRun]
区块并在其中添加条目即可,我的如下:
[UninstallRun]
Filename: "{app}\addRightMenu.exe"; Parameters: "d"
参数和上面[Run]
部分一样。
这里没有加nowait
的标志,因为我们最好等这个操作执行完再终止卸载程序,否则会出现卸载不干净的情况。
(5) 快捷方式运行参数
默认情况下快捷方式都是直接运行你的主程序不带参数,如果需要快捷方式带上参数运行,在快捷方式条目加上Parameters
即可,用法和上面[Run]
里面一样。
[Icons]
区块表示快捷方式:
编辑完脚本,就在Inno Setup里面直接重新编译一下即可:
如果觉得Inno Setup编辑器不好用,还可以在VSCode中搜索安装Inno Setup插件编辑其脚本,最后只用Inno Setup编译即可!