Mit eigener setup datei archive entpacken

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von QB2VB.

    Mit eigener setup datei archive entpacken

    ein herzerfrischendes moin moin :D
    ich habe soziemlich alles nachprogrammiert was man bei youtube unter "vb tutorial" so findet...von "hallo welt" bis zu einem remote control tool, aber das ganze "wissen" hilft mir hier grade nicht weiter.

    ich würde gerne eine setup datei schreiben...sie soll so funktionieren:
    ich habe dateien in 6 archive gepackt (*.rar). jetzt will ich eine setup datei erstellen und die mit den 6 archiven + autorun datei(wie man die schreibt weiß ich) auf 2 dvd's brennen.
    - dvd1: autorun.inf, setup.exe, 1.rar, 2.rar, 3.rar
    - dvd2: autorun.inf, 4.rar, 5.rar, 6.rar (die setup.exe sollte wenn dvd1 entnommen wird trotzdem weiter laufen und nach dvd2 fragen)

    die setup datei wird automatisch beim einlegen der dvd1 gestartet (durch autorun). nun soll sie die ersten drei archive von dvd1 entpacken und dann nach dvd2 fragen, wenn man ok klick soll sie die anderen drei von der dvd2 entpacken. und zwar soll der pfad zuerst mit einem open/save- filedialog abgefragt werden.
    von mir gewünschte zusatzfunktionen:
    - eine progressbar die den fortschritt anzeigt
    - eine textbox die untereinander die sachen aufzählt die entpackt werden.

    so leute... jetzt seit ihr dran, trommelt mal ein paar codes mit kleiner erklärung in eure tastaturen...BITTE! :thumbsup:
    ich bin fest davon überzeugt, dass es hier welche gibt die mir weiter helfen können.

    mfg
    VplusSpinat

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „VplusSpinat“ ()

    Hi,
    Also:
    Wie du weißt (hoffe ich doch :thumbsup: ) ist C&P-Code hier eher Unerwünscht.
    1.Für das Entpacken (glaube nur für .zip gibt es hier was im Forum (SuFu benutzen)
    2.Kopiere doch deine Setup.exe in ein temporeren Ordner und starte diese dann.
    3.Zum Brennen brauchst du z.B.: die Nero.dll (Googlen)
    4 und 5tens (Pogressbar und Richtextbox) das ist nicht sooo schwer, such mal hier im Forum

    Ich hoffe du kannst was mit anfangen.
    Wenn du wirklich nichtmehr weiterkommst, kannst ja nochmal fragen :thumbup:

    Edit:
    Hier ein Link für das Entpacken von Zip-Archiven: Hier
    so...die antwort kam schnell...danke an der stelle :)

    1. mit "c&p-code" meinst du sicher das hier keiner codes posten darf denk ich mal.
    2. ob zip oder rar ist doch würstchien oder?? anstatt als rar einfach als zip packen.
    3. mit den restlichen vorschlägen (möchte sie jetzt nicht schlecht machen) kann ich echt garnichts anfangen. ?(
    1. mit "c&p-code" meinst du sicher das hier keiner codes posten darf denk ich mal.

    Nein, sondern das es hier nicht gern gesehen wird (nichts für Ungut :thumbup: ) wenn man nach "C&P"-Code (Copy&Past) gefragt wird (will heißen , das man nicht einfach nach code fragt ohne sich anzuschtrengen und selbst was zu machen) (ausnahme ist der Marktplatz).
    Soll heißen, das du dich erstmal mit dem Thema beschäftigst und es selbst versuchst.
    Wenn du nicht weiterkommst , dann kanst du hier nach Hilfe für dein Problem fragen.
    Und "SuFu" heißt die Forensuche ;)
    für das kopieren kannst du z.B.:

    VB.NET-Quellcode

    1. Io.file.copy("Pfad zur Setup.exe","Pfad zum Ordner in den die .exe kopiert werden soll")
    nehmen. (dies soll nur zeigen, wie es geht (bitte nicht z.B.: "D:\" als Pfad für das DVD-Laufwerk benutzen (da nicht jeder "D:\" als Pfad für das DVD-Laufwerk besitzt) :D

    Edit:
    Zum Kopieren: Gucke dir Das mal an

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

    danke für den code...der bringt mich auf eine idee;)

    aber den code zum entpacken bräuchte ich immernoch, weil da habe ich echt kein plan gerade.
    habe mir auch schon viel im internet durchgelesen, aber finde nicht so wirklich das was ich suche.

    hoffe hier kann einer diesen einen code posten(MIT ERKLÄRUNG BITTE! möchte gerne wissen was die einzelnen abschnitte/zeilen bewirken, damit ich mir auch mal aus diesen code was zusammenreiben kann.).

    habe im internet gefunden wie man dateien aus dem ressourcen "entpackt", aber das hilft mir ja nicht viel.
    Hi Ok ich versuche es :thumbsup:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports Shell32
    2. Imports System
    3. Imports System.IO
    4. Public Class ClassUnzip
    5. Private _file As String
    6. Private _folder As String
    7. Private _towhere As String
    8. Private _shell As Shell32.IShellDispatch2
    9. ''' <summary>Event welches vor dem Entpacken (Unzip) ausgeführt wird.</summary>
    10. ''' <remarks></remarks>
    11. Public Event Unzipstart()
    12. ''' <summary>Event welches nach dem Entpacken (Unzip) ausgeführt wird.</summary>
    13. ''' <remarks></remarks>
    14. Public Event UnzipFinishd()
    15. ''' <summary>Neue Instanz der ClassUnzip Klasse.</summary>
    16. ''' <param name="file">Datei welche entpackt werden soll.</param>
    17. ''' <param name="towhere">Zielordner.</param>
    18. ''' <remarks></remarks>
    19. Public Sub New(ByVal file As String, ByVal towhere As String)
    20. _file = file
    21. _towhere = towhere
    22. _folder = Path.Combine(Path.GetDirectoryName(_file), _towhere)
    23. _shell = CreateObject("Shell.Application")
    24. End Sub
    25. ''' <summary>Das Entpacken (Unzip) wird ausgeführt.</summary>
    26. ''' <returns></returns>
    27. ''' <remarks></remarks>
    28. Public Function UnzipNow() As Boolean
    29. 'prüfen ob der ordner existiert
    30. If Directory.Exists(_folder) = False Then
    31. Directory.CreateDirectory(_folder)
    32. End If
    33. 'event für start feuern
    34. RaiseEvent Unzipstart()
    35. 'entpacken
    36. Dim temp As Shell32.Folder = _shell.NameSpace((_folder))
    37. If temp IsNot Nothing Then
    38. temp.CopyHere(_shell.NameSpace((_file)).Items)
    39. End If
    40. 'event für ende feuern
    41. RaiseEvent UnzipFinishd()
    42. 'rückgabe wert setzen
    43. Return True
    44. End Function
    45. ''' <summary>Gibt den Namen der gepackten Datei zurück, oder setzt diesen.</summary>
    46. ''' <value></value>
    47. ''' <returns></returns>
    48. ''' <remarks></remarks>
    49. Public Property UnZipFile() As String
    50. Get
    51. Return _file
    52. End Get
    53. Set(ByVal value As String)
    54. _file = value
    55. End Set
    56. End Property
    57. ''' <summary>Gibt den Zielort (entpacken) zurück, oder setzt diesen.</summary>
    58. ''' <value></value>
    59. ''' <returns></returns>
    60. ''' <remarks></remarks>
    61. Public Property UnzipTo() As String
    62. Get
    63. Return _towhere
    64. End Get
    65. Set(ByVal value As String)
    66. _towhere = value
    67. End Set
    68. End Property
    69. End Class

    Es wird ein Verweis auf die Shell32.dll aus dem System32 Ordner benötigt.
    Und du musst diesen Code Über/unter den code der Class Form1 schreiben (was hoffentlich klar ist)

    VB.NET-Quellcode

    1. Imports System
    2. Imports System.IO '<-- Import von IO (damit man nicht immer IO. ... schreiben muss)
    3. Public Class Form1
    4. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    5. Using ofd As New OpenFileDialog <-- Deklinieren des neuen OpenFileDialogs
    6. ofd.Filter = "ZipFile|*.zip" <-- Filter , damit man nur .zip Dateien auswählen kann
    7. If ofd.ShowDialog = Windows.Forms.DialogResult.OK Then ' <-- abfrage ob im OpenfileDialog der Button "OK" gedrückt wurde
    8. Dim file As String = ofd.FileName '<-- file ist der Dateiname des .Zip-Archives
    9. Dim cu As New ClassUnzip(file, Path.Combine(Path.GetDirectoryName(file), "test_unzip_folder")) '<-- wieder file (s.o.) ; "test_unzip_folder" ist der name des Ordners, in dem die entpackten Dateien liegen (wenn das ausgewählte zip-Archiv auf der C:\-Festplatte lag , dann sieht der Pfad so aus ("C:\test_unzip_folder\"Der Name des .Zip-Archives"").
    10. AddHandler cu.UnzipFinishd, AddressOf Unziped
    11. cu.UnzipNow() '<-- Start des Entpackens
    12. End If
    13. End Using
    14. End Sub
    15. Private Sub Unziped()
    16. MessageBox.Show("Unzipping finished") '<-- wird angezeigt , wenn das Archiv entpackt wurde
    17. End Sub
    18. End Class



    So wie gesagt, der Code kommt von Hier.

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

    ok habe mir mal was überlegt ;)

    wollte es so machen das es 2 exen gibt, die 1. kopiert die 2. auf den pc in den ordner in dem dan auch die archive entpackt werden und startet die 2..
    die 2. exe ist dann die eigendliche setup datei :D

    habe jetzt folgende sachen erstmal in die 1. exe geschrieben:
    Try
    Directory.CreateDirectory(Application.StartupPath & "\Entpackte dateien\") '<-ich weiß das ich das anders machen muss wenn es auf eine dvd kommt ;)
    IO.File.Copy(System.Windows.Forms.Application.StartupPath & "\Setup2.exe", Application.StartupPath & "\Entpackte dateien\")
    Catch ex As Exception : End Try

    die exe erstellt zwar einen ordner, aber kopiert die exe 2 nicht??? die exe 2 liegt auch im gleichen ordner wie exe 1 ...was ist falsch oder was fehlt in dem code noch?

    GELÖST!:
    Try
    Directory.CreateDirectory(Application.StartupPath & "\Entpackte dateien\")
    Catch ex As Exception : End Try
    IO.File.Copy(System.Windows.Forms.Application.StartupPath & "\Setup2.exe", Application.StartupPath & "\Entpackte dateien\Setup2.exe")
    Process.Start(Application.StartupPath & "\Entpackte dateien\Setup2.exe")
    Close()

    jut das war das...jz soll die 2. exe archive erstmal entpacken können, da hab ich aber echt keine idee wie das gehen soll????? 8|

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