自定义NSIS卸载程序以使用Electron-builder删除文件

gg58donl  于 2023-05-15  发布在  Electron
关注(0)|答案(1)|浏览(718)

我的build/installer.nsh文件中有以下脚本,用于在卸载时删除文件。

!macro customUnInstall
   SetShellVarContext current
   Delete "$LocalAppdata\MyUI\.settings.db"
   Delete "$LocalAppdata\MyUI\.contrib.db"
!macroend

但是,当安装以及以下文件被删除。下面是我的package.json的nsis部分的样子:

"nsis": {
  "oneClick": false,
  "uninstallDisplayName": "Equella Sync Uninstaller",
  "allowToChangeInstallationDirectory": true,
  "deleteAppDataOnUninstall": true,
  "runAfterFinish": true,
  "createDesktopShortcut": true,
  "createStartMenuShortcut": true,
  "perMachine": true,
  "license": "license.txt",
  "include": "build/installer.nsh",
  "installerIcon": "build/gadoeicon.ico"
}

任何帮助将不胜感激。

eaf3rand

eaf3rand1#

如果Electron是鬼鬼祟祟的,并且还在安装程序中插入了宏,那么你可以通过以下方式解决这个问题:

!macro customUnInstall
   !ifdef __UNINSTALL__
     SetShellVarContext current
     Delete "$LocalAppdata\MyUI\.settings.db"
     Delete "$LocalAppdata\MyUI\.contrib.db"
     SetShellVarContext lastused
   !endif
!macroend

但它更有可能是运行以前的卸载程序时,你安装在一个现有的安装。我假设有一种方法可以禁用它,但我对Electron Builder一无所知,所以我不能告诉你要设置哪个JSON属性。
快速查看一下它们的源代码确实表明,您可以在customUnInstall中检查$CMDLINE中的/KEEP_APP_DATA

相关问题