WIX将新文件添加到共享组件

use*_*309 5 .net windows-installer wix

我有一个共享的DLL,我们称之为Utility.dll,由多个产品安装.在我的WIX文件中,我将Utility.dll作为单独的组件安装.现在,Utility.dll 2.0版引用了一个额外的DLL,UtilityUtility.dll,需要同时安装.

在我第一次尝试集成UtilityUtility.dll时,我创建了一个包含新dll的新WIX组件.

这会在以下情况中导致问题

1)用户安装产品1 {Utility.dll 1.0}
2)用户安装产品2 {Utility.dll 2.0,UtilityUtility.dll 2.0}
3)用户卸载产品2 {Utility.dll 2.0}

现在,当用户使用Utility.dll时,如果找不到引用的UtilityUtility.dll,它将失败

这导致我将UtilityUtility.dll添加到原始组件,这阻止了在前一个场景中删除UtilityUtility.dll,但它有自己的问题.

1)用户安装产品1 {Utility.dll 1.0}
2)用户安装产品2 {Utility.dll 2.0,UtilityUtility.dll 2.0}
3)用户卸载产品2 {Utility.dll 2.0,UtilityUtility.dll 2.0}
4)用户卸载产品1 {UtilityUtility.dll 2.0}

UtilityUtility.dll是孤立的,因为它不会被产品1卸载删除(它在最初安装时不存在于组件中).

我还有其他选择吗?

谢谢

Rob*_*ing 3

除非你可以更新产品 1(我认为这不是完全可能的),否则我认为你完蛋了。恕我直言,组件规则是 Windows Installer 中最糟糕的事情。我的一篇旧博客文章的链接总结了其中的大部分内容。您的情况与此处描述的情况略有不同,但结果是预期的。

我认为你应该两害相权取其轻。

  • 我相信,Rob 提到的有关组件规则的帖子已移至 http://robmensching.com/blog/posts/2003/10/18/Component-Rules-101 (3认同)