Windows软件打包方法

NSIS脚本

NSIS(Nullsoft Scriptable Install System)的开源的Windows系统下的安装程序制作工具,它提供了安装、卸载、系统设置、文件压缩等等功能,通过NSIS脚本语言来涉及安装程序设计。

相关工具

基本语法
变量

nsi脚本用var来定义变量,使用$来进行引用,除了用户自定义的变量(全局)外,nsi脚本中定义了寄存器变量0~9,R0~R9用于参数传递,以及系统变量用于特定用途,这些变量主要有:

变量描述
$INSTDIR用户定义的解压路径
$PROGRAMFILES程序文件目录(通常为 C:\Program Files 但是运行时会检测)。
$COMMONFILES公用文件目录。这是应用程序共享组件的目录(通常为 C:\Program Files\Common Files 但是运行时会检测)。
$DESKTOPWindows 桌面目录(通常为 C:\windows\desktop 但是运行时会检测)。该常量的内容(所有用户或当前用户)取决于 SetShellVarContext 设置。默认为当前用户。
${NSISDIR}NSIS安装目录,编译时会检测到
$WINDIRWindows目录(通常为C:\windows,在运行时会检测)
$SYSDIRWindows 系统目录(通常为 C:\windows\system,在运行时会检测)
$TEMP系统临时目录(通常为 C:\windows\temp,运行时会检测)
$SMPROGRAMS开始菜单程序目录,使用CreateShortCut来创建快捷方式。该常量的内容(所有用户或当前用户)取决于 SetShellVarContext 设置。默认为当前用户。
$SENDTO该目录包含了“发送到”菜单快捷项。
$RECENT该目录包含了指向用户最近文档的快捷方式。
$FAVORITES该目录包含了指向用户网络收藏夹、文档等的快捷方式。这个常量的内容(所有用户或当前用户)取决于 SetShellVarContext 设置。默认为当前用户。
$MUSIC用户的音乐文件目录。这个常量的内容(所有用户或当前用户)取决于 SetShellVarContext 设置。默认为当前用户。
$PICTURES用户的图片目录。这个常量的内容(所有用户或当前用户)取决于 SetShellVarContext 设置。默认为当前用户。
$VIDEOS用户的视频文件目录。这个常量的内容(所有用户或当前用户)取决于 SetShellVarContext 设置。默认为当前用户。
$FONTS系统字体目录。
$TEMPLATES文档模板目录。这个常量的内容(所有用户或当前用户)取决于 SetShellVarContext 设置。默认为当前用户。
$APPDATA
$COOKIESInternet Explorer 的 Cookies 目录。
$HISTORYInternet Explorer 的历史记录目录。
$RESOURCES该资源目录保存了主题和其他 Windows 资源(通常为 C:\Windows\Resources 但在运行时会检测),Windows XP 及以上有效
常用命令
  • !include
    • 作用:包含头文件
    • !include "MUI.nsh"
  • !insertmacro
    • 作用:插入宏
    • !insertmacro MUI_PAGE_WELCOME
  • Goto
    • 作用:跳转到指定标记。[+-][1-9],加号表示从当前位置往前跳转,减号则表示从当前位置往后跳转。数字表示跳转的语句条数。
    • Goto +4 ;跳转以下4条语句 Goto -3 ; 跳转到前3条语句
  • File
    • 作用:释放文件到当前输出路径
    • 参数
      • /r 目录匹配的所有的内容进行递归添加,而且目录结构也会保持。
      • /x 排除文件或目录
      • /a 保持被添加的文件的属性
      • /nonfatal 当文件未找到使用警告来代替错误
    • File /r *.*
  • Delete
    • 作用:删除文件
    • Delete "$INSTDIR\uninst.exe"
  • RMDir
    • 作用:删除目录
    • RMDir "$INSTDIR"
  • Rename
    • 作用:文件重命名
  • CreateShortCut
    • 作用:创建快捷方式
    • CreateShortCut “DESKTOP\Test.lnk”“DESKTOP\Test.lnk”“INSTDIR\Test.exe” “” “$INSTDIR\Resources\Picture\Icon\ Test.ico”
  • CreateDirectory
    • 作用:递归创建目录。当目录不能创建时给出错误标记。
    • CreateDirectory "$SMPROGRAMS\Log Download"
  • StrCpy
    • 作用:复制字符串
    • StrCpy $0 "a bbbbbbbb" ;$0 = "a bbbbbbbb"
  • StrCmp
    • 作用:字符串比较,如果字符串1和字符串2相等则调转到第一个标记处,否则调转到第二个标记处。
    • StrCmp a b fun1 fun2
  • ReadRegDWORD
    • 作用:读取注册表信息
  • 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 阅读次序
      • MB_DEFBUTTON1 - 默认为按钮 1
      • MB_DEFBUTTON2 - 默认为按钮 2
      • MB_DEFBUTTON3 - 默认为按钮 3
      • MB_DEFBUTTON4 - 默认为按钮 4
脚本实现
修改Head图片
!define MUI_HEADERIMAGE
!define MUI_HEADERIMAGE_BITMAP "installheader.bmp"
修改界面左侧的图片信息
!define MUI_WELCOMEFINISHPAGE_BITMAP "installheader.bmp"
修改安装和卸载图标
!define MUI_ICON "${NSISDIR}\install.ico"
!define MUI_UNICON "${NSISDIR}\uninstall.ico"
创建快捷方式
  CreateShortCut "$SMPROGRAMS\Test\Test.lnk" "$INSTDIR\Test.exe"
  CreateShortCut "$DESKTOP\Test.lnk" "$INSTDIR\Test.exe"
设置安装界面语言
!insertmacro MUI_LANGUAGE "SimpChinese" ;简体中文
!insertmacro MUI_LANGUAGE "English"     ;英文
显示安装和卸载进度
ShowInstDetails show
ShowUnInstDetails show
显示消息框
Section "MainSection" SEC01
  SetOutPath "$INSTDIR"
  SetOverwrite ifnewer
  File /r *.*
  MessageBox MB_OKCANCEL "OK  | Cancel"
SectionEnd
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值