1

これは、既存の zip を更新するための私のコードです。呼び出し元は ZipFile を渡し、zipfile を閉じるために finally ブロックを持っています。

    private static void AddFiles(ZipFile zipFile, string path, string filesEntryLocation, string pattern = @"*") {

        zipFile.BeginUpdate();

        string[] files = Directory.GetFiles(path, pattern);

        foreach (string filename in files) {
            zipFile.Add(filename, (filesEntryLocation + filename.Split(new[] { '\\' }).Last()).Replace('\\','/'));
        }



        zipFile.CommitUpdate();
    }

ご覧のとおり、エントリを zip に追加し、エントリ名を zip フォルダ階層の特定の部分に設定しています。

「フレームワーク」Web パッケージに製品を挿入するためにこれを行っています。フレームワークは疎結合製品をサポートしています。

結果のzipは問題ありません。Windowsでナビゲートでき、抽出できます...しかし、MSDeployが登場し、新しいエントリがzipフォルダー階層に追加された場合、msdeployから開くことができなかったというエラーが表示されますzip-ただし、その特定の場合のみ、つまりzipが完全に破損していない場合は、msdeployが「新しい」フォルダーへの移動を開始する場所のみです。

ここで、変更された zip を抽出し、(7zip を使用して) 再圧縮し、msdeploy にそれに対して実行するように依頼すると、問題なく動作します。

SO - これは SharpZipLib ですか、それとも zip フォルダー階層に追加する際に何か問題がありますか?

4

1 に答える 1

0

また、フォルダエントリをアーカイブに追加する必要があります(以前に存在していなかった場合)。

于 2012-12-10T14:41:15.610 に答える