Wie kopiere ich einen Ordner bei der Installation?

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von lasse.

    Wie kopiere ich einen Ordner bei der Installation?

    Hallo zusammen,

    ich greife bei meinem Programm auf einen Ordner zurück den ich in den eigenen Dateien gespeichert habe.
    Zum Beispiel so:

    VB.NET-Quellcode

    1. Dim eigenedateien As String = My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\Programmname\Unterordner\"
    2. Dim AntwortMulti As New IO.StreamReader(eigenedateien & "\" & 1 & ".txt")


    Wie bekomme ich den Ordner mit allen Unterordnern nun in eine Installationsroutine eingebaut, damit mein Programm auch auf anderen Computern laufen kann? Ich habe es mit InnoSetup versucht, aber irgendwie finde ich hier nur die Möglichkeit einzelne Files hinzuzufügen und die wären dann ja auf einem anderen Rechner auch nicht unter den eigenen Dateien gespeichert, richtig?

    Kann mir jemand helfen und sagen, wie ich das ganze hinbekomme? Ich würde mein Programm auch gerne NUR mit CD laufen lassen, also eine Ausführung ohne CD nicht möglich machen.

    Vielen Dank!
    Hey,

    zum Thema CD: Ist dein Programm also dann auf der CD vorhanden und Benutzereinstellungen etc. werden unter "Eigene Dateien" gespeichert? Dann kannst du mit "Application StartUpPath" den Pfad zu deinem Programm ermitteln und dann überprüfen, ob das Laufwerk ein CD-Laufwerk ist. Wenn nicht -> Programm beenden.

    Zum Thema Setup: In Inno Setup kannst du, wenn ich mich nicht irre, deine Dateien auch in die Eigenen Dateien kopieren. Schau dir mal die Dokumentation von Inno Setup an.

    Gruß, Manschula
    Hi Manschula,

    vielen Dank für deine Antwort. Ja genau so hatte ich das geplant. Das Programm soll auf einer CD sein und man soll Vokabeln hinzufügen können, dafür habe ich auch eine Form, die dann neue Vokabeln in das Verzeichnis bei den eigenen Dateien kopiert. Problem ist nur: Wie bekomme ich den Ordner mit dem bereits vorhandenen Vokabel-Stamm automatisch in die eigenen Dateien kopiert?

    Und wie genau muss ich das mit "Application StartUpPath" machen? Das klingt ja genau nach der Lösung für mein Problem!
    oder wäre es sinnvoll den Vokabel-Stamm einfach mit auf der CD zu lassen? Dann liefe das Programm ja auch nur mit der Programm-CD, richtig? Nur wie kann ich dann den Stream-Reader-Pfad so ändern, dass auf die CD bzw. Ordner auf der CD zugegriffen werden können?
    Vielen Dank für deine Hilfe!!!
    Hey,

    natürlich kannst du deine Vokabeln auch auf der CD belassen. Du musst nur deinen Streamreader mit Hilfe von "Application.StartupPath" anpassen.

    So überprüfst du, ob dein Programm von einer CD gestartet wird; wenn nicht, wird es beendet:

    VB.NET-Quellcode

    1. ' Pfad zu deinem Programm ermitteln:
    2. Dim pfad As String = Application.StartupPath
    3. ' Typ des Laufwerks ermitteln:
    4. Dim laufwerk As New System.IO.DriveInfo(pfad)
    5. If laufwerk.DriveType = IO.DriveType.CDRom Then
    6. ' Dein Programm wird von einer CD gestartet, also nichts machen
    7. MsgBox("Dein Programm wird von einer CD-ROM gestartet")
    8. Else
    9. ' Dein Programm wird nicht von einer CD gestartet, also beenden
    10. Application.Exit()
    11. End If

    Eventuell hilft dir das ja weiter.

    Gruß, Manschula
    SUPER! Das klappt perfekt, habs direkt mal getestet!! :)

    Kannst du mir dann vielleicht nur noch sagen, wie ich den Pfad vom StreamReader abändern muss?

    Also ich müsste doch wahrscheinlich nur das "MyDocuments" ersetzen oder? Wie wären denn der Befehl um auf der CD zu suchen?
    Wäre dir echt dankbar!!

    VB.NET-Quellcode

    1. Dim eigenedateien As String = My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\Programmname\Unterordner\"
    2. Dim AntwortMulti As New IO.StreamReader(eigenedateien & "\" & 1 & ".txt")
    Hey,

    lies dir meinen letzten Beitrag noch einmal durch. Der Schlüssel zum Erfolg liegt bei dir im "Application.StartupPath". Sie gibt dir den Pfad zu deinem Programm als String zurück, egal ob es auf einer CD liegt, oder irgendwo auf der Festplatte.

    Und das "My.Computer.FileSystem.SpecialDirectories.MyDocuments" fällt dann ja weg... also ;) ....

    Gruß, Manschula
    hmm...also müsste ich bei der Form, bei der ich bisher den Code wie gezeigt benutzt habe, ungefähr so ändern?

    VB.NET-Quellcode

    1. 'pfad bestimmen
    2. Dim pfad As String = Application.StartupPath
    3. Dim eigenedateien As String = pfad & "\Programmname\Unterordner\"
    4. Dim AntwortMulti As New IO.StreamReader(eigenedateien & "\" & 1 & ".txt")


    Das müsste es dann sein oder? :)

    Vielen Dank!
    Genau. So wäre es dann richtig :)

    Sicherer und schöner (weil kürzer) wäre es aber so:

    VB.NET-Quellcode

    1. Dim eigene_dateien As String = IO.Path.Combine(Application.StartupPath, "Programmname\Unterordner\")
    2. Dim AntwortMulti As New IO.StreamReader(IO.Path.Combine(eigene_dateien, 1 & ".txt"))

    Das "IO.Path.Combine" stellt sicher, dass der Pfad auch richtig zusammengesetzt wird, und kein "\" oder ähnliches vergessen wird.

    Gruß, Manschula