使用NSIS打包程序安装包
我使用的NSIS 软件是V3.08 简体中文增强版,下载安装是按照 水晶石 的文章教程操作的
(原文链接:https://www.cnblogs.com/NSIS/p/16581122.html )。
打包步骤:
1、打开NSIS菜单,选择“VNsiedit(编译器环境)”
然后会打开下图窗口
2、新建安装向导:选择左上角“文件”-“新建脚本:向导”
(熟悉NSIS脚本编写的话可以选择其他的方式进行新建脚本)
然后会弹出下图脚本向导窗口,按照步骤一步步来就可以编写好一个基本的脚本文件了。
具体操作步骤如下:
(1)填写应用程序信息,包括程序名称、版本号、出版人信息、出版人或公司网站、程序标志(可以默认不用改)
(2)指定安装程序选项,包括安装程序logo、安装程序名称、语言(默认选择“简体中文”)、图形界面和压缩算法。
图形 界面和压缩算法可以参考其他资料介绍进行修改,一般默认选择即可。
(3)设置快闪屏幕和背景窗口
这一步可以直接跳过,这部分是修改安装时背景可视效果。
(4)设置应用程序的目录与授权信息
默认目录一般无须修改,如果没有授权文件,需要将红色部分内容清空,再进行下一步操作
(5)指定应用程序文件
下图左侧1部分是展示安装组件;
2部分可以对选中组件的文件进行编辑,可以新建单个文件或文件夹、更改和删除文件;
3部分是展示选中组件已添加的文件列表;
4部分是在多个可选安装组件情况下,是否允许用户自行选择安装组件,如果只有一个组件,不用勾选;
5部分是对组件的描述,方便用户了解程序信息;
6部分可以新建组件、更改组件名称和删除组件;
(6)设置应用程序图标
在红框部分,一定要有您添加的程序快捷方式,才算添加应用程序文件成功,一般会有两个快捷方式,一个是安装目录下的快捷方式,一个是桌面快捷方式
(7)指定安装程序之后运行
默认选择即可,在安装完成后会提示是否运行程序
(8)指定卸载程序属性
这一步是设置卸载程序向导的信息,一般只需要修改程序图标即可,其他可以默认
(9)完成安装向导
勾选前两个即可,先将脚本保存,然后再根据需求编辑脚本
(10)编辑脚本
常用的脚本设置设置
所有 Function 区段必须放置在 Section 区段之后编写
- 有两个组件需要安装,并且允许用户自行选择安装第二个组件时
Function .onInstSuccess
SectionGetFlags ${SEC02} $0 # 检测 SEC1 的选择状态,1为已勾选该组件
IntOp $0 $0 & ${SF_selectED} # 只过滤勾选的状态,Checkbox 的状态可能包含多位
IntCmp $0 ${SF_selectED} showpage hidepage hidepage
showpage:
Execwait '"$INSTDIR\xxxx.exe" /q'
hidepage:
FunctionEnd
- 安装前检查是否已安装该程序
Function .onInit
ClearErrors
ReadRegStr $UNINSTALL_PROG ${PRODUCT_UNINST_ROOT_KEY} ${PRODUCT_UNINST_KEY} "UninstallString"
IfErrors done
ReadRegStr $OLD_VER ${PRODUCT_UNINST_ROOT_KEY} ${PRODUCT_UNINST_KEY} "DisplayVersion"
MessageBox MB_YESNOCANCEL|MB_ICONQUESTION \
"检测到本机已经安装了 ${PRODUCT_NAME} 。\
$\n$\n是否先卸载已安装的版本?" \
/SD IDYES \
IDYES uninstall \
IDNO done
Abort
uninstall:
StrCpy $OLD_PATH $UNINSTALL_PROG -10
ExecWait '"$UNINSTALL_PROG" /S _?=$OLD_PATH' $0
DetailPrint "uninst.exe returned $0"
Delete "$UNINSTALL_PROG"
RMDir $OLD_PATH
done:
FunctionEnd
- 设置开机自启
这是将程序的快捷方式添加到开机启动的注册表中,要注意在卸载程序部分添加删除注册表信息。
添加开机自启(在安装完成可选择是否设置开机自启动)
以下这段放在“; MUI 预定义常量”后面,“开机自启动”是选择项的名称
; 开机自启动
!define MUI_FINISHPAGE_SHOWREADME
!define MUI_FINISHPAGE_SHOWREADME_Function AutoBoot
!define MUI_FINISHPAGE_SHOWREADME_TEXT "开机自启动"
下面这段放置在 Section 区段之后
Function AutoBoot
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Run" "程序名"'"$DESKTOP\程序名.lnk"'
FunctionEnd
删除开机自启
添加到“Section Uninstall”部分中
DeleteRegKey HKCU "Software\Microsoft\Windows\CurrentVersion\Run\xxx"