0

我使用WIX 工具集中的heat util 来生成 dll 的 COM 注册。一切正常,直到只有一个产品使用该 dll。

但是当这个 dll 已经被另一个产品注册或被后来安装的产品使用时,卸载我的产品会删除 DLL 注册并破坏其他应用程序。

有没有办法克服这个问题?我有一个想法使生成的组件永久化,但看起来没有简单的方法来完成它。这不是理想的情况,因为如果我们的应用程序是使用该 dll 的人,最好删除 DLL 注册。

另一个问题是注册 dll 会更改以前的注册,即使它有较新的版本。它会再次破坏其他应用程序。如果已经安装,我们想使用 never 版本。

任何人都可以推荐一个简单的解决方案来克服所描述的问题吗?

4

1 回答 1

1

添加共享 DLL 时,您应该将 DLL 封装在两个产品中具有相同 ID 的组件中。该组件将在尚未安装时安装。当最后一个使用它的产品被卸载时,它将被删除。使用 WiX 库来处理共享组件。

您必须找到该共享 DLL 的安装位置。当您卸载产品 A 时,您会期望产品的安装文件夹会被删除,并且产品 B 也会出现相同的情况。因此共享的 DLL 应该在公共文件树中。

由于 COM 注册始终具有指向 COM 服务器 DLL 的绝对路径,因此它始终绑定到相应产品中的 DLL。如果产品安装程序不共享有关共享 DLL 的知识,您的产品应避免共享 DLL。您可以使用免费注册 COM来实现此目的。

于 2013-01-03T16:54:01.023 回答