WIX - 在卸载期间注销 COM 组件



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

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

组件已成功注册。但是,在卸载过程中,这些 COM 组件未取消注册。在卸载之前,如何确保当共享DLL计数为1时,这些组件已取消注册?

呃,我刚刚经历了一大堆关于 COM 的箍。

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

自Windows XP以来,有一种称为无注册表COM注册的东西。为此,您需要为应用程序使用的每个 COM 库提供清单文件。还需要为应用程序提供一个清单文件,该文件声明应用对这些 COM 库的依赖关系。

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

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

  • COM 组件的免注册激活:演练
  • 通过 ClickOnce 和免注册 COM 简化应用部署
  • 清单文件参考
  • 微星写作指南

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

相关内容

  • 没有找到相关文章

最新更新