Windows软件打包方法

来源:互联网 发布:过期备案域名查询 编辑:程序博客网 时间:2024/06/07 17:52

NSIS脚本

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

  • NSIS 打包脚本基础
  • NSIS进阶教程

相关工具

  • HM NIS Edit
  • NSIS: Nullsoft Scriptable Install System

基本语法

变量

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

变量 描述 $INSTDIR 用户定义的解压路径 $PROGRAMFILES 程序文件目录(通常为 C:\Program Files 但是运行时会检测)。 $COMMONFILES 公用文件目录。这是应用程序共享组件的目录(通常为 C:\Program Files\Common Files 但是运行时会检测)。 $DESKTOP Windows 桌面目录(通常为 C:\windows\desktop 但是运行时会检测)。该常量的内容(所有用户或当前用户)取决于 SetShellVarContext 设置。默认为当前用户。 ${NSISDIR} NSIS安装目录,编译时会检测到 $WINDIR Windows目录(通常为C:\windows,在运行时会检测) $SYSDIR Windows 系统目录(通常为 C:\windows\system,在运行时会检测) $TEMP 系统临时目录(通常为 C:\windows\temp,运行时会检测) $SMPROGRAMS 开始菜单程序目录,使用CreateShortCut来创建快捷方式。该常量的内容(所有用户或当前用户)取决于 SetShellVarContext 设置。默认为当前用户。 $SENDTO 该目录包含了“发送到”菜单快捷项。 $RECENT 该目录包含了指向用户最近文档的快捷方式。 $FAVORITES 该目录包含了指向用户网络收藏夹、文档等的快捷方式。这个常量的内容(所有用户或当前用户)取决于 SetShellVarContext 设置。默认为当前用户。 $MUSIC 用户的音乐文件目录。这个常量的内容(所有用户或当前用户)取决于 SetShellVarContext 设置。默认为当前用户。 $PICTURES 用户的图片目录。这个常量的内容(所有用户或当前用户)取决于 SetShellVarContext 设置。默认为当前用户。 $VIDEOS 用户的视频文件目录。这个常量的内容(所有用户或当前用户)取决于 SetShellVarContext 设置。默认为当前用户。 $FONTS 系统字体目录。 $TEMPLATES 文档模板目录。这个常量的内容(所有用户或当前用户)取决于 SetShellVarContext 设置。默认为当前用户。 $APPDATA $COOKIES Internet Explorer 的 Cookies 目录。 $HISTORY Internet 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 showShowUnInstDetails show
显示消息框
Section "MainSection" SEC01  SetOutPath "$INSTDIR"  SetOverwrite ifnewer  File /r *.*  MessageBox MB_OKCANCEL "OK  | Cancel"SectionEnd
原创粉丝点击