[汉化]💪Nsis-3.13-Plus 深度汉化增强版 | 小巧灵活的安装包制作工具
20天前 308

NSIS 是一款经典开源的Windows 安装程序制作工具,以体积极致小巧、逻辑高度灵活著称,尤其适合网络分发场景,可轻松覆盖各类软件的打包安装需求。它采用纯脚本驱动,支持编写复杂的安装逻辑,同时拥有成熟的插件与脚本生态,能够实现网络安装、系统组件交互、共享组件更新等进阶功能。

🏮原版核心特性

  • 极致轻量:完整功能的安装程序基底仅 34 KB,内置 ZLib、BZip2、LZMA 三种压缩算法,无需额外自解压模块
  • 系统兼容:单个安装包可无缝适配从 Windows 95 到 Windows 11 的全系列主流 Windows 版本
  • 灵活可控:基于专属脚本语言,可实现版本检测、升级覆盖、注册表与文件操作、环境变量配置、系统重启等复杂逻辑,支持自定义函数与事件回调
  • 自定界面:内置 40 余种语言(含阿 拉伯语、希伯来语等 RTL 从右向左语言),支持经典向导与现代界面风格,可完全自定义对话框布局与视觉外观
  • 扩展能力:支持 C/C++/Delphi 等极强语言开发的插件扩展,可实现网络下载、文件补丁、Win32 API 直接调用等功能,支持制作在线网络安装包
  • 自动构建:工程化强大的预处理器支持多项目整合,可自动生成精简版、完整版等不同发行版本;脚本语法清晰易读,便于自动化生成与项目维护
  • 跨越平台:编译器可在 Linux、*BSD 等 POSIX 平台运行,生成的安装程序仍可正常运行于 Windows 系统
  • 其他能力:内置 CRC32 自校验、支持静默安装、组件树按需选择、完整的安装/卸载全流程支持,完全开源免费可商用

💪汉化增强版特性

核心体积保持极致小巧,功能全面升级,欢迎全网同类型版本对比。

本版本基于官方原版源码深度汉化并编译构建,完整保留原版全部功能,同时新增多项实用增强:

  • 同时支持 32 位与 64 位安装程序制作
  • 新增安装日志记录功能,便于追踪安装过程、排查问题
  • 增加防 7-Zip 提取保护 + CRC 校验防篡改机制,保护安装包内资源
  • 最大字符串长度提升至 8192 字节,支持写入超长注册表项与配置内容
  • 新增独立文件存储安装数据的支持,进一步拓展打包灵活性
  • 解除原版 2GB 单包体积限制,最大支持 8EB 超大打包容量
  • 全工具链与文档汉化:覆盖 MakeLangId.exe、zip2exe.exe、makensis.exe、makensisw.exe 主程序,以及 NSIS.chm 帮助文档,大幅降低上手门槛
  • 直接从官方文档学习好过从过时教学强100倍,一些老插件本质是早期的「集成插件」,把自定义 UI、系统调用、文件操作、INI 配置、窗口控制等几十种功能打包进一个 dll,好处是只带一个插件文件,坏处是早已停更、Unicode 支持差、与新版 MUI/nsDialogs 兼容性不佳。远不如官方插件小巧灵活。

以下是这 17 个 插件的核心作用与基础用法整理,均为 NSIS 经典内置 / 标准插件,调用语法统一为 插件名::函数名 参数,返回值默认压入堆栈,通过 Pop $变量名 取出。
1. AdvSplash.dll
核心作用:高级闪屏插件,支持 PNG 透明、渐入渐出动画效果,用于在安装程序启动前展示品牌启动画面,效果比基础 Splash.dll 更丰富。
典型用法:在 .onInit 回调中调用,可指定显示时长、透明度、坐标。

; 显示透明PNG闪屏,1500毫秒后自动关闭
AdvSplash::Show /NOUNLOAD 1500 0 0 "$PLUGINSDIR\splash.png"
Pop $0 ; 返回状态

2. Banner.dll
核心作用:顶部横幅插件,在安装窗口顶部渲染自定义品牌位图条,可获取横幅窗口句柄做二次绘制,是经典界面的顶部装饰组件(MUI 界面有自带头部,较少直接使用)。
典型用法:显示 / 销毁横幅、获取窗口句柄。

Banner::Show "$PLUGINSDIR\top_banner.bmp"
Banner::GetWindow ; 获取横幅HWND,存入栈顶
Banner::Destroy ; 销毁横幅

3. BgImage.dll
核心作用:全局背景图插件,可在整个安装窗口底层设置持久背景图片,同时支持播放 WAV 格式背景音乐,用于定制安装包皮肤。
典型用法:页面初始化时设置背景,支持平铺、拉伸等显示模式。

; 设置背景位图,持续显示
BgImage::SetImage /NOUNLOAD "$PLUGINSDIR\background.bmp"
BgImage::PlaySound "$PLUGINSDIR\bgm.wav" ; 播放背景音乐

4. Dialer.dll
核心作用:网络拨号插件,提供互联网连接检测、系统拨号调用能力,早期用于拨号上网场景下检测网络状态,触发拨号连接。
典型用法:检测是否联网、发起拨号连接。

Dialer::IsConnected
Pop $0 ; 返回"connected"或"disconnected"
Dialer::Dial "我的拨号连接" ; 调用系统拨号

5. InstallOptions.dll
核心作用:初代自定义页面插件,通过 INI 配置文件定义页面控件(输入框、复选框、单选框等),无需硬编码控件,是早期 NSIS 自定义交互页的核心方案,现已逐步被 nsDialogs 替代。
典型用法:编写 INI 布局文件,加载并显示自定义页面,读取用户输入。

; 加载INI定义的自定义页面
InstallOptions::dialog "$PLUGINSDIR\custom_page.ini"
Pop $0 ; 返回用户操作(下一步/取消)
; 后续从INI中读取用户填写的控件值

6. LangDLL.dll
核心作用:多语言选择插件,在安装启动时弹出语言选择对话框,让用户手动选择安装界面语言,是多语言安装包的标准配套组件。
典型用法:在 .onInit 中调用,传入标题与提示,返回选中的语言 ID。

LangDLL::LangDialog "选择语言" "请选择安装程序的显示语言"
Pop $LANGUAGE ; 将用户选择赋值给语言变量

7. Math.dll
核心作用:数学表达式计算插件,支持复杂四则运算、三角函数、位运算、逻辑运算等,弥补 NSIS 原生仅支持简单整数运算的缺陷。
典型用法:传入表达式字符串,返回计算结果。

Math::Eval "sqrt(256) + 3 * 8 - 10"
Pop $0 ; 结果为 30

8. nsDialogs.dll
核心作用:现代自定义对话框插件,InstallOptions 的替代方案,支持通过脚本动态创建控件(标签、输入框、按钮、列表、进度条等),无需 INI 文件,灵活性和扩展性更强,是当前自定义页面的主流方案。
典型用法:创建页面→添加控件→显示页面。

nsDialogs::Create 1018 ; 创建自定义页面
Pop $0

${NSD_CreateLabel} 0 0 100% 20u "请输入安装路径:"
Pop $0
${NSD_CreateText} 0 25u 100% 20u "$PROGRAMFILES\MyApp"
Pop $hPathInput

nsDialogs::Show ; 显示页面

9. nsExec.dll
核心作用:控制台执行插件,静默运行外部命令行程序,可将输出重定向到安装日志或完全隐藏窗口,比原生ExecWait更适合后台执行命令。
典型用法:执行命令并捕获输出、纯静默执行。

; 执行命令并将输出打印到安装详情日志
nsExec::ExecToLog 'cmd /c dir /b "$INSTDIR"'
Pop $0 ; 返回退出码

; 完全静默执行,无任何窗口
nsExec::Exec '"$INSTDIR\tool.exe" /silent'

10. NSISdl.dll
核心作用:HTTP 文件下载插件,支持从网络下载文件到本地,用于在线安装包、增量升级包下载资源。
典型用法:带进度提示下载、静默下载。

; 带下载进度提示
NSISdl::download "http://example.com/data.pak" "$TEMP\data.pak"
Pop $0 ; 返回"success"或错误信息

; 静默后台下载
NSISdl::download_quiet "http://example.com/data.pak" "$TEMP\data.pak"
注意:仅支持 HTTP 协议,不支持 HTTPS;部分杀毒软件可能误报为下载器木马。

11. Splash.dll
核心作用:基础闪屏插件,仅支持显示普通 BMP 位图启动画面,无透明、无动画,体积轻量,适合简单启动场景。
典型用法:指定显示时长和位图路径。

; 显示闪屏,2000毫秒后自动关闭
Splash::Show 2000 "$PLUGINSDIR\splash.bmp"
Splash::Destroy ; 也可手动提前销毁

12. StartMenu.dll
核心作用:开始菜单选择插件,弹出标准的 “选择开始菜单文件夹” 对话框,让用户自定义快捷方式存放的开始菜单目录。
典型用法:弹出选择框,返回用户选定的文件夹名。

StartMenu::Select "选择开始菜单文件夹" "我的软件"
Pop $0 ; 返回用户选择的文件夹名称

13. System.dll
核心作用:系统级调用插件,NSIS 最强大的核心插件之一,可直接调用 Win32 API、外部 DLL 导出函数,支持内存分配、COM 交互、64 位整数运算,能实现几乎所有 Windows 系统级操作。
典型用法:按参数类型调用系统 API,支持 v(空)、p(指针 / 句柄)、i(整数)、t(字符串) 等类型。

; 调用GetWindowsDirectory获取Windows目录
System::Call 'kernel32::GetWindowsDirectory(t .r0, i 260) i .r1'
DetailPrint "Windows目录:$0"

14. TypeLib.dll
核心作用:COM 类型库注册插件,用于注册 / 反注册 .tlb 类型库文件,等价于系统RegisterTypeLib接口,安装 COM 组件、ActiveX 控件时使用。
典型用法:注册 / 反注册类型库。

TypeLib::Register "$INSTDIR\component.tlb"
Pop $0 ; 返回注册结果

TypeLib::UnRegister "$INSTDIR\component.tlb" ; 反注册

15. UserInfo.dll
核心作用:用户信息查询插件,获取当前登录用户的账号信息,包括用户名、权限等级、SID、所属用户组等。
典型用法:检测管理员权限、获取用户名。

; 获取当前账号权限类型
UserInfo::GetAccountType
Pop $0
StrCmp $0 "Admin" is_admin not_admin
; 获取当前用户名
UserInfo::GetName
Pop $0

16. VPatch.dll
核心作用:增量补丁插件,配合GenPat.exe工具生成新旧文件的差异补丁,安装时仅更新差异部分,大幅缩小升级包体积,用于软件增量升级场景。
典型用法:先通过 GenPat 生成.pat 补丁文件,安装时应用补丁。

; 对旧文件应用补丁,生成新文件
VPatch::Patch "$INSTDIR\old_app.exe" "$PLUGINSDIR\update.pat" "$INSTDIR\new_app.exe"
Pop $0 ; 返回补丁应用结果

17.EnVar.dll 插件核心作用
EnVar 是 NSIS 生态中最常用的环境变量管理专用插件,用于安全地增删改查 Windows 系统级(HKLM)和用户级(HKCU)环境变量。相比手动写注册表的原生方式,它解决了三大核心痛点:
自动处理 PATH 等分号分隔的列表型变量,自动去重、修正多余分号,避免变量内容损坏
修改后自动向系统发送 WM_SETTINGCHANGE 广播,环境变量无需重启电脑即可对新进程生效
自动处理注册表路径、字符串类型等底层细节,脚本编写更简洁可靠
作用域切换
插件默认操作当前用户环境变量(HKCU),操作系统级变量前必须先切换作用域:
EnVar::SetHKLM:切换为系统级环境变量(需管理员权限运行安装包)
EnVar::SetHKCU:切回用户级环境变量(插件默认状态)

最后于 4天前 被smss编辑 ,原因:
上传的附件:
奖励
收藏
点赞
分享
师从Jet Chan、mdyblog、WHY、Batcher,深耕技术追求实用与效率。以解决问题为本,专注实践,持续精进。
最新回复 (4)
  • avatar image
    dunniu 19天前

    看看有什么不一样

  • avatar image
    flyingdancex 19天前

    这个要感谢分享一下

  • avatar image
    soft2023 16天前

    感谢分享

  • avatar image
    jonyzhr 4天前

    感谢分享

    WINST
返回