最近开发的软件终于发布了一个正式的版本,之前一直都是用压缩包的方式发布,感觉有点low,而且要手动生成快捷方式或者注册dll,都要手动搞,有点麻烦,所以想尝试使用打包软件,做一个相对好看且实用的安装包,一次性解决所有问题。
我尝试几个打包软件,大概分为两类:
直接通过打包软件本身,只要调整相应的设置,最终能打包成exe。比如说Advanced Installer、install shield和一些国产的软件(没去详细研究)
通过简单的向导调整响应的设置,生成脚本,最终通过脚本的编译,生成exe安装包
我主要是研究了一下Advanced Installer,Inno Step, NSIS Step三个不同的打包软件,最终决定使用NSIS Step。
首先,这三个软件都能实现打包,并且生成快捷方式和注册dll(废话,这种功能都是标配),但是Advanced Installer和Inno Step有点小瑕疵。
先说说Advanced Installer和Inno Step的小瑕疵吧。
- Advanced Installer
Advanced Installer和Install shield比较类似。但是貌似,官方15.7的版本是没有中文界面的,但是创建项目的时候可以选择中文来开始向导。网上能搜到的中文版,都是破解+汉化,不是很好用。我不知道破解版是不是有bug,当我在项目中使用中文字符的时候,最终生成的exe安装包可以正常安装,但是无法卸载,会提示缺少什么组件,导致卸载失败。而且卸载必须要到控制面板里去找,没有自动在根目录下生成一个卸载程序(可能有设置,没找到)。
所以,收费的软件,破解版能不用就不用,因为出了问题,你都不知道是软件本身的问题,还是破解的问题,最终还是给自己添麻烦。
- Inno Step
和NSIS很类似,都是通过脚本编译成exe。但是语言包是个问题,官方5.6.1的版本,是没有自带中文语言包的,需要手动添加,但是添加后,生成的exe中,中文字符还是乱码。我简单尝试了一下,就放弃了。
最终这些小瑕疵导致我没有再去深入了解Advanced Installer和Inno Step,最终选择NSIS。
NSIS
一.下载NSIS(Nullsoft Scriptable Install System)
NSIS 是通过它的脚本语言来描述安装程序的行为和逻辑的,是一个开源的Windows 系统下安装程序制作程序
直接百度或者Google就有了,我用的是3.04版本。
刚开始测试NSIS的时候,有点懵,就两个功能,一个直接写脚本,另一个是把压缩包编译成exe。如下图:
我当时就在想,什么鬼,安装包是用脚本写出来的,这是要我重新学一门语言吗?
还有这个把压缩包编译成exe,压缩包本来就有这个功能吧,搞笑吧。
后来,在网上看了一下其他人的NSIS使用,才知道,这是真正高手使用的,初学者还要下载另外一个程序,可以用向导的方式,生成脚本,再修改脚本就好。
二.下载HM NIS Edit 2.0.3
下载后,直接打开就能用,悄悄告诉你,写这个程序的人肯定很牛逼,因为2.0.3发布的时间是03/28/2005。十几年过去,这个程序,还可以完美运行,很吊。
编辑器默认是根据系统语言选择界面语言,所以一打开就是中文界面,很厉害。
首先,通过向导,完成一个简单安装包制作过程,后面再说高级一些的功能。
1.新建向导
2.后面就是填写相关配置,不说废话,直接图片
3.最后保存脚本,你就能看到最终由向导生成的脚本了。脚本里面包含了所有,你刚才做的配置,然后在这里继续微调,做最后的准备。
然后编译,运行
到这里,你的第一个安装包,编译后,就可以在输出路径找到安装包。
一些常见的问题:
1.无法编译,报错:
因为NSIS complier和NIS editor是两个程序,分开装的,如果不是安装在同一个路径下,eidtor找不到complier就会报错。只要装在同一个路径下,就没问题,如图:
但是,如果就是在不同的路径,也关系,editor中可以设置compiler的路径,如图:
重新修改编译器的路径即可。
高级功能(部分):
我之前提到过,有些安装包需要的功能,在功能向导中,是没有提供的,这就需要我们来修改脚本了。当然,对于我自己的项目而言,我只是探索了我所需要的功能。
$INSTDIR是程序的最终安装目录
1.创建目录快捷方式
Section “客户端” SEC01
…
…
…
…
CreateShortCut “KaTeX parse error: Undefined control sequence: \固 at position 8: DESKTOP\̲固̲定扫描器图片.lnk" "INSTDIR\server\phpweb\Synchronization\fsb\images”
SectionEnd
或者防盗Section -AdditionalIcons中,都一样,注意的是,要放在最后,首先你要有这个文件夹,才能创建快捷
2.安装时,自动注册DLL
位置也是跟上面以一样
RegDLL “$INSTDIR\client\lib\xxx.dll”
3.卸载时,自动卸载DLL
Section Uninstall
…
…
…
…
UnRegDLL “$INSTDIR\client\lib\xxx.dll”
SectionEnd
4.注册表注册信息(没怎么用到),就是用了默认的注册信息
5.普通创建快捷
CreateShortCut “KaTeX parse error: Undefined control sequence: \客 at position 8: DESKTOP\̲客̲户端.lnk" "INSTDIR\client\XXX.exe”
6.删除文件
我测试的时候,发现部分文件夹没有删除掉,原因是自动生成的脚本,有些删除代码没有自动生成,所以要手动写
Delete “$INSTDIR\client\lib”
例如,如果【安装目录\client】中的lib文件夹没有删除掉,那么就在Section Uninstall,中最后的位置,添加上面的语句,就可以删除了。
总结
NSIS功能非常强大,可以实现你见过的大部分安装包的界面样式和功能,你可以在
D:\Program Files (x86)\NSIS\Examples
我是装在D盘的,Examples里面有各种各样的安装包。你可以参考脚本,实现自己想要的安装包。
其中有什么轮播图啊,背景动画啊,背景音乐啊,各种花里胡哨的东西,挺有意思的。
到此为止,这次尝试NSIS做安装包,就结束了,希望这篇文章能给大家提供一些帮助。
————————————————
版权声明:本文为CSDN博主「故长楚」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/guchangchu/article/details/88427735