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

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

相关推荐

  1. NSIS 安装windows 安装包括QTMFC

    2024-01-10 12:34:02       29 阅读
  2. docker安装(Linuxwindows

    2024-01-10 12:34:02       22 阅读
  3. windows qt sdk 安装

    2024-01-10 12:34:02       15 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-10 12:34:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-10 12:34:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-10 12:34:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-10 12:34:02       20 阅读

热门阅读

  1. 学习紫微斗数之感悟

    2024-01-10 12:34:02       32 阅读
  2. 5个你不能错过的在线教育开源项目

    2024-01-10 12:34:02       42 阅读
  3. Oracle 基本命令

    2024-01-10 12:34:02       36 阅读
  4. 2024.1.9

    2024-01-10 12:34:02       36 阅读
  5. Qt之字节数组类QByteArray

    2024-01-10 12:34:02       41 阅读
  6. 神经网络(Neural Networks)

    2024-01-10 12:34:02       42 阅读
  7. 控制台程序退出时触发事件

    2024-01-10 12:34:02       36 阅读
  8. Python使用函数统计指定数字的个数

    2024-01-10 12:34:02       28 阅读