Dateien in Programm integrieren, bei Programmstart in verzeichnis entpacken

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Fortender.

    Dateien in Programm integrieren, bei Programmstart in verzeichnis entpacken

    Hallo Liebe Community,

    ich bin neu im Bereich Visual Basic (2 Tage) und bin schon auf eine erste Hürde gestossen die ein "einfaches" Script Programm beherrscht, das "mächtige" VB aber anscheinend nicht, und zwar arbeite ich im Moment an einer Art Rechenprogramm das bei uns auf Arbeit bestimmte Preise ausrechnen kann/soll. Bisher habe ich viel mit AutoIT gearbeitet, jedoch haben mich einige Kollegen dazuz gedrängt doch mal VB zu versuchen, weil es ja soooo toll sei ^^ Aber einige Stunden Google suche haben mir nicht geholfen, Das programm soll nicht extra Installiert werden müssen, insbesondere weil nur 2 Dateien mitgeliefert werden müssen, und ich will nun diese 2 Dateien mit in die .exe integrieren welche dann sobald sie startet die 2 in ein bestimmtes Verzeichnis entpacken soll so das sie dem Programm zur verfügung stehen. Bei AutoIT ist das das einfachste auf der Welt :

    FileInstall("PfadWoDieDateiGradeIst", "PfadWoDieDateiHinSoll")

    Aber nach wie schon gesagt mehreren Stunden Googeln bin ich immer noch auf keine Lösung gestossen, kann es Tatsächlich sein das VB zu so einer Simplen Aufgabe nicht imstande ist ? Sollte ich wohl doch lieber zur Scriptsprache AutoIT zurückkehren welche diese sache aus dem FF beherrscht ? Oder gibt es einen Weg das zu tun, ich meine immerhin ist VB eine "richtige" Programmiersprache da sollte sowas doch drin sein oder ? Ich hoffe ihr könnt mir helfen =)

    MfG AsusDK
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If
    vb.net - Programme bestehen immer aus mehreren Dateien. Man hat sie in einem Ordner, und eine der Dateien darin ist die .Exe.
    Von der Exe kannst du eine Verknüpfung erstellen, mit Windows-Bordmitteln.
    Diese Verknüpfung kannst du hinkopieren wo wolle.

    (Natürlich gibts auch tricks, die ein vb.net-Proggi vlt in weniger Dateien stopfen oder gar in nur eine. Aber ich sehe keinen Vorteil darin - scheint mir nur für solche Leute nützlich, die noch nicht gelernt haben, mit Windows eine Verknüpfung zu erstellen.)
    Ich weiss natürlich wie man eine erstellt ^^ das Problem sind eher die Leute bei uns die gerade mal wissen wie man ihre Tastatur bedient ;)

    Da es sich bei den beiden Files "GottseiDank" um inifiles Handelt hab ichs folgendermaßen gelößt, beispiel :

    VB.NET-Quellcode

    1. If Not IO.Directory.Exists("C:\MK\IFR") Then
    2. System.IO.Directory.CreateDirectory("C:\MK\IFR")
    3. INI.WertSchreiben("KM-Preis", "Wert", "1,70")
    4. INI.WertSchreiben("STD-Preis", "Wert", "26,00")
    5. End If



    Die inis (in dem Fall nur eine Davon^^) werden einfach beim ersten Start manuell erstellt, somit wäre das Problem umgangen, schade find ich es dennoch da ich es mittlerweile bei jeder art von Programm das ich schrieb gewohnt war einfach alles mit "einpacken" zu können was ich wollte ^^ aber Wurscht sind meine Programme zukünftig halt nicht mehr so praktisch in einer Datei ^^
    Trotzdem Danke für die schnelle Antwort, ich brauch deine/eure Hilfe höchstwahrscheinlich noch wesentlich öfter da VB meinen Horizont bisher bei weitem übersteigt xD

    MfG AsusDK
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If
    Über die Projekteigenschaften kannst du die Dateien die du mitliefern willst als Resource einbinden.
    Diese kannst du dann beim Laden der Form so wieder schreiben:

    VB.NET-Quellcode

    1. Dim fileResourcePairs As New List(Of KeyValuePair(Of FileInfo, Byte())) From {New KeyValuePair(Of FileInfo, Byte())(New FileInfo("Res1.ini"), My.Resources.Resource1), _
    2. New KeyValuePair(Of FileInfo, Byte())(New FileInfo("Res2.ini"), My.Resources.Resource2)}
    3. For Each pair In fileResourcePairs
    4. If pair.Key.Exists Then pair.Key.Delete()
    5. Using wrStream = pair.Key.Create
    6. wrStream.Write(pair.Value, 0, pair.Value.Length)
    7. wrStream.Close()
    8. End Using
    9. Next


    Ich hab das jetzt absichtlich so gelöst, da es ja auch sein könnte, dass man mehrere Dateien da drin hat, und da fände ich es gut, das mit ner Schleife zu lösen.
    Um jeder zu erstellenden Datei auch den Inhalt in Form einer My.Resources.Resource zuweisen zu können, dachte ich mir ich benutze KeyValuePair auch wenn
    ich das sonst mit einer eigenen kleinen Klasse lösen würde.

    MfG Tim

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