Winrar ausführen

  • VB.NET

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von Halfbax.

    Winrar ausführen

    Hallo

    Ich stecke bei einem Problem fest und zwar habe ich mir eine Funktion gebastelt. Sie soll eine bestimmte vorher festgelegte Datei entpacken.
    Ich versuche es in der Funktion mit dem Parameter Winrar.exe -e "C:\test.zip". Dieser Parameter funktioniert problemlos in der CMD.

    Die Funktion

    VB.NET-Quellcode

    1. Private Function EntPacken(ByVal Pfad As String) As Boolean
    2. Dim WInRarPath As String = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) & "\WinRAR\WinRAR.exe"
    3. If File.Exists(WInRarPath) Then
    4. Process.Start(WInRarPath, " -e " & """" & Pfad & """")
    5. Else
    6. If MessageBox.Show("Winrar wird benötigt" & vbCrLf & " Soll es nun herruntergeladen werden ?", "Information", MessageBoxButtons.YesNo, MessageBoxIcon.Information) = Windows.Forms.DialogResult.Yes Then
    7. Dim Dl As String = Regex.Match(New WebClient().DownloadString("http://www.winrar.de/download.php"), "Deutsche Versionen:</b></p>\s+<p><a href=""([^""]+)").Groups(1).Value
    8. Dim Client As New WebClient
    9. Client.DownloadFile(Dl, Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & "\WinRar.exe")
    10. Process.Start(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & "\Winrar.exe")
    11. Return False
    12. End If
    13. End If
    14. Return Directory.Exists(Pfad)
    15. End Function


    Button1

    VB.NET-Quellcode

    1. Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
    2. If EntPacken("C:\test.zip") Then
    3. MessageBox.Show("Erfolgreich entpackt!")
    4. Else
    5. MessageBox.Show("Fehlgeschlagen!")
    6. End If
    7. End Sub


    Ich komme einfach nicht weiter...

    Liebe Grüße Leon
    Wüsste da jetzt nichts, woran das liegen könnte.

    Aber vielleicht kannst du auf externe Packtools verzichten, indem du mikeb69´s Beitrag mal liest und ausprobierst.
    [VB.NET] Zip-Datei ohne externe Tools entpacken.
    Grüße JackCimberly

    Deine Anfrage erledigt?
    Als erledigt markieren
    Und wenn du die Fehler in dem benannten Forum postest?

    Ich habe auch eben Dein Code getestet - will nur Download.

    Edit #1:

    So funktioniert es bei mir

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Function EntPacken(ByVal Pfad As String) As Boolean
    3. Dim WInRarPath As String = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) & "\WinRAR\WinRAR.exe"
    4. If File.Exists(WInRarPath) Then
    5. Process.Start(WInRarPath, " e " & """" & Pfad & """")
    6. Else
    7. If MessageBox.Show("Winrar wird benötigt" & vbCrLf & " Soll es nun herruntergeladen werden ?", "Information", MessageBoxButtons.YesNo, MessageBoxIcon.Information) = Windows.Forms.DialogResult.Yes Then
    8. Dim Dl As String = Regex.Match(New WebClient().DownloadString("http://www.winrar.de/download.php"), "Deutsche Versionen:</b></p>\s+<p><a href=""([^""]+)").Groups(1).Value
    9. Dim Client As New WebClient
    10. Client.DownloadFile(Dl, Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & "\WinRar.exe")
    11. Process.Start(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & "\Winrar.exe")
    12. Return False
    13. End If
    14. End If
    15. Return Directory.Exists(Pfad)
    16. End Function
    17. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    18. MessageBox.Show(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) & "\WinRAR\WinRAR.exe")
    19. End Sub
    20. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    21. If EntPacken("C:\test.zip") Then
    22. MessageBox.Show("Erfolgreich entpackt!")
    23. Else
    24. MessageBox.Show("Fehlgeschlagen!")
    25. End If
    26. End Sub
    27. End Class


    Problem war -e und

    VB.NET-Quellcode

    1. Dim WInRarPath As String = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) & "\WinRAR\WinRAR.exe"
    .
    Hab 64bit - also in C:\Programme\WinRar ...
    wollte immer auf C:/Program Files (x86)/ zugreifen.
    Habe daraufhin mein Winrar-Ordner in C:/Program Files (x86)/ kopiert.
    Grüße JackCimberly

    Deine Anfrage erledigt?
    Als erledigt markieren
    Da rätsel ich auch gerade.
    Will die Datei ersetzen ... aber wo?

    Edit #1:
    Der entpackt das in [mein Beispiel]: C:\Users\Maik\Documents\Visual Studio 2010\Projects\Test\Test\bin\Debug
    Grüße JackCimberly

    Deine Anfrage erledigt?
    Als erledigt markieren
    Probiere mal:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Function EntPacken(ByVal ZipFile As String, ByVal unpack_ZipFile_path As String)
    3. Dim WinrarFolder As String = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) & "\WinRAR\"
    4. Dim WinrarExe As String = String.Format("{0}\{1}", WinrarFolder, "WinRAR.exe")
    5. Dim WinrarP As New System.Diagnostics.ProcessStartInfo()
    6. WinrarP.Arguments = " e " & " " & ZipFile & " " & unpack_ZipFile_path
    7. WinrarP.CreateNoWindow = False
    8. WinrarP.FileName = WinrarExe
    9. Dim process As System.Diagnostics.Process = System.Diagnostics.Process.Start(WinrarP)
    10. process.WaitForExit()
    11. Return WinrarFolder
    12. End Function
    13. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    14. End Sub
    15. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    16. EntPacken("C:\CTSUFile.zip", "C:\")
    17. End Sub
    18. End Class


    Funzt nun endlich bei mir ....
    Grüße JackCimberly

    Deine Anfrage erledigt?
    Als erledigt markieren
    Nach einigen überprüfen des Codes komm ich derzeit nicht weiter.

    Denn ich krieg folgenden Fehler

    VB.NET-Quellcode

    1. Ungültige Konvertierung von der Zeichenfolge C:\Program Files\WinRAR\ in Typ Boolean.


    Folgender Code ist makiert

    VB.NET-Quellcode

    1. If EntPacken("C:\reg.zip", "C:\") Then



    Hoffe ihr könnt mir mal helfen.

    Lg Leon
    Habe es ein wenig umgeschrieben.
    Also bei mir funktioniert das tadellos.

    VB.NET-Quellcode

    1. Imports System.IO
    2. Imports System.Text.RegularExpressions
    3. Imports System.Net
    4. Public Class Form1
    5. Private Function EntPacken(ByVal ZipFile As String, ByVal unpack_ZipFile_path As String)
    6. Dim WinrarFolder As String = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) & "\WinRAR\"
    7. Dim WinrarExe As String = String.Format("{0}\{1}", WinrarFolder, "WinRAR.exe")
    8. Dim Winrar_complete_path As String = WinrarFolder & "WinRAR.exe"
    9. Dim WinrarP As New System.Diagnostics.ProcessStartInfo()
    10. 'MessageBox.Show(Winrar_complete_path) - zur Kontrolle
    11. 'MessageBox.Show(ZipFile) - zur Kontrolle
    12. If IO.File.Exists(ZipFile) Then
    13. 'überprüft, ob angegebenes ZIP-File vorhanden ist
    14. 'Ja, ZIP-File vorhanden
    15. If IO.Directory.Exists(WinrarFolder) Then
    16. 'WinRar vorhanden, starte Prozess
    17. WinrarP.Arguments = " e " & " " & ZipFile & " " & unpack_ZipFile_path
    18. WinrarP.CreateNoWindow = False
    19. WinrarP.FileName = WinrarExe
    20. Dim process As System.Diagnostics.Process = System.Diagnostics.Process.Start(WinrarP)
    21. process.WaitForExit()
    22. Else
    23. 'WinRar nicht vorhanden, starte Download und Installation
    24. If MessageBox.Show("Winrar wird benötigt" & vbCrLf & " Soll es nun heruntergeladen und installiert werden?", "Information", MessageBoxButtons.YesNo, MessageBoxIcon.Information) = Windows.Forms.DialogResult.Yes Then
    25. Dim Dl As String = Regex.Match(New WebClient().DownloadString("http://www.winrar.de/download.php"), "Deutsche Versionen:</b></p>\s+<p><a href=""([^""]+)").Groups(1).Value
    26. Dim Client As New WebClient
    27. Client.DownloadFile(Dl, Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & "\WinRar.exe")
    28. Process.Start(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & "\Winrar.exe")
    29. Return False
    30. End If
    31. End If
    32. Else
    33. 'ZIP-File nicht vorhanden
    34. MessageBox.Show(ZipFile & " nicht gefunden!")
    35. Application.Exit()
    36. End If
    37. Return File.Exists(ZipFile)
    38. End Function
    39. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    40. End Sub
    41. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    42. If EntPacken("C:\CTSUFile.zip", "C:\") Then
    43. MessageBox.Show("Erfolgreich entpackt!")
    44. Else
    45. MessageBox.Show("Fehlgeschlagen!")
    46. End If
    47. End Sub
    48. End Class
    Grüße JackCimberly

    Deine Anfrage erledigt?
    Als erledigt markieren