[NSIS]NSIS——Qt程序发布工具
2016-03-16 20:51
691 查看
平台:Windows10家庭中文版 x64
环境:NSIS 2.50
参考资料:
1、《2.31.2 使用NSIS(Nullsoft Install System)》 —— http://book.51cto.com/art/201003/188297.htm
另外,NSIS有帮助手册,看一下就可以明白的,这个才是最好的参考资料。
写在开头
又重新用Qt写了一个测试软件,绕不开的Qt软件发布问题又遇上了。经历了上次花了很长的时间去编译静态库的问题后,现在这个电脑,没有编译过静态库。就尝试用动太库的方式来发布了,于是就重新来查看我以前写的少数几遍博文。没想到,竟然有些不太懂的地方,又花费了不少时间去打包和发布。因此,重新丰富一下这个工具的教程吧!
如此,作此文。
准备工作
1、首先,你还是得有个NSIS工具了。https://sourceforge.net/projects/nsis/
2、准备一个文件夹。还是准备一个文件夹吧!将所有你需要打包的东西,都放在这个文件夹下面。
3、将NSIS工具需要的文件,也放在上边的文件夹里。这里NSIS文件包含这几个文件:NSIS脚本文件(*.nsi)、发布声名文件(License.txt)、图片文件(*.bmp)。这些文件都是必需的,具体有什么做用,下文说明。
下面开始正文吧!
一、NSIS脚本文件(*.nsi)
NSIS是一款“按脚本文件配置”打包的工具。新装好的软件,自然无处找这个脚本文件了。下边推荐一个我自己用过几次了的脚本文件,只需要将以下的内容保存成*.nsi文件,然后根据注释修改对应的内容就好了。
主要修改部分:
1、需要打包的文件及文件夹。文件夹添加进去了就行,NSIS会自动包含文件夹下的文件,而不需要再特意添加一遍。
2、需要发布的软件文件名。这个名字需要与后面创建快捷方式,删除文件名等同步起来。不然创建快捷方式和卸载时,会出现创建失败或者删除不完的问题。
3、需要生成的发布软件文件名。
保存好后,该文件就是我们用来打包的脚本文件了。脚本中有提到两个文件,即是准备工作3中的后两个文件。
一个是License.txt文件,这个文件是用做软件发布声明的文件,是必需文件。所以我们也先找个样版。在NSIS安装目录“NSIS\Docs\NSISdl\”下有一个License.txt文件,拷贝过来后,根据相关意思改写一下内容即可,不改,当然也能用咯!
另一个是win.bmp文件。这个文件也是必需的,也可以在NSIS安装目录“NSIS\Contrib\Graphics\Header\”下而找到。就用其中的win.bmp文件最好,因为此图片有个尺寸的要求(150x570)。该图片用于生成发布软件后,安装过程中,软件上会有一张图片,如下红框示:
上图中绿色框中,即为License.txt声明文件中的内容。
二、运行脚本、生成发布软件
有了上面的准备工作,接下来的就是运行脚本文件来打包生成发布软件了。如下图示,打开NSIS,选择 “Compiler NSI scripts”:
弹出脚本编译窗口,打开脚本文件,如下图示:
脚本文件一旦调入,即立刻会进行脚本文件编译。如下图示:
图中大框为编译过程结果。一般情况下,编译总会遇上些错误,错误会提示出脚本文件多少行有问题,然后去对应修改相应行的内容就好了。不太难的,花点心思就好了。编译成功后,窗口标题栏上会出现“Finished Successfully”,即代表成功了,在文件夹下,会生产脚本配置好的输出文件。
这下,快去查看吧!
环境:NSIS 2.50
参考资料:
1、《2.31.2 使用NSIS(Nullsoft Install System)》 —— http://book.51cto.com/art/201003/188297.htm
另外,NSIS有帮助手册,看一下就可以明白的,这个才是最好的参考资料。
写在开头
又重新用Qt写了一个测试软件,绕不开的Qt软件发布问题又遇上了。经历了上次花了很长的时间去编译静态库的问题后,现在这个电脑,没有编译过静态库。就尝试用动太库的方式来发布了,于是就重新来查看我以前写的少数几遍博文。没想到,竟然有些不太懂的地方,又花费了不少时间去打包和发布。因此,重新丰富一下这个工具的教程吧!
如此,作此文。
准备工作
1、首先,你还是得有个NSIS工具了。https://sourceforge.net/projects/nsis/
2、准备一个文件夹。还是准备一个文件夹吧!将所有你需要打包的东西,都放在这个文件夹下面。
3、将NSIS工具需要的文件,也放在上边的文件夹里。这里NSIS文件包含这几个文件:NSIS脚本文件(*.nsi)、发布声名文件(License.txt)、图片文件(*.bmp)。这些文件都是必需的,具体有什么做用,下文说明。
下面开始正文吧!
一、NSIS脚本文件(*.nsi)
NSIS是一款“按脚本文件配置”打包的工具。新装好的软件,自然无处找这个脚本文件了。下边推荐一个我自己用过几次了的脚本文件,只需要将以下的内容保存成*.nsi文件,然后根据注释修改对应的内容就好了。
;NSIS Modern User Interface ;Header Bitmap Example Script ;Written by Joost Verburg ;-------------------------------- ;Include Modern UI !include "MUI2.nsh" ;-------------------------------- ;General ;Name and file Name "USBConfig" ---- 程序名,该名称需要与后面的相应内容一致,修改时不要忘了 OutFile "Setup.exe" ---- 生成的目标文件名 ;Default installation folder InstallDir "$PROGRAMFILES\USBConfig" ---- 安装的目标文件夹名称,这里要将前缀改成$ProgramFiles,不然会装到其它路经,不用担心64bit平台上目标目录的问题 ---- $PROGRAMFILES是NSIS的环境变量,会自动映射到C:\Program Files或64平台的C:\Program Files (x86)目录下 ;Get installation folder from registry if available InstallDirRegKey HKCU "Software\USBConfig" "" ---- 这里是安装注册表的目录,修改对应名称,若是不想要安装注册表内容,则注释掉这行,还以后对的应该删除行 ;Request application privileges for Windows Vista RequestExecutionLevel user ;-------------------------------- ;Interface Configuration !define MUI_HEADERIMAGE !define MUI_HEADERIMAGE_BITMAP "win.bmp" ; optional ---- 这里就用到了图片文件,是在生成的Setup.exe文件里的图标 !define MUI_ABORTWARNING ;-------------------------------- ;Pages !insertmacro MUI_PAGE_LICENSE "License.txt" ---- 这里就用到了License文件,我试过不用,但好像不行 !insertmacro MUI_PAGE_COMPONENTS !insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_UNPAGE_CONFIRM !insertmacro MUI_UNPAGE_INSTFILES ;-------------------------------- ;Languages !insertmacro MUI_LANGUAGE "SimpChinese" ---- 语言版本,没太研究,好像是控制安装程序安装过程中的显示语言为中文。一般不用处理 ;-------------------------------- ;Installer Sections Section "Application and Help(required)" SecDummy ---- 安装的第一部分内容,用Section来划分,这里的内容是程序的内容 SetOutPath "$INSTDIR" ;ADD YOUR OWN FILES HERE... File "USBConfig.exe" ---- 添加要打包进去的文件。这里不需要打包win.bmp,若是打包进去,安装后在安装目录下也会有win.bmp文件 File "License.txt" File "libusb0.dll" File /r "Driver" ---- 添加文件夹的方法,需要参数/r。文件夹添加好,文件夹下对应的文件则同时也会被添加进去 ;Store installation folder WriteRegStr HKCU "Software\USBConfig" "" $INSTDIR ---- 这里是控制安装注册表,不需要则注释掉 ;Create uninstaller WriteUninstaller "$INSTDIR\Uninstall.exe" ---- 这里是生成卸载程序 SectionEnd ;-------------------------------- ;Descriptions ;Language strings LangString DESC_SecDummy ${LANG_ENGLISH} "Application and Help(required)" ---- 这里是语言配置,没有太研究。一般不用处理 ;Assign language strings to sections !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN !insertmacro MUI_DESCRIPTION_TEXT ${SecDummy} $(DESC_SecDummy) !insertmacro MUI_FUNCTION_DESCRIPTION_END ;-------------------------------- ; Optional section (can be disabled by the user) Section "StartMenu ShortCuts" ---- 安装的第二部分,同样用Section来划分,这里的内容是添加“开始菜单”的菜单项 CreateDirectory "$SMPROGRAMS\USBConfig" ---- 开始菜单中安装的目录 CreateShortCut "$SMPROGRAMS\USBConfig\USBConfig.lnk" "$INSTDIR\USBConfig.exe" "" "$INSTDIR\USBConfig.exe" 0 ---- 目录中的快捷选项 CreateShortCut "$SMPROGRAMS\USBConfig\Uninstall.lnk" "$INSTDIR\Uninstall.exe" "" "$INSTDIR\Uninstall.exe" 0 SectionEnd ;-------------------------------- ; Optional section (can be disabled by the user) Section "Desktop ShortCuts" ---- 安装的第三部分,同样用Section来划分,这里的内容是添加“桌面”的快捷方式 CreateShortCut "$DESKTOP\USBConfig.lnk" "$INSTDIR\USBConfig.exe" "" "$INSTDIR\USBConfig.exe" 0 ---- DESKTOP为NSIS的环境变量,会映射到系统桌面 SectionEnd ;-------------------------------- ;Uninstaller Section Section "Uninstall" ---- 这里是控制卸载程序工作的内容 ;ADD YOUR OWN FILES HERE... Delete "$INSTDIR\Uninstall.exe" ---- 卸载时应该删除的文件,需要保留这一项 Delete "$INSTDIR\USBConfig.exe" Delete "$INSTDIR\License.txt" Delete "$INSTDIR\libusb0.dll" RMDir /r "$INSTDIR\Driver" ---- 卸载时应该删除的目录, /r参数是强制删除,不管其目录下是否有文件存在。删除文件夹时自动删除其下的文件 RMDir "$INSTDIR" Delete "$SMPROGRAMS\USBConfig\USBConfig.lnk" ---- 卸载时删除开始菜单中的快捷选项 Delete "$SMPROGRAMS\USBConfig\Uninstall.lnk" Delele "$DESKTOP\USBConfig.lnk" ---- 卸载时删除桌面快捷方式 RMDir "$SMPROGRAMS\USBConfig" ---- 卸载时删除开始菜单中的目录 DeleteRegKey /ifempty HKCU "Software\USBConfig" ---- 卸载时删除安装时安装的注册表内容,不需要时注释掉 SectionEnd
主要修改部分:
1、需要打包的文件及文件夹。文件夹添加进去了就行,NSIS会自动包含文件夹下的文件,而不需要再特意添加一遍。
2、需要发布的软件文件名。这个名字需要与后面创建快捷方式,删除文件名等同步起来。不然创建快捷方式和卸载时,会出现创建失败或者删除不完的问题。
3、需要生成的发布软件文件名。
保存好后,该文件就是我们用来打包的脚本文件了。脚本中有提到两个文件,即是准备工作3中的后两个文件。
一个是License.txt文件,这个文件是用做软件发布声明的文件,是必需文件。所以我们也先找个样版。在NSIS安装目录“NSIS\Docs\NSISdl\”下有一个License.txt文件,拷贝过来后,根据相关意思改写一下内容即可,不改,当然也能用咯!
另一个是win.bmp文件。这个文件也是必需的,也可以在NSIS安装目录“NSIS\Contrib\Graphics\Header\”下而找到。就用其中的win.bmp文件最好,因为此图片有个尺寸的要求(150x570)。该图片用于生成发布软件后,安装过程中,软件上会有一张图片,如下红框示:
上图中绿色框中,即为License.txt声明文件中的内容。
二、运行脚本、生成发布软件
有了上面的准备工作,接下来的就是运行脚本文件来打包生成发布软件了。如下图示,打开NSIS,选择 “Compiler NSI scripts”:
弹出脚本编译窗口,打开脚本文件,如下图示:
脚本文件一旦调入,即立刻会进行脚本文件编译。如下图示:
图中大框为编译过程结果。一般情况下,编译总会遇上些错误,错误会提示出脚本文件多少行有问题,然后去对应修改相应行的内容就好了。不太难的,花点心思就好了。编译成功后,窗口标题栏上会出现“Finished Successfully”,即代表成功了,在文件夹下,会生产脚本配置好的输出文件。
这下,快去查看吧!
相关文章推荐
- Java 版的 Ruby 解释器 JRuby 1.7.14 发布
- Fedora Linux 7 Test 4 发布 下载地址
- 使用npm发布Node.JS程序包教程
- 微软NET Framework 3.5 Beta 1 发布 提供下载
- 可简单避免的三个JS发布错误的详细介绍
- ASP.NE网站发布注意事项简析
- 批处理备份文件夹和文件后发布文件夹至网站
- 怎么发布打包并发布自己的Android应用(APP)
- PHP实现简单的新闻发布系统实例
- PHP 7.0.2 正式版发布
- JavaScript中发布/订阅模式的简单实例
- Python代码的打包与发布详解
- 有关Jfinal在jetty环境下开发,tomcat环境下发布造成的问题解决心得。
- Apache Spark 1.5.0正式发布
- ios 发布企业级应用部署解决方案
- 发布中文Qt程序时要注意的问题
- Qt 程序在 windows 下的发布
- 索尼发布PlayStation 4
- 分析师称苹果年内将发布60英寸电视
- 小米官方Twitter暗示米2即将在香港发布