我使用wix进行了设置,我有几个引用第三方dll的组件。我运行安装程序并安装了应用程序,现在我正在进行升级。我的第三方版本是相同的,但内容不同。我无法更改AssemblyVersion。 当我运行升级时,它将替换我的应用程序的旧版本,但不会替换第三方dll。我认为这是因为它们是相同的版本。 我可以强制设置始终覆盖现有文件吗?
答案 0 :(得分:0)
您可以更改升级,以便在安装初始化之后对其进行排序以查看是否有效,因为这应该完全卸载旧产品然后再安装新产品。 Windows已经发现某些文件版本已经安装并且(错误地)预测它不需要替换它们,因此存在一些问题。如果您看到这一点,则可以安全地更改组件ID以查看是否可以解决问题,因为您的升级是早期的。有时需要在CostInitialize之前手动对RemoveExistingProducts进行排序以解决此问题,但如果只是在InstallInitialize工作之后将升级移动到,则可能不需要这些。
否则,您最安全的选择是增加文件版本,因为这是覆盖磁盘所使用的内容,您可以使用Visual Studio来更改它。
如果要安装到GAC,则可以更改AssemblyVersion以便安装它们,还可以安装策略程序集以将旧版程序集的调用重定向到较新的版本。我假设“无法改变”是因为受版本限制的客户端。
所以有一些可能性,但不知道如何安排升级或文件的安装位置我不能具体。
答案 1 :(得分:0)
作为一种解决方案,我使用RemoveFile删除文件,从而确保文件始终被替换。