1

这是我更新现有 zip 的代码,调用者传入 ZipFile 并有一个 finally 块来关闭 zipfile。

    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 文件夹层次结构的特定部分。

我们这样做是为了将产品注入到“框架”网络包中——该框架支持松散耦合的产品。

结果 zip 很好,我可以在 Windows 中导航它,我可以提取它...但是 MSDeploy 出现了,并且在任何新条目导致添加 zip 文件夹层次结构时,我从 msdeploy 收到错误,说它无法打开zip - 但仅在特定的情况下,即 zip 没有完全损坏,它只是 msdeploy 开始导航完成“新”文件夹的地方。

现在,如果我提取更改的 zip,然后重新压缩它(使用 7zip),并要求 msdeploy 对此执行 - 没问题,它可以工作。

所以 - 这是 SharpZipLib,还是我在添加到 zip 文件夹层次结构时做错了什么?

4

1 回答 1

0

您还应该将文件夹条目添加到存档(如果它们之前不存在)。

于 2012-12-10T14:41:15.610 回答