gpt4 book ai didi

windows - 避免让 MSI 进入兼容模式 "Previous version of Windows"

转载 作者:可可西里 更新时间:2023-11-01 11:48:09 26 4
gpt4 key购买 nike

我有一个 32 位应用程序的安装程序包(使用 MakeMsi 构建,最初是为 Windows XP 而简单维护的),它无法在现代(64 位)Windows 系统上注册 COM 服务器(7、8 , 10).这是我在尝试正常安装 MSI 时看到的:

Screenshot of COM registration error

Application Error

Exception EOleSysError in module xyz at 000F0B01. Error accessing the OLE registry.

如果我将 MSI 置于兼容模式 以前版本的 Windows,COM 服务器会成功注册。由于“它正在工作”不知何故,到目前为止我没有投入太多时间来探索原因。但最后,我厌倦了一次又一次地记住我们的客户(有时也是我)这个先决条件,所以我想解决这个问题。

注册(和注销)是通过 CustomAction 完成的,正如我使用 Orca 所看到的那样:

"[INSTALLDIR.MYAPP]\placeholder.exe" -regserver
"[INSTALLDIR.MYAPP]\placeholder.exe" -unregserver

对于每个条目,Type1122SourceINSTALLDIR.MYAPP

我可以想象在安装过程中COM服务器是在权限不足的情况下启动的,但是安装程序不是以管理员权限自动运行的吗?我的意思是,当我(作为标准用户)通过双击启动安装程序时,它会在实际安装发生之前 显示 UAC 提示。为什么 COM 服务器不以注册和注销的提升权限运行?令人困惑...

我应该如何更改我的 MSI 以使 Windows 安装程序成功处理它?<​​/strong>

最佳答案

我假设您知道问题出在您作为自定义操作运行的可执行文件中,而不是 Windows Installer 中的任何内容。这意味着问题将出在可执行文件中的代码,它可能是旧的并且与更高版本的操作系统不兼容。您需要查看代码以了解不受支持的功能。

许多安装不需要自行注册。该数据是所有静态数据,可以提取一次并包含在注册表项和其他 COM 类表中的 MSI 文件中。这意味着在安装过程中根本不需要运行代码。

关于windows - 避免让 MSI 进入兼容模式 "Previous version of Windows",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38739380/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com