WiX & Windows Installer 对我来说是全新的。
在制作中,我们使用MSI(使用WiX创建)来安装我们的软件。 MSI引用第三方程序集(例如OtherCompany.ThirdParty.dll,版本2.5)。
我们软件的下一个版本必须引用旧版本的第三方程序集(例如OtherCompany.ThirdParty.dll,版本1.7)。
虽然我知道安装较旧版本的依赖项并不常见,但必须发生这种情况。
所以我的问题是......如何配置MSI(由WiX生成)以使用较旧版本的程序集而无需完全卸载现有程序包?
我们已经探讨了以下内容:
RemoveExistingProducts
我知道此主题还有其他SO帖子。请注意,一些推荐的解决方案不完整或容易出错。
答案 0 :(得分:3)
有些问题最好通过应用程序设计而不是部署来解决。
有两个地方可以保存特定版本的.NET程序集:GAC或应用程序文件夹(或带有probing privatePath的子文件夹)。在任何一种情况下,您可能都想使用bindingRedirect。
此外,如果使用GAC绑定不成功,您可以使用AppDomain.AssemblyResolve 从特定位置加载。
一般参考:How the Runtime Locates Assemblies - 感谢@Pressacco。