Используя библиотеку DOTNETZIP, в настоящее время я могу разархивировать / извлечь файлы .ZIP, используя следующий код:
private void Unzip(object sender, EventArgs e)
{
string zipPath = pub.DepoDirDaily + @"\";
string unzipPath = pub.DepoDirDaily + @"\";
DirectoryInfo efaFiles = new DirectoryInfo(zipPath);
foreach (var file in efaFiles.GetFiles("*.exe*"))
{
if (file.ToString().Contains(pub.YYYMMDD_t0) && file.ToString().Contains(".exe"))
{
try
{
String FileName = file.ToString().Replace(zipPath, "");
String FileNameClean = FileName.Replace(".exe", "");
String OutputDir = unzipPath + FileNameClean;
String InputDir = zipPath + file;
ExtractFileToDirectory(InputDir, OutputDir, "password1");
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
}
}
}
public void ExtractFileToDirectory(string existingZipFile, string outputDirectory, string Password)
{
try
{
ZipFile zip = ZipFile.Read(existingZipFile);
Directory.CreateDirectory(outputDirectory);
foreach (ZipEntry e in zip)
{
e.Password = Password;
e.Extract(outputDirectory);
}
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
}
Однако при попытке разархивировать .EXE файлы я получаю следующую ошибку:
Ionic.Zip.ZipException: Невозможно прочитать это как ZipFile ---> Ionic.Zip.BadReadException: Неверная подпись (0x00505A4D) в позиции 0x00000000
Я исследовал дальше, и похоже, что DOTNETZIPне способен обрабатывать .EXE-файлы, так что это действительно имеет смысл.Я попытался переименовать расширение в .ZIP и попытаться разархивировать, и, к сожалению, возникает та же ошибка.
Похоже, что можно извлечь с помощью библиотеки 7ZIP, однако я изо всех сил пытаюсь найти любойправильные примеры в Интернете и те, которые я делаю, не включают возможность ввести пароль, поэтому они бесполезны.
У кого-нибудь есть что-нибудь, что может мне помочь?Будем весьма благодарны за использование другой библиотеки, обходного пути или помощи в понимании библиотеки 7ZIP!
СПАСИБО!