Este es el codigo de mi proyecto independiente.
Código
public void sevenZipCompresorD() { System.Threading.Tasks.Task.Run(() => { ofd.Description = "Seleccione la carpeta a comprimir"; ofd.RootFolder = Environment.SpecialFolder.Desktop; Dispatcher.Invoke(() => { if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK) { string folderToZip = ofd.SelectedPath; System.Threading.Tasks.Task.Run(() => { tmp.ArchiveFormat = OutArchiveFormat.SevenZip; tmp.CompressionMethod = CompressionMethod.Lzma; tmp.CompressionLevel = CompressionLevel.Ultra; tmp.FileCompressionStarted += (s, e) => { Dispatcher.Invoke(() => lblPorcentage.Content = (String.Format("Comprimiendo... [{0}%] {1}", e.PercentDone, e.FileName))); }; tmp.CompressionFinished += (s, e) => { Dispatcher.Invoke(() => lblPorcentage.Content = ("Finished!")); }; tmp.CompressDirectory(folderToZip, @"test.7z"); }); } }); }); } private void SevenZipCompresorA() { System.Threading.Tasks.Task.Run(() => { ofd.Title = "Archivos a Comprimir"; ofd.Filter = "Archivos a Comprimir|*.*"; ofd.Multiselect = true; if ((ofd.ShowDialog() == true)) { //StreamWriter sw = new StreamWriter("listfile.lst"); //foreach (string n in ofd.FileNames) //{ // sw.WriteLine(n); //} //sw.Close(); System.Threading.Tasks.Task.Run(() => { tmp.ArchiveFormat = OutArchiveFormat.SevenZip; tmp.CompressionMethod = CompressionMethod.Lzma; tmp.CompressionLevel = CompressionLevel.Ultra; tmp.FileCompressionStarted += (s, e) => { Dispatcher.Invoke(() => lblPorcentage.Content = (String.Format("Comprimiendo... [{0}%] {1}", e.PercentDone, e.FileName))); }; tmp.CompressionFinished += (s, e) => { Dispatcher.Invoke(() => lblPorcentage.Content = ("Finished!")); }; tmp.CompressFiles(@"test.7z", ofd.FileName); }); } }); }
Aclaro ambos funcionan de manera exitosa y pueden probarlo.
este es el codigo de mi proyecto base.
Código
public void metodoDirectorio() { aviso.Top = 1; aviso.Left = 600; aviso.Visibility = Visibility.Visible; System.Threading.Tasks.Task.Run(() => { ofd.Description = "Seleccione la carpeta a comprimir"; ofd.RootFolder = Environment.SpecialFolder.Desktop; Dispatcher.Invoke(() => { if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK) { string folderToZip = ofd.SelectedPath; System.Threading.Tasks.Task.Run(() => { tmp.ArchiveFormat = OutArchiveFormat.SevenZip; tmp.CompressionMethod = CompressionMethod.Lzma; tmp.CompressionLevel = CompressionLevel.Ultra; tmp.FileCompressionStarted += (s, e) => { Dispatcher.Invoke(() => aviso.Content = (String.Format("Comprimiendo... [{0}%] {1}", e.PercentDone, e.FileName))); }; tmp.CompressionFinished += (s, e) => Dispatcher.Invoke(() => aviso.Close()); tmp.CompressDirectory(folderToZip, File.Create(Settings.Default.directorioComprimidos)); }); } else { aviso.Close(); } }); }); } public void metodoArchivo() { aviso.Top = 1; aviso.Left = 600; aviso.Visibility = Visibility.Visible; System.Threading.Tasks.Task.Run(() => { ofd.Title = "Archivos a Comprimir"; ofd.Filter = "Archivos a Comprimir|*.*"; ofd.Multiselect = true; if ((ofd.ShowDialog() == true)) { System.Threading.Tasks.Task.Run(() => { tmp.ArchiveFormat = OutArchiveFormat.SevenZip; tmp.CompressionMethod = CompressionMethod.Lzma; tmp.CompressionLevel = CompressionLevel.Ultra; tmp.FileCompressionStarted += (s, e) => { Dispatcher.Invoke(() => aviso.Content = (String.Format("Comprimiendo... [{0}%] {1}", e.PercentDone, e.FileName))); }; tmp.CompressionFinished += (s, e) => { Dispatcher.Invoke(() => aviso.Close()); }; tmp.CompressFiles(Settings.Default.directorioComprimidos, ofd.FileName); }); } else { Dispatcher.Invoke(() => aviso.Close()); } }); }
como se podran fijar la unica diferencia es el cambio de direccion en la parte de salida del archivo.
El error del codigo 2 es: "acceso denegado a la ruta de acceso 'C:\'.' en realidad a la ruta que le ponga da ese error y no enteindo ni se por que, espero pueda alguien ayudarme.
PD. Despues de buscar solucion ahora me envia el archivo a el lugar que quiera pero sin nombre alguno y eso asigno un nombre.