2016-08-24 57 views
1

這是一個假設性問題(待審查問題),但我相信這可能會導致問題。WiX選擇性修補和C#

C#應用程序包含一個exe文件和一些dll。 Visual Studio/msbuild在每個版本(更新時間戳/ GUID/etc)上稍微不同地構建它們,但每個版本在功能上都是相同的。構建服務器處理每日/發佈版本的一致性和卸載工作。

已經發布v1.0.0使用WiX打包和引導,我修復了一些問題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可能會失敗或最終導致損壞的文件由於不正確的差異。可以想像。

所以問題是:這怎麼解決?有沒有簡單的方法來管理二進制文件,所以只有安裝程序中包含真正的變化?比較二進制文件的某種方式忽略了每次構建更改?或者是其他東西?

回答

0

我已發佈類似的問題here。我不知道一旦你已經發布了1.0版本,情況是否能夠得到補救。但通過構建「確定性構建」,這些微妙的非功能性變化將不會發生。

請參閱herehere瞭解更多信息。但其要點在於,您需要將參數/deterministic標誌傳遞給編譯器,或將<Deterministic>true</Deterministic>添加到您的MSbuild屬性文件中的屬性組。