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