install4j:"Execute launcher" 操作不适用于 "Require administrator" 执行级别
install4j: "Execute launcher" action doesn't work for "Require administrator" Execution level
我们将“生成的启动器”的“执行级别”设置为“需要管理员”。我们将应用程序安装到“Program Files”文件夹并在安装过程中请求权限。
在完成表单上,我们有一个“运行 应用程序”复选框和“执行启动器”操作。
当我们从 7.0.7 迁移到 8.0.8 时,“执行启动器”操作失败,日志中出现以下错误:
[INFO] com.install4j.runtime.beans.actions.finish.ExecuteLauncherAction [ID 1746]: Execute action
Property arguments: null
Property launcherId: 18
Property rollbackSupported: false
execute directly
[ERROR] com.install4j.runtime.installer.helper.launching.LaunchHelper: Cannot run program "C:\Program Files\app\app.exe" (in directory "C:\Program Files\app"): CreateProcess error=740, The requested operation requires elevation
[ERROR] com.install4j.runtime.beans.actions.finish.ExecuteLauncherAction [ID 1746]: Execute action not successful after 27 ms
“C:\Program Files\app”文件夹是用我们的应用程序内容创建的,可以手动 运行 应用程序。我们必须 运行 在“Program Files”文件夹中具有管理权限的应用程序。
当我将安装文件夹设置为用户主目录并将“执行级别”更改为“作为调用者”时 - 应用程序成功启动,没有任何异常。
如何解决这个问题?
将“执行启动器”操作的“操作提升类型”属性 设置为“提升到最大可用权限”。然后启动器由提升的帮助进程启动。
根据 Ingo Kegel 的回答,我们需要使用“运行 可执行”操作并将“操作提升类型”属性 设置为“提升到最大可用权限”。
我们将“生成的启动器”的“执行级别”设置为“需要管理员”。我们将应用程序安装到“Program Files”文件夹并在安装过程中请求权限。 在完成表单上,我们有一个“运行 应用程序”复选框和“执行启动器”操作。 当我们从 7.0.7 迁移到 8.0.8 时,“执行启动器”操作失败,日志中出现以下错误:
[INFO] com.install4j.runtime.beans.actions.finish.ExecuteLauncherAction [ID 1746]: Execute action
Property arguments: null
Property launcherId: 18
Property rollbackSupported: false
execute directly
[ERROR] com.install4j.runtime.installer.helper.launching.LaunchHelper: Cannot run program "C:\Program Files\app\app.exe" (in directory "C:\Program Files\app"): CreateProcess error=740, The requested operation requires elevation
[ERROR] com.install4j.runtime.beans.actions.finish.ExecuteLauncherAction [ID 1746]: Execute action not successful after 27 ms
“C:\Program Files\app”文件夹是用我们的应用程序内容创建的,可以手动 运行 应用程序。我们必须 运行 在“Program Files”文件夹中具有管理权限的应用程序。
当我将安装文件夹设置为用户主目录并将“执行级别”更改为“作为调用者”时 - 应用程序成功启动,没有任何异常。
如何解决这个问题?
将“执行启动器”操作的“操作提升类型”属性 设置为“提升到最大可用权限”。然后启动器由提升的帮助进程启动。
根据 Ingo Kegel 的回答,我们需要使用“运行 可执行”操作并将“操作提升类型”属性 设置为“提升到最大可用权限”。