0

我有几个在安装过程中注册的 COM 组件。这些 COM 组件是我的 WIX 项目中包含的合并模块的一部分。我使用以下代码进行注册

<InstallExecuteSequence>
  <RegisterClassInfo/>
  <RegisterProgIdInfo/>
  <RegisterTypeLibraries/>
  <WriteRegistryValues/> 
</InstallExecuteSequence>

组件已成功注册。但是,在卸载过程中,这些 COM 组件并未取消注册。在卸载前,当 SharedDLL Count 为 1 时,如何确保这些组件未注册?

4

1 回答 1

2

呃,关于 COM,我刚刚经历了一大堆麻烦。

真的,您不应该再在系统上注册 COM 组件了。它导致的问题比它解决的问题多得多。当您注册 COM 组件时,您会在全局范围内注册它们,这可能会从其他应用程序中劫持该 COM 库的组件注册。希望这不会发生,但你不能确定。

从 Windows XP 开始,就出现了一种叫做免注册 COM 注册的东西。为了使其工作,您需要为您的应用程序使用的每个 COM 库提供清单文件。您还需要为您的应用程序提供一个清单文件,说明应用程序对这些 COM 库的依赖关系。

这样做的好处在于,您可以将 COM 库部署在应用程序的安装文件夹中,并且无需系统注册。

以下 URL 可帮助您创建所需的清单文件:

如果您需要任何进一步的信息,请告诉我。我能够使用旧的 VB6 COM 组件成功部署我的应用程序,而无需在 Windows 注册表中全局注册它们并将 COM 库部署在我的应用程序的安装文件夹中(而不是%windir%\system32or %windir%\SysWow64(在 64 位 Windows 上)。

于 2013-11-06T22:26:18.483 回答