WiX选择性补丁和C#

时间:2016-08-24 14:43:06

标签: c# installation wix patch

这是一个假设的问题(等待适当的调查),但我相信它可能会导致问题。

C#应用程序包含一个exe和一些dll。 Visual Studio / msbuild在每次构建时都会略微不同地构建它们(更新的时间戳/ guids / etc),但每个构建在功能上是相同的。构建服务器处理每日/发布版本以确保一致性和卸载工作。

已经使用WiX发布v1.0.0打包和引导程序,我修复了一些问题lib_1.dll并发布了v1.0.1。这次我还创建了一个仅包含lib_1.dll差异的补丁,以保持文件大小不变。到目前为止一切都很好。

现在是有趣的部分。

我做了进一步的更改,但这次是lib_3.dll,并发布了v1.0.2。我做了另一个补丁,这次只包括lib_3.dll的差异。因此,现在将v1.0.0修补到v1.0.1,v1.0.1到v1.0.2也是如此,但是由于每个版本略有不同,v1.0.0到v1.0.1到v1.0.2都会失败或者以损坏的文件结束由于差异不正确。可以想像。

所以问题是:如何解决这个问题?是否有一种简单的方法来管理二进制文件,因此安装程序中只包含真正的更改?比较忽略每个构建更改的二进制文件的一些方法?或其他什么?

1 个答案:

答案 0 :(得分:0)

我发布了类似的问题here。我不知道一旦您已经发布1.0版本,情况是否可以得到纠正。但是通过使用确定性构建来构建'这些微妙的非功能性改变你的dll不会发生。

有关详细信息,请参阅herehere。但它的要点是您需要将参数/deterministic标志传递给编译器或将<Deterministic>true</Deterministic>添加到MSbuild属性文件中的属性组。