インストーラー ビルドの一部として、数千の大きなデータ ファイルを約 10 または 20 の「パッケージ」に圧縮する必要があり、それぞれに数百 (または数千) のファイルが含まれています。パッケージ。(必要に応じて、それらは一緒にバージョン管理されます。)
次に、実際のインストール中に、ユーザーはシステムに含めるパッケージを選択します。これにより、パッケージの更新を 1 つの大きなバージョン管理されたファイルとしてサイトからダウンロードすることもできます。何千もの個別の更新をダウンロードするように依頼するのではなく、同じパッケージ内の他の更新と同期しなくなる可能性もあります。
これらはデータ ファイルであるため、一部のファイルは設計およびコーディングの段階で定期的に変更されます。つまり、変更されたファイルが 1 つだけであっても、その特定の zip パッケージ内のすべてのファイルを再圧縮する必要があります。これにより、インストーラー ビルドのパッケージ化ステップに毎回 1 時間以上かかることになり、そのほとんどは、まだ触れていないものを再圧縮するために費やされます。
zip パッケージをそのままにして、その中の特定のファイルを置き換えることを検討しましたが、大きなファイルを zip の途中に挿入したり削除したりしても、パフォーマンスはそれほど向上しません。(少しですが、それだけの価値があるほどではありません。)
ファイルをzipパッケージに書き込む方法と一致するキャッシュされた生の「圧縮状態」に前処理することが可能かどうか疑問に思っていますが、zipヘッダー情報などではなく、データ自体のみです.
私の考えでは、それが可能であれば、ビルド ステップ中に、圧縮されたキャッシュが関連付けられていないデータ ファイルを最初に探し、そうでない場合は、そのファイルを圧縮して結果をキャッシュに書き込みます。
次に、すべてのキャッシュをファイル ストリームに追加し、ファイルに必要な適切な zip ヘッダーを追加します。
これは、ビルドごとに zip 全体を再作成していることを意味しますが、変更されたデータのみを再圧縮しています。残りはそのまま書き込まれます。これは、ディスクへの直接の書き込みであるため、非常に高速です。また、データ ファイルが変更されると、キャッシュが破棄されるため、次のビルド パスで再作成されます。
しかし、そのようなことが可能かどうかはわかりません。もしそうなら、これを試みる方法を示す文書はありますか?