1

我们需要调整我们的应用程序以通过 ClickOnce 使用。该应用程序由一个 .exe 文件和大量 Visual C++ 库组成,其中一些是其他库使用的进程内 COM 服务器。

目前我们的安装程序确实regsvr32注册了 COM 服务器,但看起来 ClickOnce 应用程序在安装期间不允许修改注册表。所以我们需要别的东西。

选项一是删除CoCreateInstance()并改为使用LoadLibraryEx()/ DllGetClassObject()。这将需要修改代码,但非常可靠 - 我看不出有任何原因导致这不起作用。

选项二是对清单使用并行 COM 激活。我立即看到的问题是我们在每个夜间构建中增加版本号,因此我们将不得不自动更新清单。这不是很鼓舞人心。使用并行 COM 激活还有哪些其他不那么明显的限制?

4

1 回答 1

1

并行 COM 的优势在于它无需任何代码更改即可解决您的问题 - 可以将并行 COM 改进为一组现有的 COM 组件。

缺点:

  • Side-by-side 不是一种广泛使用的技术(除了一些组件,例如 VC++ 运行时库和不使用 COM 的 Windows 通用控件),并且需要一些努力才能在 Web 上查找故障排除信息
  • 如果您使用的是 XP 或 Server 2003,那么当出现问题时,您将无法从操作系统获得帮助。特别是,XP 在事件日志中给出了误导性消息;2k3更好。Vista 及以上版本为您提供sxstrace工具。
  • 您需要与组件本身并行维护清单文件。在许多方面,清单文件重复了类型库中已有的信息。尽管您可以手动维护它们(它们是具有相当简单架构的 XML 文件),但您可能希望在每次构建时重新生成它们。这可以解决版本控制问题。
于 2010-08-09T08:37:05.680 回答