簡體   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