You need to enable JavaScript to run this app. electron-builder自定义NSIS的customInstall、customUnInstall宏不生效
优惠活动
大模型
产品
解决方案
定价
更多

electron-builder自定义NSIS的customInstall、customUnInstall宏不生效

Electron-builder 自定义NSIS宏不生效的修正方法

高频问题原因与对应配置调整

你已经确认installer.nsh文件被正常加载,说明文件路径配置没有问题,宏不执行基本都是以下3类配置遗漏导致的,按出现概率从高到低排列:

  • 一键安装模式的会话隔离导致弹窗不可见
    electron-builder默认开启oneClick: true一键安装模式,这种模式下安装程序触发UAC提权后,会进入Windows隔离的Session 0上下文运行安装流程,你在宏里写的MessageBox属于隔离会话内的弹窗,用户完全看不到,很容易误以为宏没有执行。
    调整方式:在nsis配置块里加上"oneClick": false,切为向导式安装模式,安装流程运行在用户可交互的会话中,弹窗就能正常显示。如果不想切换模式,就把弹窗换成写测试文件的操作来验证宏执行状态,不要直接依赖弹窗判断逻辑有没有跑。
  • 权限判断逻辑拦截宏执行
    electron-builder v24以上版本的内置NSIS模板里,customInstall宏的调用逻辑被包裹在管理员权限的判断分支中:当安装配置为默认的perMachine: false(按用户安装)模式时,提权触发后的流程不会进入宏的执行块。
    调整方式:如果需要在非管理员模式下也能触发自定义宏,或者你的宏逻辑需要管理员权限,就在nsis配置里加上"perMachine": true,强制以管理员权限安装,宏就会正常进入执行分支。
  • 编译缓存复用导致脚本未更新
    部分场景下electron-builder会复用之前缓存的NSIS编译产物,哪怕你改了installer.nsh的内容,最终打包的安装程序还是用的旧脚本,表现为宏不生效。
    调整方式:删除项目下node_modules/.cache目录后重新执行打包命令。

快速验证技巧

不确定宏是否真的执行时,可以在宏块里加一段写本地文件的逻辑,替换掉单纯的弹窗:

!macro customInstall
  ; 安装完成后在用户桌面生成测试文件
  FileOpen $0 "$DESKTOP/macro-verify.txt" w
  FileWrite $0 "customInstall 已执行"
  FileClose $0
  MessageBox MB_OK "Test output 1"
!macroend

安装完成后直接查看桌面有没有生成这个测试文件,就能100%确认宏的执行状态,不会因为弹窗的会话隔离问题误判。

注意:自定义宏里的操作权限要和当前安装上下文匹配,否则会触发安装流程的静默崩溃,也会表现为宏“不生效”。

内容的提问来源于stack exchange,提问作者Alok

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.30 21:06:06