繁体   English   中英

电子,电子生成器,nsis,卸载时删除 SchTasks

[英]Electron, electron-builder, nsis, remove SchTasks at uninstall

我制作了一个以管理员权限运行的应用程序。 为了在 Windows 启动时运行该应用程序,我创建了一个 SchTasks,但在卸载时我想将其删除。 我能得到的最接近的是:

;script used to remove the auto launch scheduled task

!macro customUnInstall
  ExpandEnvStrings $0 %COMSPEC%
  ExecWait `"$0" /c "SchTasks /Delete /TN task_name /F & pause"`
!macroend

但它返回ERROR: Access is denied. . 这是因为卸载没有管理员权限。 我该怎么办,我应该尝试使用 admin priv 执行卸载吗? 或者有另一种方法来删除任务?

我认为的另一个选择是,如果可执行文件不在路径中,则让任务自行删除。

我正在使用的电子 package.json:

"win": {
  "target": [
    "nsis"
  ],
  "requestedExecutionLevel": "requireAdministrator"
},
"nsis": {
  "include": "installer/windows/uninstall.nsh",
  "allowElevation": true,
  "deleteAppDataOnUninstall": true
},

我对 Electron-builder 一无所知,但我知道如果安装程序脚本具有RequestExecutionLevel Admin那么卸载程序也会在 Vista+ 上请求提升。

这是我的解决方案,在 nsh 文件中。

!macro customHeader
   RequestExecutionLevel admin
!macroend

!macro customUnInstall
${ifNot} ${isUpdated}
    ; remove the scheduled task
    ExpandEnvStrings $0 %COMSPEC%
    ExecWait `"$0" /c "SchTasks /Delete /TN name /F"`

    ; delete registry for uninstaller - run as admin
    SetRegView 64
      DeleteRegValue HKCU "SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" "$LOCALAPPDATA\Programs\name\Uninstall name.exe"
    SetRegView 32
      DeleteRegValue HKCU "SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" "$LOCALAPPDATA\Programs\name\Uninstall name.exe"
  ${endIf}
!macroend

包.json

"win": {
  "target": [
    "nsis"
  ],
  "requestedExecutionLevel": "requireAdministrator"
},
"nsis": {
  "include": "installer/windows/installer.nsh",
  "allowElevation": true,
  "deleteAppDataOnUninstall": true,
  "artifactName": "${productName}.${ext}"
},

文档中所述,您需要将以下内容添加到您的electron-builder.json (或您的package.jsonbuild部分)以提升您的安装程序:

"nsis": {
    "allowElevation": true
}

我找到了另一种方法,但它会破坏您的“一键式”安装:

"build": {
    "nsis": {
      "include": "./build/installer.nsh",
      "oneClick": false,
      "perMachine": true,
      "warningsAsErrors": false
    }
  },

关键:oneClick false + perMachine true

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM