以下是这 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:切回用户级环境变量(插件默认状态)
看看有什么不一样
这个要感谢分享一下
感谢分享