Использование SharpZipLib для обновления почтового индекса - что-то плохое, если имя записи содержит папку - PullRequest
1 голос
/ 10 ноября 2011

Это мой код для обновления существующего 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.

Мы делаем это, чтобы внедрить продукт в веб-пакет 'framework' - платформа поддерживает слабо связанные продукты.

В результате zip-файл в порядке, я могу перемещаться по нему в Windows, я могу извлечь его ... НО MSDeploy приходит, и когда когда-либо новая запись приводила к дополнению к иерархии папок zip, я получаю ошибки от msdeploy, говоря, что это не моглооткрыть zip - НО только в том конкретном, то есть zip не полностью поврежден, это только когда msdeploy начинает навигацию, выполнив «новую» папку.

Теперь, если я извлечу измененный zip, а затем повторно заархивируюэто (используя 7zip), и попросите msdeploy выполнить против этого - нет проблем, это работает.

SO - это SharpZipLib, или я делаю что-то не так в добавлениив иерархию папок zip?

1 Ответ

0 голосов
/ 10 декабря 2012

Вы также должны добавить записи папки в архив (если их раньше не было).

...