Estou desenvolvendo uma aplicação que baixa um arquivo winrar da nuvem e quero que ele extraia em um diretório Especifico, no começo a extração acontece normalmente, mas em algumas pastas e arquivos específicos, da erro na Extração. Estou usando o: SharpCompress.dll
O Código:
private void Extrair_RAR1(string Local_RAR, string Destino)
{
PGbar.Maximum = 3600;
Logs.Items.Add("Iniciando Extração...");
PGbar.Invoke(new MethodInvoker(delegate { PGbar.Value = PGbar.Value + 1; }));
RarArchive archive = RarArchive.Open(Local_RAR);
var options = new ExtractionOptions();
try
{
foreach (RarArchiveEntry entry in archive.Entries)
{
try
{
string fileName = Path.GetFileName(entry.Key);
string rootToFile = Destino.Replace(".rar", "") + (Path.GetFullPath(entry.Key).Replace(fileName, "").Replace(Application.StartupPath, ""));
options.ExtractFullPath = true;
options.Overwrite = true;
options.PreserveAttributes = false;
if (!Directory.Exists(rootToFile))
{ Directory.CreateDirectory(rootToFile); }
// Setar Arquivos que não podem ser alterados!!!!!!!!!!!!
if (fileName == "connectionString.config") { }
else if (fileName == "logging.config") { }
else if (fileName == "Web.config") { }
else if (fileName == "") { }
else if (fileName == "") { }
else { entry.WriteToFile(rootToFile + @"\" + fileName, options); }
}
catch (Exception ex) { MessageBox.Show("Error ao Extrair RAR!\n" + ex); }
PGbar.Invoke(new MethodInvoker(delegate { PGbar.Value = PGbar.Value + 1; }));
}
Prog_AT++;
}
catch (Exception ex){ MessageBox.Show("Erro aao Extrair RAR_ALL!!\n" + ex); }
PGbar.Invoke(new MethodInvoker(delegate { PGbar.Value = PGbar.Value + 1; }));
Logs.Items.Add("Extração Finalizada...");
Prog_AT++; Prog_AT++; Prog_AT++; Prog_AT++;
}