NSIS 打包全指南:从源码到 Windows 安装包的完整流程

发布时间:2026/5/17 10:03:22

NSIS 打包全指南:从源码到 Windows 安装包的完整流程 很多开发者在写完桌面应用后都会面临一个问题如何把零散的程序文件打包成一个用户友好的 Windows 安装包本文就以你提到的LLM.Wiki为例从原理到实操带你彻底搞懂 NSIS 打包的完整流程。一、NSIS 到底是什么NSISNullsoft Scriptable Install System是一款免费开源的脚本式 Windows 安装包制作工具也是目前轻量桌面应用最常用的打包方案之一。核心特点轻量高效生成的安装包体积小、启动快无额外运行依赖高度自定义通过脚本实现安装路径选择、快捷方式创建、注册表修改、依赖安装等所有逻辑跨语言兼容和编程语言无关只需要你提供「可运行的程序文件集合」二、NSIS 支持哪些项目核心前提NSIS 本身不编译源码只负责封装「已经可以在 Windows 上运行的文件/文件夹」。只要你的项目满足以下条件都可以用 NSIS 打包✅ 支持的项目类型语言/框架说明前置操作C/C/C#/Go/Rust编译型语言先编译为.exe.dll 资源文件Python解释型语言用 PyInstaller/Nuitka 打包为可执行文件/文件夹Electron/TAURI跨平台桌面应用用框架自带工具打包为 Win64 程序目录Java带 JRE 的应用打包为带 JRE 的可执行包如 exe4j 处理绿色软件/静态资源纯文件集合整理好程序运行所需的所有文件❌ 不支持/不适合的场景非 Windows 平台项目macOS/Linux 程序NSIS 不支持跨平台安装包生成未编译的纯源代码如直接的.py/.java源码NSIS 不会自动编译/解释运行依赖复杂 runtime 自动安装的大型项目如需要自动安装 VC 运行库、.NET Framework需要额外脚本/插件支持三、完整流程以 LLM.Wiki 为例LLM.Wiki这类跨平台桌面应用打包流程可以分为「源码打包」和「NSIS 封装」两个阶段下面一步步拆解阶段 1源码打包为 Windows 程序目录首先我们需要把项目源码打包成一个可以直接在 Windows 上运行的文件夹。以常见的 Electron 项目为例安装依赖npm install打包为 Win64 程序目录npm run make -- --platformwin32 --archx64打包完成后会生成一个类似LLM.Wiki-win32-x64的文件夹里面包含主程序 exe如LLM.Wiki.exe依赖的.dll文件静态资源文件图片、配置文件等其他语言项目同理核心目标是得到一个「双击 exe 就能直接运行」的完整文件夹。阶段 2NSIS 脚本编写与安装包生成接下来我们用 NSIS 把上面的程序目录封装成setup.exe安装包。1. 环境准备下载安装 NSISNSIS 官网推荐安装配套工具NSIS Edit可视化脚本编辑器降低编写门槛2. 核心脚本示例LLM.Wiki 场景; 安装包基本配置 !define APP_NAME LLM.Wiki !define APP_VERSION 0.4.10 !define APP_PUBLISHER LLM.Wiki Team !define APP_URL https://llm.wiki !define INSTALL_DIR $PROGRAMFILES64\${APP_NAME} ; 安装包信息 Name ${APP_NAME} ${APP_VERSION} OutFile ${APP_NAME}_${APP_VERSION}_x64-setup.exe InstallDir ${INSTALL_DIR} InstallDirRegKey HKLM Software\${APP_PUBLISHER}\${APP_NAME} InstallDir ; 安装界面语言 !include MUI2.nsh !insertmacro MUI_PAGE_WELCOME !insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_PAGE_FINISH !insertmacro MUI_LANGUAGE SimpChinese ; 安装逻辑复制文件 Section Install SetOutPath ${INSTALL_DIR} ; 把你提前打包好的程序目录下的所有文件复制到安装目录 File /r D:\build\LLM.Wiki-win32-x64\*.* ; 创建桌面快捷方式 CreateShortCut $DESKTOP\${APP_NAME}.lnk ${INSTALL_DIR}\LLM.Wiki.exe ; 创建开始菜单快捷方式 CreateDirectory $SMPROGRAMS\${APP_NAME} CreateShortCut $SMPROGRAMS\${APP_NAME}\${APP_NAME}.lnk ${INSTALL_DIR}\LLM.Wiki.exe SectionEnd ; 卸载逻辑 Section Uninstall ; 删除安装目录所有文件 RMDir /r ${INSTALL_DIR} ; 删除快捷方式 Delete $DESKTOP\${APP_NAME}.lnk Delete $SMPROGRAMS\${APP_NAME}\${APP_NAME}.lnk RMDir $SMPROGRAMS\${APP_NAME} ; 删除注册表信息 DeleteRegKey HKLM Software\${APP_PUBLISHER}\${APP_NAME} SectionEnd3. 脚本关键配置说明OutFile最终生成的安装包文件名和你截图里的LLM.Wiki_0.4.10_x64-setup.exe完全对应InstallDir用户安装时的默认路径这里是 64 位系统的 Program Files 目录File /r递归复制程序目录下的所有文件到安装目录是 NSIS 打包的核心操作Section Uninstall卸载逻辑确保用户可以干净地删除所有文件和快捷方式4. 编译生成安装包把上述脚本保存为installer.nsi右键脚本文件选择「Compile NSIS Script」编译完成后会在同目录生成你配置的OutFile安装包也就是最终用户使用的setup.exe四、常见问题与优化技巧1. 如何修改安装包图标在脚本中添加以下配置替换为你自己的 ico 图标文件Icon D:\icons\app.ico UninstallIcon D:\icons\uninstall.ico2. 如何处理依赖安装如 VC 运行库可以通过ExecWait命令在安装时调用依赖安装包Section InstallVC SetOutPath $TEMP File vcredist_x64.exe ExecWait $TEMP\vcredist_x64.exe /quiet /norestart SectionEnd3. 如何生成静默安装包NSIS 安装包自带静默安装参数用户可以通过命令行setup.exe /S实现无人值守安装无需额外配置。五、NSIS 与其他打包工具对比工具特点适用场景NSIS轻量、免费、自定义强轻量桌面应用、小型工具Inno Setup免费、界面美观、文档完善中小型应用需要更友好的安装界面InstallShield商业工具、功能强大企业级大型应用复杂安装场景Electron Builder框架自带打包工具Electron 应用一键打包NSIS 封装六、总结NSIS 不是「万能源码打包工具」而是「Windows 安装包封装工具」。它的核心价值是把你已经编译好的程序文件变成一个用户友好、可配置、可卸载的安装包。从LLM.Wiki的安装包我们可以看到 NSIS 最典型的使用场景跨平台桌面应用打包后的二次封装。只要你掌握了「源码打包 → NSIS 脚本编写 → 编译生成安装包」的完整流程就能适配几乎所有 Windows 桌面项目。

相关新闻