Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows Electron,Electron builder,nsis,卸载时删除任务_Windows_Electron_Nsis_Taskscheduler_Electron Builder - Fatal编程技术网

Windows Electron,Electron builder,nsis,卸载时删除任务

Windows Electron,Electron builder,nsis,卸载时删除任务,windows,electron,nsis,taskscheduler,electron-builder,Windows,Electron,Nsis,Taskscheduler,Electron Builder,我制作了一个具有管理员权限的应用程序。为了在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 & p

我制作了一个具有管理员权限的应用程序。为了在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
但它返回
错误:访问被拒绝。
。这是因为卸载没有管理员权限。我应该怎么做,我应该尝试使用管理员权限执行卸载吗?或者有其他方法来删除任务

我心目中的另一个选择是,如果可执行文件不在path中,则让任务自行删除它

我正在使用的electron package.json:

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

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

如中所述,您需要将以下内容添加到
Electron builder.json
(或
package.json
build
部分)提升安装程序:

"nsis": {
    "allowElevation": true
}

这是我的解决方案,在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
package.json

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

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

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

关键问题:oneClick false+perMachine true

如果手动提升卸载程序是否有效?@Andreas确实有效,我需要搜索windows命令来提升程序而不执行它,但这不是一种很好的解决方法,但作为最后一件事,我会这么做。@jalanga你解决问题了吗?如果是,请写下如何解决。@Rustam I will pu现在不是我的答案。在windows 10上它还没有。无论您在哪台计算机上生成安装程序,它都是存储在安装程序&uninstaller.exe中的清单属性,您只需要了解如何使用electron-builder进行设置。但它不会提升卸载程序。我更新了我的问题否,我收到错误
错误:退出代码:EACCES.spawn…setup-0.9.2.exe EACCES
和customHeader宏中的原因。每个库都是最新的(包括electron builder和electron),我不能使用“requestedExecutionLevel”:“RequiredAdministrator”。仅当确实需要时才请求。关于
错误:退出代码:EACCES
打包时,在管理控制台中运行
npm electron builder…
命令似乎可以解决问题。请注意
“requestedExecutionLevel”:“requireAdministrator”
不影响安装程序的权限级别,只影响已安装的应用程序所需的权限。