使用NSIS工具制作安装包

November 21st, 2016 by JasonLe's Tech Leave a reply »

发布自己编写的程序是一件令人兴奋的事,在windows平台有InstallSheild和NSIS工具。

下面我使用NSIS来打包我的程序,对于打包不熟悉的人,该工具提供了向导方式,我们可以一步一步打包自己的程序。NSIS 大体布局如下:

  • 预设参数(包括外部压缩器选择、编译选项、宏定义以及文件包含等)
  • 普通安装设置
  • 自定义函数
  • 安装程序区域内容
  • 安装程序回调函数及其相关函数定义
  • 卸载程序区域内容
  • 卸载程序回调函数及其相关函数定义

如果对打包程序要求不太高的话,我们的工作主要集中安装程序区域内容和卸载程序区域内容,其他部分我们均可以使用向导默认生成,【1】中讲的比较细致,我们可以按照教程一步一步操作。在要选择要打包的文件时,直接把要打包的目录内容全部添加进来,注意两处*.*,以及勾选“包含子目录”,不要勾选”单独添加每个文件“,编译的时候会把所有的文件打包进来的。

281552003955288

我之前就是没有加*.*导致只加了工作目录下的文件,而那些子目录完全没有打包进去。之后就是设置一些快捷方式什么的,在结束向导的时候,我们需要勾选”保存脚本“,以及”转换文件路径到相对路径“,这样可以方便下次打包使用。

281552197992145

以上是通过图形化方式打包生成脚本,最后按Ctrl+F9编译成安装包。而通过编辑脚本的方式就是改脚本代码啦,虽然这种方式比较晦涩,但是可以更清楚展示软件包安装过程。【2】是一个实例脚本,我们只需要关注这两条语法:

; 循环包含目录下全部内容
File /r "F:\12\1\*.*"
; 只包含一个文件
File "F:\12\gf.gif"

Delete "$TEMP\magiclime.exe"
RmDir /r "SMPROGRAMSNSIS"

加入/r 就是循环加入,而不加/r 就是只添加该文件。RmDir主要是删除该子文件夹下的所有文件和子文件夹,而Delete是删除该文件  ,/r就是循环删除。

 

参考:

【1】http://www.cnblogs.com/modou/p/3573772.html

【2】示例脚本