Rar datei runterladen und entpacken lassen brauche hilfe.

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von RyanTT.

    Rar datei runterladen und entpacken lassen brauche hilfe.

    Hallo com

    ich habe einen updater geschrieben der auch funktioniert er lädt eine rar datei runter aber ich möchte das er sie gleich entpackt wie kann ich das machen ???


    lg vbcji
    Hallo,

    Ich weise dich darauf hin das du dir erst die Methode meines Vorposters ansehen solltest. Falls dass nicht klappt kannst du gerne folgende Methode ausprobieren, wirst dabei aber nicht viel schlauer.

    1. Downloade und mache einen Verweis zu folgender DLL: KLICK HIER
    2. Packe folgenden Code in ein Modul:

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Declare Function RAROpenArchive Lib "unrar.dll" ( _
    2. ByRef ArchiveData As RAROpenArchiveData) As Long
    3. Private Declare Function RARCloseArchive Lib "unrar.dll" ( _
    4. ByVal hArcData As Long) As Long
    5. Private Declare Function RARReadHeader Lib "unrar.dll" ( _
    6. ByVal hArcData As Long, _
    7. ByRef HeaderData As RARHeaderData) As Long
    8. Private Declare Function RARProcessFile Lib "unrar.dll" ( _
    9. ByVal hArcData As Long, _
    10. ByVal Operation As Long, _
    11. ByVal DestPath As String, _
    12. ByVal DestName As String) As Long
    13. Private Declare Sub RARSetChangeVolProc Lib "unrar.dll" ( _
    14. ByVal hArcData As Long, _
    15. ByVal Mode As Long)
    16. Private Declare Sub RARSetPassword Lib "unrar.dll" ( _
    17. ByVal hArcData As Long, _
    18. ByVal Password As String)
    19. Const ERAR_END_ARCHIVE = 10
    20. Const ERAR_NO_MEMORY = 11
    21. Const ERAR_BAD_DATA = 12
    22. Const ERAR_BAD_ARCHIVE = 13
    23. Const ERAR_UNKNOWN_FORMAT = 14
    24. Const ERAR_EOPEN = 15
    25. Const ERAR_ECREATE = 16
    26. Const ERAR_ECLOSE = 17
    27. Const ERAR_EREAD = 18
    28. Const ERAR_EWRITE = 19
    29. Const ERAR_SMALL_BUF = 20
    30. Const RAR_OM_LIST = 0
    31. Const RAR_OM_EXTRACT = 1
    32. Const RAR_SKIP = 0
    33. Const RAR_TEST = 1
    34. Const RAR_EXTRACT = 2
    35. Const RAR_VOL_ASK = 0
    36. Const RAR_VOL_NOTIFY = 1
    37. Enum RarOperations
    38. OP_EXTRACT = 0
    39. OP_TEST = 1
    40. OP_list = 2
    41. OP_TESTT = 3
    42. End Enum
    43. Private Type RARHeaderData
    44. ArcName As String * 260
    45. FileName As String * 260
    46. Flags As Long
    47. PackSize As Long
    48. UnpSize As Long
    49. HostOS As Long
    50. FileCRC As Long
    51. FileTime As Long
    52. UnpVer As Long
    53. Method As Long
    54. FileAttr As Long
    55. CmtBuf As String
    56. CmtBufSize As Long
    57. CmtSize As Long
    58. CmtState As Long
    59. End Type
    60. Private Type RAROpenArchiveData
    61. ArcName As String
    62. OpenMode As Long
    63. OpenResult As Long
    64. CmtBuf As String
    65. CmtBufSize As Long
    66. CmtSize As Long
    67. CmtState As Long
    68. End Type


    3. Folgende Funktion kommt in die Form rein die aktiv ist wenn du entpacken willst:
    (Gebe bei FileToExtract nichts am um alle Datein des Archives zu entpacken)
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Function ExtractFileFromRAR( _
    2. RarFile As String, _
    3. FileToExtract As String, _
    4. Destination As String, _
    5. Optional Password As String = "")
    6. On Error GoTo fehler
    7. Dim lHandle As Long
    8. Dim iStatus As Integer
    9. Dim uRAR As RAROpenArchiveData
    10. Dim uHeader As RARHeaderData
    11. Dim sStat As String, Ret As Long
    12. With uRAR
    13. .ArcName = RarFile
    14. .CmtBuf = Space(16384)
    15. .CmtBufSize = 16384
    16. .OpenMode = RAR_OM_EXTRACT
    17. lHandle = RAROpenArchive(uRAR)
    18. If .OpenResult <> 0 Then OpenError .OpenResult, RarFile
    19. If Password <> "" Then RARSetPassword lHandle, Password
    20. If (.CmtState = 1) Then MsgBox .CmtBuf, vbApplicationModal + vbInformation, "Comment"
    21. iStatus = RARReadHeader(lHandle, uHeader)
    22. With uHeader
    23. Do
    24. sStat = Left$(.FileName, InStr(1, .FileName, vbNullChar) - 1)
    25. ' MsgBox sStat & vbLf & FileToExtract
    26. If InStr(1, sStat, FileToExtract, vbTextCompare) <> 0 or FileToExtract = "" Then
    27. Ret = RARProcessFile(lHandle, RAR_EXTRACT, "", Destination & "\" & .FileName)
    28. If Not FileToExtract = "" Then
    29. RARCloseArchive lHandle
    30. Exit Function
    31. End If
    32. Else
    33. Ret = RARProcessFile(lHandle, RAR_SKIP, "", "")
    34. End If
    35. If Ret = 0 Then
    36. ' Wenn kein Fehler aufgetreten ist
    37. Else
    38. ProcessError Ret
    39. End If
    40. RARReadHeader lHandle, uHeader
    41. iStatus = iStatus + 1
    42. Loop
    43. End With
    44. End With
    45. If iStatus = ERAR_BAD_DATA Then Erro ("File header broken")
    46. RARCloseArchive lHandle
    47. Exit Function
    48. fehler:
    49. RARCloseArchive lHandle
    50. End Function


    4. Fehlerbehandlungsroutine: (optional aber besser)

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub ProcessError(ErroNum As Long)
    2. Select Case ErroNum
    3. Case ERAR_UNKNOWN_FORMAT
    4. Erro "Unknown archive format", ERAR_UNKNOWN_FORMAT
    5. Case ERAR_BAD_ARCHIVE:
    6. Erro "Bad volume", ERAR_BAD_ARCHIVE
    7. Case ERAR_ECREATE:
    8. Erro "File create error", ERAR_ECREATE
    9. Case ERAR_EOPEN:
    10. Erro "Volume open error", ERAR_EOPEN
    11. Case ERAR_ECLOSE:
    12. Erro "File close error", ERAR_ECLOSE
    13. Case ERAR_EREAD:
    14. Erro "Read error", ERAR_EREAD
    15. Case ERAR_EWRITE:
    16. Erro "Write error", ERAR_EWRITE
    17. Case ERAR_BAD_DATA:
    18. Erro "CRC error", ERAR_BAD_DATA
    19. End Select
    20. End Sub


    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub Erro(Msg As String, Optional Num As Long = 0)
    2. MsgBox "Ein Fehler ist aufgetreten." & vbLf & Msg
    3. End Sub


    5. Aufrufen der Funktion:

    Spoiler anzeigen

    VB.NET-Quellcode

    1. ExtractFileFromRAR App.Path & "\Test.rar", "testdatei.txt", App.Path & "\extract"




    Alle angegebenen Daten wurden von folgender Website bezogen,
    ich uebernehme keine Haftung bei eventuellen Schaeden:

    RAR-Datei entpacken

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „RyanTT“ ()

    danke für die anleitung aber wenn ich ein verweis machen will kommt als ein fehler ob ich die berechtigung oder so dafür habe und weiter komme ich nicht muss ich noch was machen ?

    Edit by hal2000:
    - Vollzitat entfernt.

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

    So da das Thema noch nicht beendet ist wollte ich die Sache mal aufklaeren:
    (PS: Ich hoffe es ist nicht tragisch dass du deine Datei in Zip aendern musst :) )

    Fuer das entpacken von Datein in VB2010 benoetigt man keine Library falls Framework 4.5 auf dem Zielcomputer installiert ist!

    Hier die 2 einfachen Schritte zum Glueck:

    1. Verweis erstellen:

    Wie schon gesagt benoetigen wir fuer diese Methode einen Verweis zur System.IO.Compression.FileSystem.dll,
    welche sich unter C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5 befindet.

    2. Code

    Folgender Code entpackt die .zip deiner Wahl in ein Verzeichnis:

    VB.NET-Quellcode

    1. System.IO.Compression.ZipFile.ExtractToDirectory("deine.zip", "C:\Wohin-Entpacken\")


    Das Wars ich hoffe ich konnte dir jetzt helfen :)

    Mfg. Ryan
    Oder wenn du kein So hohes Framework verwenden willst, kannst du es noch mit unrar.exe machen.
    Mit diesem Projekt kannst du .Rar Dateien Entpacken und den Fortschritt noch in einer Progressbar wiedergeben lassen .

    MFG Tibiamicus
    Dateien
    • Unrar .NET.rar

      (189,39 kB, 247 mal heruntergeladen, zuletzt: )