none
Descompactar arquivos rar e zip.....

    Question

  • Olá pessoal,
    Estou criando uma aplicação que para ser atualizada, precisaria descompactar um arquivo
    rar, gostaria de saber como fazer isso...?
    Ja cheguei a usar a biblioteca .net zip e utilities, mas não fui bem sucedido....
    Estou em WinForms e vb.net.....

    Desde ja muito obrigado

    []´s
    Thursday, September 30, 2010 3:45 PM

Answers

  • Ae galera consegui aqui,

    segue o código que serve para descompactar o arquivo .rar, que p/ mim era importante.... \o/

    segue código de exemplo:

     Private Sub UnRar(ByVal destino As String, ByVal caminhoOrigem As String)
    
        ' Microsoft.Win32 and System.Diagnostics namespaces are imported
    
        Dim objRegKey As RegistryKey
        objRegKey = Registry.ClassesRoot.OpenSubKey("WinRAR\Shell\Open\Command")
        ' Windows 7 Registry entry for WinRAR Open Command
    
        Dim obj As Object = objRegKey.GetValue("")
    
        Dim objRarPath As String = obj.ToString()
        objRarPath = objRarPath.Substring(1, objRarPath.Length - 7)
    
        objRegKey.Close()
    
        Dim objArguments As String
        ' in the following format
        ' " X G:\Downloads\samplefile.rar G:\Downloads\sampleextractfolder\"
        objArguments = " X " & " " & caminhoOrigem & " " + " " + destino
    
        Dim objStartInfo As New ProcessStartInfo()
        ' Set the UseShellExecute property of StartInfo object to FALSE
        ' Otherwise the we can get the following error message
        ' The Process object must have the UseShellExecute property set to false in order to use environment variables.
        objStartInfo.UseShellExecute = False
        objStartInfo.FileName = objRarPath
        objStartInfo.Arguments = objArguments
        objStartInfo.WindowStyle = ProcessWindowStyle.Hidden
        objStartInfo.WorkingDirectory = destino & "\"
    
        Dim objProcess As New Process()
        objProcess.StartInfo = objStartInfo
        objProcess.Start() <br/>
     End Sub
    

    facil de usar só passar o destino e o caminho de origem e a função ae faz o resto 

    funcionando 100%

    código bem comentado

    espero que sirva ae p/ alguem tb

    vlew

    • Marked as answer by Thiago... _ Thursday, September 30, 2010 9:10 PM
    Thursday, September 30, 2010 9:10 PM

All replies

  • Olá Thiago,

    Dê uma olhada neste artigo: http://www.codeproject.com/KB/vb/ZipDemo.aspx

    Ele fala como criar uma espécia de WinZip no vb.net


    Visual Studio 2010(Vb.Net)
    Thursday, September 30, 2010 4:22 PM
  • Herbert,

    obrigado pela intenção de ajudar, mas não consegui fazer com esse exemplo aí,

    se vc puder me explicar um pouco melhor agradeço;

     

    Vlew aew

     

    []´s
    Thursday, September 30, 2010 7:19 PM
  • Thiago,

    Primeiro baixe o Código fonte: http://www.codeproject.com/KB/vb/ZipDemo/Zip.zip

    É Preciso pelo menos o Vb2008 para abrir o projeto.

    Tente observar o funcionamento do aplicativo. Ignore a Classe Shell32(ela serve para pegar o ícone do arquivo, você não vai precisar disso)

    O Aplicativo usa a referencia :

  • C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\WindowsBase.dll

    Lamento mais não posso explicar com mais detalhes o assunto pois nunca trabalhei com isso.

    Tente pesquisar no google.

    Boa Sorte!


  • Visual Studio 2010(Vb.Net)
Thursday, September 30, 2010 7:49 PM
  • Herbert,

    Então na verdade eu até baixei o programa la do site, porém ele da erro quando vai abrir arquivo .rar, com arquivo .zip parece funcionar, mas tambem não tenho certeza, pois coloquei p/ ele extrair um arquivo .zip e ele não travou mas tb, não indicou para onde foi esse arquivo....

    mas acima de tudo p/ mim só serve se abrir o .rar pelo menos, na verdade p/ abrir o .zip eu ja consegui usando a  biblioteca .net zip e utilities ,mas o .rar é que esta dando trabalho.....

    bom de qualquer forma muito obrigado pela intenção de ajudar aew Herbert,

    vou continuar tentando aqui e se conseguir posto ae p/ o pessoal, e se vc tiver alguma novidade

    da um toque que eu agradeço.......vlw

    []´s

    Thursday, September 30, 2010 8:05 PM
  • Ae galera consegui aqui,

    segue o código que serve para descompactar o arquivo .rar, que p/ mim era importante.... \o/

    segue código de exemplo:

     Private Sub UnRar(ByVal destino As String, ByVal caminhoOrigem As String)
    
        ' Microsoft.Win32 and System.Diagnostics namespaces are imported
    
        Dim objRegKey As RegistryKey
        objRegKey = Registry.ClassesRoot.OpenSubKey("WinRAR\Shell\Open\Command")
        ' Windows 7 Registry entry for WinRAR Open Command
    
        Dim obj As Object = objRegKey.GetValue("")
    
        Dim objRarPath As String = obj.ToString()
        objRarPath = objRarPath.Substring(1, objRarPath.Length - 7)
    
        objRegKey.Close()
    
        Dim objArguments As String
        ' in the following format
        ' " X G:\Downloads\samplefile.rar G:\Downloads\sampleextractfolder\"
        objArguments = " X " & " " & caminhoOrigem & " " + " " + destino
    
        Dim objStartInfo As New ProcessStartInfo()
        ' Set the UseShellExecute property of StartInfo object to FALSE
        ' Otherwise the we can get the following error message
        ' The Process object must have the UseShellExecute property set to false in order to use environment variables.
        objStartInfo.UseShellExecute = False
        objStartInfo.FileName = objRarPath
        objStartInfo.Arguments = objArguments
        objStartInfo.WindowStyle = ProcessWindowStyle.Hidden
        objStartInfo.WorkingDirectory = destino & "\"
    
        Dim objProcess As New Process()
        objProcess.StartInfo = objStartInfo
        objProcess.Start() <br/>
     End Sub
    

    facil de usar só passar o destino e o caminho de origem e a função ae faz o resto 

    funcionando 100%

    código bem comentado

    espero que sirva ae p/ alguem tb

    vlew

    • Marked as answer by Thiago... _ Thursday, September 30, 2010 9:10 PM
    Thursday, September 30, 2010 9:10 PM
  • Thiago,

     

    Qual o código que você utiliza para compactar uma pasta?

    Sunday, August 07, 2011 2:43 PM
  • Luis,

    Na época quando precisei de compactar uma pasta o código seguinte, funcionou bem comigo......

    com certeza tem formas melhores de se fazer, mas como só usei uma vez isso, não corri atras de mais nada.....

    segue código:

     Public Function ComprimirPasta(ByVal destinoPontoZip As String, ByVal pastaParaComprimir As String) As Boolean
    
        Try
    
          Dim B(21) As Byte
    
          B(0) = 80 : B(1) = 75 : B(2) = 5 : B(3) = 6
    
          File.WriteAllBytes(destinoPontoZip, B) 'Make an empty PKZip file.
    
          Dim SH As New Shell
    
          Dim SF As Folder = SH.NameSpace(destinoPontoZip)
    
          Dim DF As Folder = SH.NameSpace(pastaParaComprimir)
    
          SF.CopyHere(DF)
    
          ComprimirPasta = True
    
        Catch ex As Exception
    
          ComprimirPasta = False
    
        End Try
    
      End Function
    

    Espero q ajude, assim como me ajudou na época......

    []´s


    d[^.^]b
    Tuesday, August 09, 2011 6:59 PM
  • Me serviu muuuuuuuuuuuuuuuuuuuuuuitoooooooooooooooooooooooooooooooow, vlw mesmo irmãozão
    Tuesday, November 27, 2012 3:18 PM