我正在尝试安装一些 Microsoft 的 MSI 文件,例如 SQLTypeCLRs.msi 和 SQL Server 的 SharedComponents.msi。当我尝试安装这些文件时,出现错误 2502 和 2503,并且因调用运行时错误而失败。如果我在管理员模式下打开命令提示符,然后从该命令行启动 MSI,那么它将以管理员身份运行。这几乎就像它没有尝试访问 UAC。而且您无法右键单击文件并单击“以管理员身份运行”。有没有办法解决这个问题,以便它以管理员身份运行 MSI,这样我就不会一直收到这些错误?我的 2 个 Windows Server 2016 机器上都出现了这个问题。
我只是尝试安装以 MSI 而不是 EXE 形式提供给我的新软件。
错误 2503。未标记为进行中时调用 RunScript。
错误 2502。当没有进行安装时调用 InstallFinalize。
答案1
我怀疑你的 MSI 没有正确设置字数统计摘要属性。必须将其设置为 3 才能请求 UAC 的提升。(信息那里)
位 3 0 8 安装此包可能需要提升权限。安装此包不需要提升权限。从 Windows Installer 版本 4.0 和 Windows Vista 或 Windows Server 2008 开始可用。
和微星信息(带 -w 标志),Windows SDK 中的一个工具,我们可以读取 msi 信息来查看是否如此,我认为它也可以对其进行修改。我不熟悉该工具的使用。
ORCA 的工具也可以用来正确设置位。
从中可以看出回答,仅引用重要细节;
..
步骤 5 - 翻转摘要信息流中的字数属性的第 3 位,以表示不需要凭据提示。
..
注意:步骤 5 可以使用 Microsoft 的 MSI 编辑工具 Orca 完成。在 Orca 中打开 MSI 文件,选择查看-->摘要信息...,然后选中“UAC 兼容”复选框。注意#4:执行步骤5的另一种方法是使用“Windows SDK Components for Windows Installer Developers”中包含的MsiInfo.exe工具 http://msdn.microsoft.com/en-us/library/aa370310(VS.85).aspx
答案2
找到了 ShellExecuteEx 问题的答案,该答案也修复了此问题。