NSIS 安装windows 安装包(包括QT和MFC)

23 篇文章 2 订阅

NSIS(Nullsoft Scriptable Install System)是一个开源的 Windows 系统下安装程序制作程序。它提供了安装、卸载、系统设置、文件解压缩等功能。

基本概念

区段

是对应某种安装/卸载选项的处理逻辑,该段代码仅当用户选择相应的选项才被执行。卸载程序的区段名用"un."作为前缀。

/o表示该区段默认不选上,-表示隐藏区段(匿名区段也是隐藏区段),!表示需要粗体显示的区段。

Section "Installer Section"

SectionEnd  

Section "un.Uninstaller Section"

SectionEnd

函数

在nsi脚本中函数分为两种:用户自定义函数和回调函数。

用户自定义函数

Function <函数名>

 # some commands

FunctionEn

用户自定义函数仅当是Call指令调用时才被执行

回调函数

回调函数则是由在特定的时间点触发的程序段

安装逻辑定义以下回调函数

.onGUIInit、.onInit、.onInstFailed、.onInstSuccess、.onGUIEnd、.onMouseOverSection、.onRebootFailed、.onSelChange、.onUserAbort、.onVerifyInstDir

卸载逻辑回调函数

un.onGUIInit、un.onInit、un.onUninstFailed、un.onUninstSuccess、un.onGUIEnd、un.onRebootFailed、un.onUserAbort

变量

var关键字来定义变量,使用$来引用变量

$INSTDIR
用户定义的解压路径。
$PROGRAMFILES
程序文件目录(通常为 C:Program Files 但是运行时会检测)。

0- 9, R0 -R9

脚本中定义了寄存器变量0- 9, R0 -R9用于参数传递,以及系统变量用于特定用途使用这些参数应该通过PushPop的方式

$STARTMENU

开始菜单目录(常用于添加一个开始菜单项,使用 CreateShortCut)。该常量的内容(所有用户或当前用户)取决于SetShellVarContext 设置。默认为当前用户。

$SMPROGRAMS

开始菜单程序目录(当你想定位 $STARTMENU程序 时可以使用它)。该常量的内容(所有用户或当前用户)取决于SetShellVarContext 设置。默认为当前用户。

$SMSTARTUP

开始菜单程序/启动 目录。该常量的内容(所有用户或当前用户)取决于 SetShellVarContext 设置。默认为当前用户。

常用指令

File

作用:释放文件到当前输出路径。

如果使用了 /r 开关,匹配的文件将会在子目录里被递归的搜索。

将ProjectFiles目录下的所有文件释放到输出目。

SetOutPath "$INSTDIR"

SetOverwrite ifnewer

File /r "ProjectFiles*.*"

Delete

作用:从目标系统删除文件

Delete "$INSTDIR\uninst.exe"

RMDir

作用:删除目录

RMDir /r "$INSTDIR\*.*"

SetOutPath

作用:设置输出路径($OUTDIR)且当路径不存在时创建(需要时会递归创建)。必须为绝对路径名,通常都使用 $INSTDIR。

将用户定义的解压路径作为输出目录

SetOutPath $INSTDIR

CreateShortCut

作用:创建快捷文件.lnk 目标文件

CreateShortCut "$SMPROGRAMS\PSC_FS\Uninstall.lnk" "$INSTDIR\uninst.exe"

WriteRegStr、WriteRegExpandStr

作用:把字符串写入注册表

根键如下:

HKLM 或HKEY_LOCAL_MACHINE

HKCU 或HKEY_CURRENT_USER

  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"

  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"

ReadRegStr

作用:读取注册表信息

ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{8d5fdf81-7022-423f-bd8b-b513a1050ae1}" "BundleVersion"

DeleteRegKey

作用:删除一个注册表键。

DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"

Exec

作用:这应该算是常用的命令了,执行一个指定的程序并且立即继续安装,就是直接执行一个程序。

Exec "$INSTDIR\vc_redist.x86.exe  /q"   ;若不存在,执行静默安装  /q表示静默安装

ExecWait

作用:执行一个指定的程序并且等待运行处理结束。

Exec "$INSTDIR\vc_redist.x86.exe  /q"   ;若不存在,执行静默安装  /q表示静默安装

RegDLL

作用:载入指定的 DLL 并且调用 DllRegisterServer (或入口点名称,当指定之后)。其实就是注册或加载你要的插件

!insertmacro

作用:插入宏

通过宏插入欢迎页面

!insertmacro MUI_PAGE_WELCOME

StrCpy

作用:复制字符串

StrCpy $0 "a bbbbbbbb"

Push

作用:把一个字串压入堆栈,该字串可随后从堆栈里弹出。

Pop

作用:从堆栈里弹出一个字串到用户变量 $x。如果堆栈是空的,则会置一个错误标记。

Goto

作用:跳转到指定标记

IfErrors 

错误时跳转到标记 

IfErrors 0 VSRedistInstalled

MessageBox

作用:显示一个包含“消息框文本”的消息框。“消息框选项列表”必须为下面的一个或多个,多个使用 | 来隔开。

MB_OK - 显示 OK 按钮

MB_OKCANCEL - 显示 OK 和取消按钮

MB_ABORTRETRYIGNORE - 显示退出、重试、忽略按钮

MB_RETRYCANCEL - 显示重试和取消按钮

MB_YESNO - 显示是和否按钮

MB_YESNOCANCEL - 显示是、否、取消按钮

MB_ICONEXCLAMATION - 显示惊叹号图标

MB_ICONINFORMATION - 显示信息图标

MB_ICONQUESTION - 显示问号图标

MB_ICONSTOP - 显示终止图标

MB_TOPMOST - 使消息框在最前端显示

MB_SETFOREGROUND - 设置前景

MB_RIGHT - 右对齐文本

MB_RTLREADING - RTL 阅读次序

Function un.onInit

   Push $R3

   ClearErrors

   ReadRegStr $R3  ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "install"

   StrCmp $R3 "1"  uninstallfinish

   MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "您确实要完全移除 $(^Name) ,及其所有的组件?" \

   /SD IDYES \

   IDYES uninstallfinish \

   IDNO  Abortuninstall

Abortuninstall:

    Abort

uninstallfinish:

   pop $R3

 FunctionEnd

NSIS工具安装包下载

链接:https://pan.baidu.com/s/1ticaAl3T7kp4kJOwSTCxWA 
提取码:xn2n

具体制作安装包的过程参考:https://www.cnblogs.com/hi-gdl/p/12449912.html

  • 13
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
NSIS安装包制作教程 分为三个目录:基础,插件,脚本 NSIS System 插件 NSIS VPatch 3.1插件 NSIS InstallOptions 2 插件 NSIS Modern UI(新式用户界面)插件 NSIS的Modern UI插件 NSIS里特殊符号的表达方法 两组件互斥 NSIS 常用小问题合集 资源替换式的美化包制作方式代码 安装完毕后如何刷新文件关联 教你如何编程调用 NSIS 的插件 NSIS安装程序概要 实现 NSIS 自定义页面中的控件操作代码 如何使用NSIS实现多目录安装设置 如何用NSIS在加入注册表 用NSIS 制作自己的安装程序 bluewind 的 wmp9 nsis安装脚本 NSIS安装脚本简明教程 取得winamp的NSIS脚本的教程 迅雷5.7.3.389 AYU增强版的安装脚本 NSIS制作迅雷安装的脚本 迅雷5.7.2.371 DDR1.5版去广告版源代码说明 NSIS删除安装程序自身 帮助文件中关于静默安装的说明 NSIS实现静默安装的两种方法 nsis的附加任务代码 关于 NSIS 写入注册表的问题 少轻狂制作的Windows优化大师的安装脚本 aipc编写的nsis极点安装脚本 官方 NSIS 插件全集 全方位掌握NSIS的使用 NSIS语言里怎样安装一个.inf文件? 如果要关联某个文件给程序应该怎么做? 如何避免显示解压缩进度框? 关于检测操作系统的问题 在结束页面添加运行程序选项 NSIS的botton二选一如何实现? NSIS灵活应用用逻辑库 NSIS调用inf安装驱动后的卸载问题 NSIS的组件互斥代码 在NSIS中如何禁止一个组件组的父项的点击事件 关于打破 NSIS 的 8192 字节限制的更简单方法 NSIS 自定义页面结合组件选择安装 一个关于组件跟自定义页面的控制问题 如何把安装的卸载程序放到其他目录
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值