简单易用的安装文件制作工具NSIS的使用demo示例
安装文件制作工具NSIS 使用总结
在给客户开发客户端软件时,为避免技术人员亲自上门安装带来额外的成本损耗,通常我们都会自作一个安装包,以确保我们开发的程序的相关依赖资源、环境在客户端运行前能自动地正确配置好。
NSIS是一个比较流行的安装文件制作工具,制作简单,提供脚本语言来定义环境和程序的静态资源配置,使得安装文件可定制化, 并能根据自定义的脚本文件自动生成可执行的安装包, 大大地简化了程序员的发布工作。
NSIS提供了多个脚本demo,可在UI上直接打开来查看其demo 并学习。
其脚本指令基本都用于设置安装程序的几大部件: 安装程序标题, 默认安装目录,待copy的文件, 目标地址及目录结构,运行环境设置:注册表, 卸载时的操作:删除文件,注册表。
因此其对应的脚本指令大概有以下几类:
1. 安装程序标题: Name
2. 默认安装目录:InstallDir
3. 待copy的文件: File
4. 目标地址及目录结构:InstallDir
5. 运行环境设置:注册表,快捷方式: WriteRegStr,CreateShortCut
6. 卸载时的操作:删除文件,目录,注册表: Delete,RMDir, DeleteRegKey
注意点:
1. 如果程序需安装在C盘,在win vista后续版本需要获取 admin 权限。
2. 如需在目标地址下添加目录,则需在创建目录后,设置新的输出目录。
CreateDirectory INSTDIR\mplayerSetOutPathINSTDIR\mplayer
脚本代码实例如下:
; VRA.nsi
;
; This script is based on VRA.nsi, but it remember the directory,
; has uninstall support and (optionally) installs start menu shortcuts.
;
; It will install VRA.nsi into a directory that the user selects,
;--------------------------------
; The name of the installer
Name "VRA installer"
InstallDir "C:\VRA"
; The file to write
; OutFile "example2.exe"
OutFile "VRA_Installer.exe"
RequestExecutionLevel admin
; The default installation directory
;InstallDir PROGRAMFILES\VRA ; Registry key to check for directory (so if you install again, it will ; overwrite the old one automatically) InstallDirRegKey HKLM "Software\VRA" "Install_Dir" ; Request application privileges for Windows Vista RequestExecutionLevel admin ;-------------------------------- ; Pages Page components Page directory Page instfiles UninstPage uninstConfirm UninstPage instfiles ;-------------------------------- ; The stuff to install Section "VRA (required)" SectionIn RO ; Set output path to the installation directory. SetOutPath INSTDIR
; Put file there
;File "example2.nsi"
File "bz2.pyd"
File "MSVCP90.dll"
File "MSVCR90.dll"
File "msvcrt.dll"
File "pycpuid._pycpuid.pyd"
File "python27.dll"
File "pywintypes27.dll"
File "screen_left.bmp"
File "select.pyd"
File "unicodedata.pyd"
File "user32.dll"
File "VRA.exe"
File "VRA.exe.manifest"
File "win32api.pyd"
File "win32evtlog.pyd"
File "wx._controls_.pyd"
File "wx._core_.pyd"
File "wx._gdi_.pyd"
File "wx._misc_.pyd"
File "wx._windows_.pyd"
File "wxbase30u_net_vc90.dll"
File "wxbase30u_vc90.dll"
File "wxmsw30u_adv_vc90.dll"
File "wxmsw30u_core_vc90.dll"
File "wxmsw30u_html_vc90.dll"
File "_ctypes.pyd"
File "_hashlib.pyd"
File "_socket.pyd"
File "_ssl.pyd"
File "mplayer.exe"
CreateDirectory INSTDIR\mplayer SetOutPath INSTDIR\mplayer
File "mplayer\config"
SetOutPath INSTDIR ; Write the installation path into the registry WriteRegStr HKLM SOFTWARE\VRA "Install_Dir" "INSTDIR"
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Run" Shell "INSTDIR\VRA.exe" ; Write the uninstall keys for Windows WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\VRA" "VRA" "VRA" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\VRA" "Uninstall_VRA" '"INSTDIR\uninstall.exe"'
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\VRA" "NoModify" 1
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\VRA" "NoRepair" 1
WriteUninstaller "uninstall.exe"
SectionEnd
; Optional section (can be disabled by the user)
Section "Start Menu Shortcuts"
CreateDirectory "SMPROGRAMS\VRA" CreateShortCut "SMPROGRAMS\VRA\Uninstall.lnk" "INSTDIR\uninstall.exe" "" "INSTDIR\uninstall.exe" 0
CreateShortCut "SMPROGRAMS\VRA\VRA.lnk" "INSTDIR\VRA.exe" "" "INSTDIR\VRA.exe" 0 SectionEnd ; Optional section (can be disabled by the user) Section "Desktop Shortcuts" SectionX SetShellVarContext current CreateShortCut "DESKTOP\VRA.lnk" "INSTDIR\VRA.exe" ;WriteRegStr HKLM "Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\layers" "INSTDIR\VRA.exe" "RUNASADMIN"
SectionEnd
;--------------------------------
; Uninstaller
Section "Uninstall"
; Remove registry keys
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\VRA"
DeleteRegKey HKLM SOFTWARE\VRA
; Remove files and uninstaller
;Delete INSTDIR\example2.nsi ;Delete INSTDIR\uninstall.exe
Delete "INSTDIR\bz2.pyd" Delete "INSTDIR\Microsoft.VC90.CRT.manifest"
Delete "INSTDIR\msvcm90.dll" Delete "INSTDIR\msvcp90.dll"
Delete "INSTDIR\msvcr90.dll" Delete "INSTDIR\msvcrt.dll"
Delete "INSTDIR\pycpuid._pycpuid.pyd" Delete "INSTDIR\python27.dll"
Delete "INSTDIR\pywintypes27.dll" Delete "INSTDIR\screen_left.bmp"
Delete "INSTDIR\select.pyd" Delete "INSTDIR\unicodedata.pyd"
Delete "INSTDIR\user32.dll" Delete "INSTDIR\VRA.exe"
Delete "INSTDIR\VRA.exe.manifest" Delete "INSTDIR\win32api.pyd"
Delete "INSTDIR\win32evtlog.pyd" Delete "INSTDIR\wx._controls_.pyd"
Delete "INSTDIR\wx._core_.pyd" Delete "INSTDIR\wx._gdi_.pyd"
Delete "INSTDIR\wx._misc_.pyd" Delete "INSTDIR\wx._windows_.pyd"
Delete "INSTDIR\wxbase30u_net_vc90.dll" Delete "INSTDIR\wxbase30u_vc90.dll"
Delete "INSTDIR\wxmsw30u_adv_vc90.dll" Delete "INSTDIR\wxmsw30u_core_vc90.dll"
Delete "INSTDIR\wxmsw30u_html_vc90.dll" Delete "INSTDIR\_ctypes.pyd"
Delete "INSTDIR\_hashlib.pyd" Delete "INSTDIR\_socket.pyd"
Delete "INSTDIR\_ssl.pyd" Delete "INSTDIR\mplayer.exe"
Delete "INSTDIR\mplayer\config" Delete "init.check" Delete "init.video" Delete "kamhearing.log" Delete "player_reg.dll" Delete "uninstall.exe" ; Remove shortcuts, if any Delete "SMPROGRAMS\VRA\*.*"
Delete "SMPROGRAMS\VRA\VRA.lnk" ; Remove directories used RMDir "SMPROGRAMS\VRA"
RMDir "INSTDIR\mplayer" RMDir "INSTDIR"
SectionEnd
;
; This script is based on VRA.nsi, but it remember the directory,
; has uninstall support and (optionally) installs start menu shortcuts.
;
; It will install VRA.nsi into a directory that the user selects,
;--------------------------------
; The name of the installer
Name "VRA installer"
InstallDir "C:\VRA"
; The file to write
; OutFile "example2.exe"
OutFile "VRA_Installer.exe"
RequestExecutionLevel admin
; The default installation directory
;InstallDir PROGRAMFILES\VRA ; Registry key to check for directory (so if you install again, it will ; overwrite the old one automatically) InstallDirRegKey HKLM "Software\VRA" "Install_Dir" ; Request application privileges for Windows Vista RequestExecutionLevel admin ;-------------------------------- ; Pages Page components Page directory Page instfiles UninstPage uninstConfirm UninstPage instfiles ;-------------------------------- ; The stuff to install Section "VRA (required)" SectionIn RO ; Set output path to the installation directory. SetOutPath INSTDIR
; Put file there
;File "example2.nsi"
File "bz2.pyd"
File "MSVCP90.dll"
File "MSVCR90.dll"
File "msvcrt.dll"
File "pycpuid._pycpuid.pyd"
File "python27.dll"
File "pywintypes27.dll"
File "screen_left.bmp"
File "select.pyd"
File "unicodedata.pyd"
File "user32.dll"
File "VRA.exe"
File "VRA.exe.manifest"
File "win32api.pyd"
File "win32evtlog.pyd"
File "wx._controls_.pyd"
File "wx._core_.pyd"
File "wx._gdi_.pyd"
File "wx._misc_.pyd"
File "wx._windows_.pyd"
File "wxbase30u_net_vc90.dll"
File "wxbase30u_vc90.dll"
File "wxmsw30u_adv_vc90.dll"
File "wxmsw30u_core_vc90.dll"
File "wxmsw30u_html_vc90.dll"
File "_ctypes.pyd"
File "_hashlib.pyd"
File "_socket.pyd"
File "_ssl.pyd"
File "mplayer.exe"
CreateDirectory INSTDIR\mplayer SetOutPath INSTDIR\mplayer
File "mplayer\config"
SetOutPath INSTDIR ; Write the installation path into the registry WriteRegStr HKLM SOFTWARE\VRA "Install_Dir" "INSTDIR"
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Run" Shell "INSTDIR\VRA.exe" ; Write the uninstall keys for Windows WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\VRA" "VRA" "VRA" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\VRA" "Uninstall_VRA" '"INSTDIR\uninstall.exe"'
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\VRA" "NoModify" 1
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\VRA" "NoRepair" 1
WriteUninstaller "uninstall.exe"
SectionEnd
; Optional section (can be disabled by the user)
Section "Start Menu Shortcuts"
CreateDirectory "SMPROGRAMS\VRA" CreateShortCut "SMPROGRAMS\VRA\Uninstall.lnk" "INSTDIR\uninstall.exe" "" "INSTDIR\uninstall.exe" 0
CreateShortCut "SMPROGRAMS\VRA\VRA.lnk" "INSTDIR\VRA.exe" "" "INSTDIR\VRA.exe" 0 SectionEnd ; Optional section (can be disabled by the user) Section "Desktop Shortcuts" SectionX SetShellVarContext current CreateShortCut "DESKTOP\VRA.lnk" "INSTDIR\VRA.exe" ;WriteRegStr HKLM "Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\layers" "INSTDIR\VRA.exe" "RUNASADMIN"
SectionEnd
;--------------------------------
; Uninstaller
Section "Uninstall"
; Remove registry keys
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\VRA"
DeleteRegKey HKLM SOFTWARE\VRA
; Remove files and uninstaller
;Delete INSTDIR\example2.nsi ;Delete INSTDIR\uninstall.exe
Delete "INSTDIR\bz2.pyd" Delete "INSTDIR\Microsoft.VC90.CRT.manifest"
Delete "INSTDIR\msvcm90.dll" Delete "INSTDIR\msvcp90.dll"
Delete "INSTDIR\msvcr90.dll" Delete "INSTDIR\msvcrt.dll"
Delete "INSTDIR\pycpuid._pycpuid.pyd" Delete "INSTDIR\python27.dll"
Delete "INSTDIR\pywintypes27.dll" Delete "INSTDIR\screen_left.bmp"
Delete "INSTDIR\select.pyd" Delete "INSTDIR\unicodedata.pyd"
Delete "INSTDIR\user32.dll" Delete "INSTDIR\VRA.exe"
Delete "INSTDIR\VRA.exe.manifest" Delete "INSTDIR\win32api.pyd"
Delete "INSTDIR\win32evtlog.pyd" Delete "INSTDIR\wx._controls_.pyd"
Delete "INSTDIR\wx._core_.pyd" Delete "INSTDIR\wx._gdi_.pyd"
Delete "INSTDIR\wx._misc_.pyd" Delete "INSTDIR\wx._windows_.pyd"
Delete "INSTDIR\wxbase30u_net_vc90.dll" Delete "INSTDIR\wxbase30u_vc90.dll"
Delete "INSTDIR\wxmsw30u_adv_vc90.dll" Delete "INSTDIR\wxmsw30u_core_vc90.dll"
Delete "INSTDIR\wxmsw30u_html_vc90.dll" Delete "INSTDIR\_ctypes.pyd"
Delete "INSTDIR\_hashlib.pyd" Delete "INSTDIR\_socket.pyd"
Delete "INSTDIR\_ssl.pyd" Delete "INSTDIR\mplayer.exe"
Delete "INSTDIR\mplayer\config" Delete "init.check" Delete "init.video" Delete "kamhearing.log" Delete "player_reg.dll" Delete "uninstall.exe" ; Remove shortcuts, if any Delete "SMPROGRAMS\VRA\*.*"
Delete "SMPROGRAMS\VRA\VRA.lnk" ; Remove directories used RMDir "SMPROGRAMS\VRA"
RMDir "INSTDIR\mplayer" RMDir "INSTDIR"
SectionEnd
作者:
fandyst
出处: http://www.cnblogs.com/todototry/
关注语言: python、javascript(node.js)、objective-C、java、R、C++
兴趣点: 互联网、大数据技术、大数据IO瓶颈、col-oriented DB、Key-Value DB、数据挖掘、模式识别、deep learning、开发与成本管理
产品:
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
出处: http://www.cnblogs.com/todototry/
关注语言: python、javascript(node.js)、objective-C、java、R、C++
兴趣点: 互联网、大数据技术、大数据IO瓶颈、col-oriented DB、Key-Value DB、数据挖掘、模式识别、deep learning、开发与成本管理
产品:
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(四):结合BotSharp
· 一个基于 .NET 开源免费的异地组网和内网穿透工具
· 《HelloGitHub》第 108 期
· Windows桌面应用自动更新解决方案SharpUpdater5发布
· 我的家庭实验室服务器集群硬件清单