Entpacken mit Winrar und dynamischen Pfaden

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Kevios12.

    Entpacken mit Winrar und dynamischen Pfaden

    Hallo.

    Ich versuche derzeit mit dem Code unten: ein Archiv mit WinRaR zu entpacken, das Funktioniert wenn ich die Datei auf C:\ habe, will es aber im application.startuppath & "\Download\ROM\archive.img.xz & "C:\" das funktioniert irgentwie nicht, er sagt dann immer kein Archiv gefunden bei WinRar.

    Hier mal mein Code wie es mit C:\ funktioniert

    VB.NET-Quellcode

    1. Dim p As New Process
    2. p.StartInfo.UseShellExecute = False
    3. p.StartInfo.RedirectStandardOutput = True
    4. p.StartInfo.RedirectStandardError = True
    5. p.StartInfo.CreateNoWindow = True
    6. p.StartInfo.FileName = Application.StartupPath & "\DATA\WinRar.exe"
    7. p.StartInfo.Arguments = " e " & " " & "C:\archiv.xz" & " " & "C:\"
    8. p.Start()
    9. p.WaitForExit()


    wollte es so Probieren, aber da sagt er kein Archiv gefunden.

    VB.NET-Quellcode

    1. Dim p As New Process
    2. p.StartInfo.UseShellExecute = False
    3. p.StartInfo.RedirectStandardOutput = True
    4. p.StartInfo.RedirectStandardError = True
    5. p.StartInfo.CreateNoWindow = True
    6. p.StartInfo.FileName = Application.StartupPath & "\DATA\WinRar.exe"
    7. p.StartInfo.Arguments = " e " & " " & Application.StartupPath & "\Download\ROM\archive.img.xz" & " " & "C:\"
    8. p.Start()
    9. p.WaitForExit()


    *Theadtitel unbenannt* ~NoFear23m

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Nofear23m“ ()

    Also hab mal eben eine Messagebox.show(application.startuppath) gemacht und das Ergebniss ist bei mir

    C:\Users\Kevin\source\repos\HUAWEI ATOMU Tool\HUAWEI ATOMU Tool\bin\debug\

    und mit dem: Application.StartupPath & "\Download\ROM\archive.img.xz"

    C:\Users\Kevin\source\repos\HUAWEI ATOMU Tool\HUAWEI ATOMU Tool\bin\debug\Download\ROM\archive.img.xz
    So kann das Archiv gefunden werden.

    VB.NET-Quellcode

    1. Dim appPath As String = Chr(34) & Application.StartupPath & "\Download\ROM\archiv.img.xz" & Chr(34)


    Entpacken nach \Download\ROM\ geht natürlich auch gleichzeitig.

    Danke dir für die mühe. :)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Kevios12“ ()

    Etwas kürzere Variante:

    VB.NET-Quellcode

    1. Dim appPath = $"""{Application.StartupPath}\Download\ROM\archiv.img.xz"""


    Falls du in Schönheit sterben willst, kannst du die Pfad-Elemente auch stattdessen mit IO.Path.Combine zusammenfügen.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    petaod schrieb:

    kannst du ... die Pfad-Elemente auch stattdessen mit IO.Path.Combine zusammenfügen.

    Das möchte ich nochmal betonen und bin der Meinung, daß es die einzig wahre Methode ist, um Pfade zusammenzusetzen !
    Es gibt natürlich auch Ausnamefälle, bei denen andere Vorgehensweisen sinniger sind, die sind aber selten.

    edit:
    Du kannst das Ganze noch verkürzen, in dem du das With Statement verwendest.

    Beispiel:

    VB.NET-Quellcode

    1. Dim process As New Process
    2. With process
    3. Dim startInfo As New ProcessStartInfo
    4. With startInfo
    5. .UseShellExecute = False
    6. .RedirectStandardOutput = True
    7. .RedirectStandardError = True
    8. .CreateNoWindow = True
    9. .FileName = "fileName"
    10. .Arguments = "arguments"
    11. End With
    12. .Start()
    13. .WaitForExit()
    14. End With

    ...oder:

    VB.NET-Quellcode

    1. Dim startInfo As New ProcessStartInfo With {
    2. .UseShellExecute = False,
    3. .RedirectStandardOutput = True}

    Ich persönlich mag geschweifte Klammern nicht, daher nutze ich nur die erstere Variante, das ist aber Geschmackssache.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „FormFollowsFunction“ ()

    Ich wusste zuerst auch nicht was "Quoten" zu bedeuten hat, nach 3 Minuten Google Suche hab ich meine Lösung schon erhalten.
    Mir hatte einfach der Ansatz gefehlt, um weiter zu kommen...
    ich werde es damit mal ausprobieren

    VB.NET-Quellcode

    1. Dim appPath = $"""{Application.StartupPath}\Download\ROM\archiv.img.xz"""


    LG