c# - 为什么在删除提升的权限要求后安装程序会失败?
问题描述
我按照此答案中关于使 setup.msi 为非提升用户工作的说明进行操作: https ://stackoverflow.com/a/55700346/11860907
我已经成功地将这些说明用于不同的应用程序。
当我按原样运行 .msi 时,它需要管理员权限才能安装,否则安装没有问题。
这是我运行以删除管理员权限提示的 .bat 文件
"C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x86\MsiInfo.exe" "C:\Users\jbrown\source\repos\Step File Generator\Step File Tool\Release\Step File Tool.msi" -w 10
pause
在我运行此 bat 并尝试安装 msi 后,它继续通过通常要求管理员权限的部分,但为什么我会收到以下错误?
安装程序在安装此软件包时遇到意外错误。这可能表明此软件包有问题。错误代码为 2920。
我研究了这个错误代码,但没有得到有用的结果。以下建议我得到一个 msi 日志: https ://www.itninja.com/question/the-error-code-is-2920
当我尝试使用以下命令通过 powershell 运行 msi 时:
msiexec /l*v "H:\log.log" /i '.\Step File Tool.msi'
我收到以下错误:
无法打开此安装包。验证该包是否存在并且您可以访问它,或者联系应用程序供应商以验证这是一个有效的 Windows Installer 包。
以下是日志输出:
=== Verbose logging started: 12/11/2020 11:31:47 Build type: SHIP UNICODE 5.00.10011.00 Calling process: C:\WINDOWS\system32\msiexec.exe ===
MSI (c) (84:A0) [11:31:47:820]: Font created. Charset: Req=0, Ret=0, Font: Req=MS Shell Dlg, Ret=MS Shell Dlg
MSI (c) (84:A0) [11:31:47:820]: Font created. Charset: Req=0, Ret=0, Font: Req=MS Shell Dlg, Ret=MS Shell Dlg
MSI (c) (84:A0) [11:31:47:839]: Resetting cached policy values
MSI (c) (84:A0) [11:31:47:839]: Machine policy value 'Debug' is 0
MSI (c) (84:A0) [11:31:47:839]: ******* RunEngine:
******* Product: .\Step File Tool.msi
******* Action:
******* CommandLine: **********
MSI (c) (84:A0) [11:31:47:841]: Machine policy value 'DisableUserInstalls' is 0
MSI (c) (84:A0) [11:31:47:884]: Note: 1: 1324 2: . 3: 1
MSI (c) (84:A0) [11:31:47:884]: MainEngineThread is returning 2
=== Verbose logging stopped: 12/11/2020 11:31:47 ===
解决方案
有限的每用户设置:每用户设置必须遵守一些限制: https ://www.advancedinstaller.com/user-guide/single-package.html
我不喜欢每个用户的 MSI 安装程序,而且我发现很难提供适用于每台机器和每用户部署方案的设置。这与上述对您的限制有关。我会选择一个或另一个(仅每台机器或每用户 - 每台机器设置更复杂,可以隐藏其他用户的快捷方式)。
示例:以下是一些使用 WiX 的每个用户示例:
- https://github.com/glytzhkof/WiXPerUserSample
- https://github.com/deepak-rathi/Wix-Setup-Samples/(直接链接)
进行有限权限设置的核心是遵守上面链接中列出的限制,并且 - 如果您使用的是 WiX - 进行Package element
适当的设置(对于其他工具,您需要在适当的 GUI 中设置这些参数 -Summary Information Stream
在微星):
<Package InstallerVersion="200" Compressed="yes" InstallScope="perUser" InstallPrivileges="limited" />
MSI 工具:Visual Studio 安装程序项目有很多限制。不使用它们的一些原因。
推荐阅读
- c - 如何安全地将 unsigned long int 转换为 unsigned int?
- td-engine - 当我在 Windows 上使用 TDengine JDBC-JNI 时,JNI 连接为 NULL
- flutter - 颤振:沿http标头发送授权令牌
- pdf - React-pdf 未设置标题元数据
- html - 使列表项占据父列表的整个宽度
- artifactory - Artifactory 和 Photon OS 中的 RPM 存储库之间的兼容性问题
- spring-boot - 在 Spring Boot 中 spring.cloud.gcp.config.enabled 与 spring.cloud.gcp.core.enabled 有什么区别
- reactjs - 如何在 React 中管理大量的处理程序
- c++ - 了解语法的用法“
" 在 C++ 中 - java - Spring Boot:使用 @ConfigurationProperties 从 yaml 读取不与 @Data 一起使用