前言
上个学期专门研究了如何高逼格的打包我自己开发的应用程序,起初是打算从单纯的压缩包改成可自解压的压缩包,但是这还是个压缩包,还是LOW。之后在网络上搜索了半天,发现了NSIS这个工具,这个很棒,使用脚本语言编译安装程序,当然这个不是最棒的,最棒的在于支持可视化的安装程序设计,自动生成代码。但是我高兴的太早,自动生成的代码有错,呵呵哒。但是经过一天的摸索,终于搞懂了它其中脚本语言的大致语法,修改了错误,并添加相应代码实现了桌面快捷方式和开始菜单快捷方式的创建。为了造福大家,也为了防止遗忘,特以此次上位机的程序打包为例,做此教程。
开始前准备
1.NSIS下载 http://pan.baidu.com/s/1hr5SS6o
2.安装NSIS
3.准备好你想打包的程序,最好把他们f放在一个文件夹里
运行NSIS,如图
打开后如图,运行可视化脚本编辑器
我们选择第二项,使用脚本向导创建新的脚本文件
显然,下一步
我写的程序是串口调试工具,所以就叫他SerialPort好了,第一版,就叫1.0好了,出版人,Fuermohao,后面两项就算了,网页你可以随意贴一个你的博客什么的吧,若是公司那就写你的公司域名,标志我就空着好了,你有兴趣自己添加。填好后如图
还等什么,下一步
安装程序图标,我找了个好看的,放到了桌面
安装包名字就叫Setup.exe吧,安装图形界面就选经典好了。安装程序语言,默认是简体中文,已经勾选,为了和国际接轨,我们再把英语勾选上吧(装逼要国际化)。
接着下一步,如图,设置安装界面的窗口颜色和闪屏属性的。
就我个人而言,简单点好,安装程序就不要太多特效了,闪屏看着没啥意思,背景音乐什么的容易被拉黑,这页直接下一步吧。
第一行默认就好,我们安装之前一般默认是C盘的Programfiles这个目录,下面的允许用户更改目录是默认勾选的。接下来的授权文件,装逼的时候又到了。在你桌面建一个TXT文档吧~怎么装逼怎么写。
我的授权文件即这个 1.txt ,选中它就好,下面的几个按钮你们随意选吧,看你喜好。下一步。 PS:千万别选古典按钮,有很大几率这个古典按钮会导致BUG,这个BUG会让你选择文件安装路径环节直接被跳过。
先把这个两个默认的实例路径删了。选中,点上面的 X。
新建一个路径。点文件上面那个A4纸的LOGO。
在选择目录的地方找到你要打包的文件夹。我的在桌面,叫SerialPort。然后需要注意的一点目的目录后面需要添加 通配符 "\*.*",然后下面的包含子目录需要勾选。
确定,然后下一步。
这步很关键。文件夹名称会被添加在开始菜单中,我是WIN10系统,添加好后会在这里建一个文件夹,如图360之类的
我们创建一个桌面快捷方式
我们选择DESKTOP,创建的快捷方式肯定是.exe文件的,所以要把路径写清楚。 目的需要改成"$INSTDIR\ASA_Serial_Port.exe"
接下来创建一个开始菜单的快捷方式,选择STARTMENU
确定,下一步
这一步,可略,有兴趣自己研究吧,篇幅有限,这里不再赘述。直接下一步。
卸载方式,我们改个图标就好了。
一切OK,确定即可。
点击完成,之后自动生成了脚本文件,并在编译器中打开。
看到上面的NSIS了吗,点击它,并选择 编译并运行 ,然后会提示你先保存文件,选个位置吧,我放在了桌面,这样最后打包好的安装包也在桌面。
如上,编译后后报错,但不用管,无伤大雅。现在看看桌面
安装包有了~试着装装看!
装完之后,你会发现 桌面并没有快捷方式。接下来,我们一起改改自动生成的代码。打开这个脚本文件。
我们看到 ------ MUI 现代界面定义结束 ------这一行之后,找到 Section -AdditionalIcons 这个模块
我们局部放大,当然我这是改好之后的。你可以发现有什么不同。
在你安装好之后,你应该会发现,在你的开始菜单的文件夹中会有一个卸载的图标。这个图标来源于
CreateDirectory "$SMPROGRAMS\SerialPort"
CreateShortCut "$SMPROGRAMS\SerialPort\Uninstall.lnk" "$INSTDIR\uninst.exe"
根据这些个英文单词的意思,很容易理解这个快捷方式的添加原理。我们需要先创建一个路径,用CreateDirectory来声明这个路径。这个路径是干嘛的呢,显然,是你的快捷方式要生成的父文件夹路径。比如,我们要在开始屏幕生成一个文件夹用来存放快捷方式,所以“$SMPROGRAMS”就代表STARTMENU的程序文件夹。之后,我们需要用CreateShortCut来声明创建的快捷方式源对象和快捷方式。当然,我们的exe在文件夹目录中,那么你安装的位置不同路径就会不一样,所以考虑到此,有一个相对路径和绝对路径的概念。而$INSTDIR就是一个相对路径的标识符,它指明了你程序当前所在的文件夹路径。我想,在此也不必过多赘述,之后怎么修改就看你的了,上面的截图也给出了示例。如果你真的弄明白了,你会发现我其中有行代码在做无用功。
那么,修改好代码之后,再次编译运行吧!这下,快捷方式就能成功的发到桌面了。
在此,你可能会问,为什么快捷方式直接创建不能成功?嗯,原谅我写教程就是喜欢先带你们入坑。首先笔者需要说明,整个教程也是我自己学习打包方法的一个认知过程,是在经验主义上总结出的。好了,开始回答你心中的疑惑。
我们在之上的那一步犯了一个错误,错误在于,我们只是添加了源对象的路径,并没有详细写出快捷方式的路径,起初我以为是自动生成,后来我仔细想了想才发现这里应该按代码那样把快捷方式那栏补全 "$DESKTOP\SerialPort.lnk"
以上,既是整个程序安装包打包流程。望采纳打赏。如果你在此教程中遇到异常的问题 可与我讨论。
在此留下我的邮箱:Fuermohao@outlook.com