Electron-builder自定义NSIS卸载脚本安装时误删文件求助
问题原因与解决方案
你的问题出在自定义卸载宏的名称不符合electron-builder的NSIS模板要求,导致宏内的删除代码被错误注入到安装流程中执行。
具体问题
electron-builder的NSIS模板只识别特定名称的自定义宏,其中卸载阶段的宏必须命名为customUninstall(注意是小写的n)。你写的customUnInstall(大写I)无法被识别为卸载专属宏,因此宏内的代码会被直接包含到安装脚本里,导致安装时就执行了删除文件的操作。
修正步骤
- 修改
build/installer.nsh中的宏名称为customUninstall:
!macro customUninstall SetShellVarContext current Delete "$LocalAppdata\MyUI\.settings.db" Delete "$LocalAppdata\MyUI\.contrib.db" !macroend
- 重新打包安装程序,此时删除逻辑只会在卸载阶段触发。
额外说明
- 你的
package.json中设置了deleteAppDataOnUninstall: true,如果$LocalAppdata\MyUI是应用的默认AppData目录,这个选项会自动删除整个目录,可能不需要额外的自定义删除逻辑;如果需要精准删除特定文件,保留修正后的自定义宏即可。 SetShellVarContext current搭配perMachine: true的设置是正确的,确保卸载时操作的是当前用户的LocalAppData目录。
内容的提问来源于stack exchange,提问作者desiguy
相关产品推荐
相关产品推荐

