跳到正文

在线生成 NSIS 安装程序,无需编写脚本

了解 NSIS 是什么、最小化的 .nsi 脚本长什么样,以及如何通过填写表单而不是编写脚本,得到带 Modern UI 向导、快捷方式和卸载程序的标准 NSIS Setup.exe。

更新于 2026年10月31日 · 阅读约 3 分钟

NSIS(Nullsoft Scriptable Install System)二十多年来一直是 Windows 安装程序背后默默无闻的主力。VLC、7-Zip、Audacity 以及数不清的 Electron 应用都用它来发布。它免费、生成的安装包很小,并且严格按照脚本所写去执行。但脚本也正是让许多人止步的地方:你得学一门宏语言,才能得到一个大多数应用其实都需要的、形状几乎相同的向导。本指南说明脚本里都有什么,以及如何不写脚本就得到同样的安装程序。

NSIS 做什么

makensis 把一个文本脚本(.nsi)编译成独立的 Setup.exe。脚本声明向导的各个页面、要安装的文件、要创建的快捷方式和注册表项,以及一个把这一切全部撤销的卸载区段。借助 Modern UI(MUI2.nsh),你会得到熟悉的欢迎、许可协议、安装目录、进度和完成页面,并已翻译成几十种语言。

输出很紧凑:solid LZMA 压缩往往比同样文件的 zip 还小。安装程序无需额外工作即支持静默模式(/S)和自定义安装目录(/D=)。

脚本长什么样

一个针对应用文件夹的、最小但贴近实际的脚本大约有八十行。骨架如下:

!include MUI2.nsh
Name "My App"
OutFile "Setup.exe"
InstallDir "$PROGRAMFILES64\My App"
RequestExecutionLevel admin

!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE "license.txt"
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_LANGUAGE "English"

Section "Install"
  SetOutPath "$INSTDIR"
  File /r "app\*"
  WriteUninstaller "$INSTDIR\uninstall.exe"
  CreateShortcut "$SMPROGRAMS\My App.lnk" "$INSTDIR\MyApp.exe"
  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\My App" "DisplayName" "My App"
  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\My App" "UninstallString" "$INSTDIR\uninstall.exe"
SectionEnd

Section "Uninstall"
  Delete "$INSTDIR\MyApp.exe"
  RMDir /r "$INSTDIR"
  Delete "$SMPROGRAMS\My App.lnk"
  DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\My App"
SectionEnd

真正的脚本会从这里继续增长:文件属性中的版本信息、桌面快捷方式、64 位注册表视图、安装到 $LOCALAPPDATA 下的按用户安装、语言选择对话框、“安装后运行”、供 Windows 设置显示的预估大小,以及一个只删除自己安装过的文件而不是整个文件夹的卸载程序(用户确实会把自己的文件放在应用旁边)。每一项都只有几行,但每一项都是可能出错的地方。

通过表单得到同样的安装程序

ExeTup 是一个 NSIS 安装程序生成器:它根据你的回答生成一个类似上面的脚本,在云端用 makensis 编译,然后把 Setup.exe 交给你。你需要填写的内容:

  • 文件:应用文件夹的 zip 压缩包,或单个 .exe,外加可选的随同安装的“其他文件”。
  • 详细信息:名称、版本、发布者、网站、许可协议文本。
  • 选项:所有用户或当前用户、64 位或 32 位、开始菜单和桌面快捷方式、安装后启动、开机启动。
  • 语言:十五种语言任选,选择多种时会显示 NSIS 的语言选择对话框。
  • 图标:用于安装程序和快捷方式的 .ico。

结果是一个标准的 NSIS 安装程序:带 Modern UI、solid LZMA 压缩、在 Windows 设置中注册的卸载程序、文件属性中的版本信息,以及 /S 静默安装。你输入的每个值在进入脚本前都会被转义,这一点很重要,因为 NSIS 脚本可以在编译时执行命令。

什么时候该自己写脚本

当你需要自定义页面、插件、条件区段、服务安装,或者要集成到已经在 Windows 上构建的 CI 流水线时,请手写 NSIS。NSIS 的文档和随附的示例都很好。对于只需要标准向导、快捷方式和卸载程序的应用,生成脚本更快,也更不容易出错。

常见问题

输出的是真正的 NSIS 安装程序吗?

是的。ExeTup 生成一个 NSIS 脚本并用官方的 makensis 编译。生成的 Setup.exe 行为与任何 NSIS 安装程序一致,包括 /S 和 /D= 开关。

我能下载生成的 .nsi 脚本吗?

脚本是在构建时根据你的设置生成的。你下载的是安装程序本身;它的各项选项在构建前的预览中都可以看到。

NSIS 能在 Mac 或 Linux 上运行吗?

makensis 在这三个平台上都能编译,Homebrew 和 apt 都提供了它的软件包。但脚本仍然要你自己写。ExeTup 只需要一个浏览器;参见在 Mac 上构建 Windows 安装程序。

支持哪些语言?

英语、简体中文、印地语、西班牙语、法语、阿拉伯语、巴西葡萄牙语、俄语、印尼语、德语、日语、土耳其语、韩语、越南语和意大利语,使用 NSIS 自带的翻译。

相关指南