【发布时间】:2020-12-11 18:48:42
【问题描述】:
我按照此答案中关于使 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 ===
【问题讨论】:
-
MSI 是否针对普通用户无法访问的每台计算机文件夹?它是否尝试写信给 HKLM?这是您自己的 MSI 还是第三方 MSI?我从未见过这样使用 Msiinfo.exe,但它确实修改了摘要信息流(这样做有风险)。
-
程序中有代码改变了本地环境变量:
Environment.SetEnvironmentVariable("UGII_LOAD_OPTIONS", location + @"\Resources\load_options.def", EnvironmentVariableTarget.User);那会写给 HKLM 吗?该程序还写入本地 Temp 目录。我想不出它尝试写入的任何每台机器的文件夹。 -
@SteinÅsmul 您是否建议以其他方式修改我的 MSI 或以不需要提升权限的方式对其进行打包?
-
我在这里有一个使用 WiX 的每个用户设置的愚蠢小样本:github.com/glytzhkof/WiXPerUserSample - 还有另一个来自其他人的 here(未尝试)。您需要针对每个用户的文件夹,而不是写入 HKLM 或 HKCR 等...有很多限制:advancedinstaller.com/user-guide/single-package.html
标签: c# installation windows-installer visual-studio-2019