2016-08-24 5 views
1

これは仮説的な質問です(適切な調査が保留されています)が、問題が発生する可能性があります。WiXの選択的なパッチ適用とC#

C#アプリケーションには、exeといくつかのdllが含まれています。 Visual Studio/msbuildはすべてのビルド(更新されたタイムスタンプ/ guids/etc)で若干異なるビルドを行いますが、各ビルドは機能的に同一です。ビルドサーバーは、一貫性と作業負荷を軽減するために、日次/リリースビルドを処理します。

パッケージとブートストラップにWiXを使用してv1.0.0をリリースしてから、lib_1.dllとリリースv1.0.1の問題を修正しました。今回は、ファイルサイズを小さくするために、diffの値がlib_1.dllのパッチも作成します。ここまでは順調ですね。

今、楽しい部分です。

さらに変更しますが、今度はlib_3.dll、リリースv1.0.2に変更します。私はlib_3.dllのdiffのみを含む別のパッチを作成します。したがって、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をリリースした後に状況を改善できるかどうかはわかりません。しかし、 '決定論的なビルド'を使用してビルドすることで、これらの微妙な非機能的な変更はあなたのDLLには起こりません。

詳細については、hereおよびhereを参照してください。しかし、その要点は、パラメータ/deterministicをコンパイラに渡すか、<Deterministic>true</Deterministic>をMSbuildプロパティファイルのプロパティグループに追加する必要があるということです。

関連する問題