gpt4 book ai didi

com - 类表生成InprocServer32值问题

转载 作者:行者123 更新时间:2023-12-04 06:47:01 25 4
gpt4 key购买 nike

我正在安装一个包含一些 COM 服务器的 Active X 控件。我在 Build 选项中使用 InstallShield 的 COM Extract 来生成注册表信息。这会导致 Registry 和 Class 表中有很多条目。 (使用 Wix 提取的信息几乎相同)。

除了 InprocServer32 键中名为“InprocServer32”的附加值外,我的 COM 服务器似乎已正确安装,如下所示:

HKCR\CLSID\{MY-COM-GUID}\InprocServer32
(Default) = C:\Path-to-my\file.ocx
InprocServer32 = 8tYCAGak)9S9&~swl.$?MyFeatureName>*&N$B'fk?As1x2J653?'

我可以从额外值中得出的唯一想法是 MyFeatureName,它是包含 .ocx 文件的 MSI 功能的内部名称。该键未在注册表表中列出,因此它必须由类表生成。

我遇到的问题只发生在 Windows Server 2008 中。似乎尝试使用 COM 服务器的应用程序无法从(默认)值中找到 .ocx 文件的路径,而是找到了 InprocServer32 值。这会导致应用程序启动 MSI,然后让 MSI 陷入无限循环。

我想知道这是否是 Windows Server 2008 中的一个已知问题,或者是否有办法防止 msiexec 生成该额外值。

最佳答案

我读过这篇文章,看看它是否能帮助你到达你想去的地方:

RobMen's Recommendation: Do not advertise COM information in MSI

您可能希望在构建时关闭 InstallShield 的 COM 提取,而是对相关组件执行一次性 COM 提取。然后您可以进入“组件高级”部分并手动操作注册表/com 表信息,使其成为您想要的样子。

如果您完全使用 WiX,另一个工作流程/技巧是使用 Heat 在您的 COM 服务器周围构建 MSI 或 MSM。然后使用 InstallShield 在直接模式下编辑 MSI/MSM,并使用注册表 View 将注册表项/值导出到 .REG 文件。然后将该 .REG 文件导入到实际安装项目中的组件中。

关于com - 类表生成InprocServer32值问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3613661/

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