NSIS打包软件,初步使用心得

时间:2024-04-07 08:09:10

最近开发的软件终于发布了一个正式的版本,之前一直都是用压缩包的方式发布,感觉有点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的小瑕疵吧。

1. Advanced Installer

Advanced Installer和Install shield比较类似。但是貌似,官方15.7的版本是没有中文界面的,但是创建项目的时候可以选择中文来开始向导。网上能搜到的中文版,都是**+汉化,不是很好用。我不知道**版是不是有bug,当我在项目中使用中文字符的时候,最终生成的exe安装包可以正常安装,但是无法卸载,会提示缺少什么组件,导致卸载失败。而且卸载必须要到控制面板里去找,没有自动在根目录下生成一个卸载程序(可能有设置,没找到)。

所以,收费的软件,**版能不用就不用,因为出了问题,你都不知道是软件本身的问题,还是**的问题,最终还是给自己添麻烦。

 

2. 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。如下图:

NSIS打包软件,初步使用心得

 

我当时就在想,什么鬼,安装包是用脚本写出来的,这是要我重新学一门语言吗?

还有这个把压缩包编译成exe,压缩包本来就有这个功能吧,搞笑吧。

后来,在网上看了一下其他人的NSIS使用,才知道,这是真正高手使用的,初学者还要下载另外一个程序,可以用向导的方式,生成脚本,再修改脚本就好。

 

 

二.下载HM NIS Edit 2.0.3

下载后,直接打开就能用,悄悄告诉你,写这个程序的人肯定很牛逼,因为2.0.3发布的时间是03/28/2005。十几年过去,这个程序,还可以完美运行,很吊。

编辑器默认是根据系统语言选择界面语言,所以一打开就是中文界面,很厉害。

首先,通过向导,完成一个简单安装包制作过程,后面再说高级一些的功能。

1.新建向导

NSIS打包软件,初步使用心得

NSIS打包软件,初步使用心得

2.后面就是填写相关配置,不说废话,直接图片

NSIS打包软件,初步使用心得

NSIS打包软件,初步使用心得

NSIS打包软件,初步使用心得

NSIS打包软件,初步使用心得

NSIS打包软件,初步使用心得

NSIS打包软件,初步使用心得

NSIS打包软件,初步使用心得

NSIS打包软件,初步使用心得

3.最后保存脚本,你就能看到最终由向导生成的脚本了。脚本里面包含了所有,你刚才做的配置,然后在这里继续微调,做最后的准备。

NSIS打包软件,初步使用心得

 

然后编译,运行

NSIS打包软件,初步使用心得

 

到这里,你的第一个安装包,编译后,就可以在输出路径找到安装包。

一些常见的问题:

1.无法编译,报错:

因为NSIS complier和NIS editor是两个程序,分开装的,如果不是安装在同一个路径下,eidtor找不到complier就会报错。只要装在同一个路径下,就没问题,如图:

NSIS打包软件,初步使用心得

但是,如果就是在不同的路径,也关系,editor中可以设置compiler的路径,如图:

NSIS打包软件,初步使用心得

重新修改编译器的路径即可。

高级功能(部分):

我之前提到过,有些安装包需要的功能,在功能向导中,是没有提供的,这就需要我们来修改脚本了。当然,对于我自己的项目而言,我只是探索了我所需要的功能。

 

$INSTDIR是程序的最终安装目录

 

1.创建目录快捷方式


Section "客户端" SEC01
...
...
...
...
   CreateShortCut "$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 "$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做安装包,就结束了,希望这篇文章能给大家提供一些帮助。