2011-11-10 1 views
1

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

ответ

0

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

 Смежные вопросы

  • Нет связанных вопросов^_^