Это мой код для обновления существующего zip, прохождение звонящих в ZipFile и окончательный блок для закрытия zip-файла.Использование SharpZipLib для обновления zip - что-то плохое, если имя записи включает в себя папку
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();
}
Как вы можете видеть, я добавляю записи в почтовый индекс и настройки entryname быть в определенной части иерархии папок почтового индекса.
Мы делаем это, чтобы вставлять продукт в веб-упаковку «каркас» - каркас поддерживает слабо связанные продукты.
Результат zip в порядке, я могу перемещаться по нему в Windows, я могу его извлечь ... BUT MSDeploy появляется, и когда-либо новая запись привела к добавлению к иерархии папок zip, я получаю ошибки от msdeploy, говорящие он не мог открыть zip - НО только в этом конкретном случае, т. е. zip не полностью поврежден, только там, где msdeploy начинает навигацию, делается «новая» папка.
Теперь, если я извлечу измененный почтовый индекс, а затем повторно застегните его (используя 7zip) и попросите msdeploy выполнить его - без проблем он работает.
SO - это SharpZipLib, или я делаю что-то не так, добавляя к иерархии папок zip?