Windows软件打包方法
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 show
ShowUnInstDetails show
显示消息框
Section "MainSection" SEC01SetOutPath "$INSTDIR"SetOverwrite ifnewerFile /r *.*MessageBox MB_OKCANCEL "OK | Cancel"
SectionEnd
Windows软件打包方法相关推荐
- Windows软件打包工具
Windows软件打包工具 易量安装 NSIS
- Mac电脑使用Windows软件的方法有哪些?苹果电脑怎么运行Windows软件?
不少Mac电脑用户常常会面临一个问题:有时候可能需要使用或运行一些Windows系统软件. 在Mac上使用Windows软件的方法有很多种,整理了几种可行的方法供参考. 1.使用Boot Camp B ...
- 基于deepin-wine的windows软件打包deb安装包教程(本實例安裝qq)
1.安装7z.wine sudo apt install p7zip deepin-wine5 -y 2.用deepin-wine新建一个纯净的32位容器,安装相应的软件 WINEARCH=win32 ...
- 基于deepin-wine的windows软件打包deb安装包教程
1.安装7z 2.用deepin-wine新建一个纯净的容器,安装相应的软件 3.运行软件调试,确认没问题后关闭,最好重启一下 4.mkdir -p dabao/extract/DEBIAN 5.cd ...
- Windows软件打包工具的使用
注:如果打包的软件要发往国外记得先使用这个网站进行杀毒扫描打包后的软件:http://www.virscan.org/language/zh-cn/ 注:打包遇到过里面的exe文件不见了,这个是因为整 ...
- 在Linux上运行Windows软件的4种以上方法
Linux has come a long way, but you may still need to run Windows applications occasionally – especia ...
- mac python3打包成窗体程序_使用pyinstaller将python程序打包成exe/苹果软件的方法与异常解决 - pytorch中文网...
一.安装pyinstaller 通过清华镜像安装比较快 # 二者选其一执行,第二条快 pip3 installer pyinstaller # 清华镜像安装 # pip3 install -i htt ...
- Windows下VS2019软件打包发布 2020-11-19
Windows下VS2019软件打包发布 一.配置环境 二.实际步骤 1.添加Setup到解决方案 2.添加文件及主输出 3.重要!!!!!!!! 4.最终打包 一.配置环境 很多使用者的电脑中并没有 ...
- 提示“windows无法配置此无线连接,如果您已经起用其他程序管理此无线连接,请使用该软件.....”解决方法
查找可用无线网络,提示"windows无法配置此无线连接,如果您已经起用其他程序管理此无线连接,请使用该软件....." 解决方法: 1.查看无线网卡的驱动是否安装正确 查看方法: ...
- QT学习笔记(三):Qt软件打包发布(QT5.8 _msvc2013_64+Win10_64)
QT学习笔记(三):Qt软件打包发布(QT5.8 _msvc2013_64+Win10_64) 1.编译方式介绍: 2.动态编译方式打包发布QT程序: 方法一:手动复制 方法二:使用工具 问题& ...
最新文章
- 干货 | 你的Paper阅读能力合格了吗(硕士生版)
- iOS宏定义的使用与规范
- python输入函数后无法运行_python - 如何在函数运行期间忽略所有用户输入?_python_酷徒编程知识库...
- OpenCASCADE绘制测试线束:OCAF 命令之标准演示命令
- 数据库表操作、数据类型及完整性约束
- Asp.net2.0下的表单验证Cookieless属性
- java读取yaml数据_Java类读取Yaml内罐
- Java基础篇:右移运算符
- 芝麻HTTP:TensorFlow LSTM MNIST分类
- 20170403_Windows网络编程视频学习1
- python机器视觉车牌识别_车牌识别系统中的机器视觉技术
- QQ浏览器怎么关闭云加速 QQ浏览器云加速关闭方法
- 数控数据采集跨平台免授权扎克(mazak)西门子(Siemens)海德汉(heidenhain)广数(GSK)、凯恩帝(knd)、三菱、海德汉、兄弟、哈斯、宝元、新代、发那科(Fanuc)、华中
- 13个提炼卖点的角度,让你的产品大卖!
- 历年奥斯卡获奖影片(1927—2015)
- linux图片编辑器下载软件,Pix图片编辑器
- 用asp获取服务器IP和客户端IP
- mysql error 1114_ERROR 1114 (HY000): The table is full
- Python爬虫实战:《战狼2》豆瓣影评分析
- 16组Sony索尼系列相机Slog2和Slog3常用Vlog电影LTUS调色预设 Slog2 Slog3视频灰片调色预设