Announcement

Collapse
No announcement yet.

Dateien an eine EXE-Datei anhängen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Dateien an eine EXE-Datei anhängen

    hi leute...

    ich möchte eine art setupprogramme schreiben...

    das heißt:
    - es sollen an einer exe-datei mehrere dateien wie zum beispiel project1.exe, daten.txt, daten.db angehangen und wärend des ausführens der setup.exe in ein bestimmtes verzeichnis installiert werden...

    hat jemand schonmal sowas in der richtung gemacht?

    wie immer bin ich für jede hilfe dankbar....

    mfg
    ice

  • #2
    Ich habe sowas schon gemacht, allerdings zwar nicht für setup anwendungen, da es dafür eigentlich sehr viele bessere Lösungen gibt.
    Eine Möglichkeit ist es, die Dateien als Ressource einzubinden. Dafür musst du eine *.rc Datei erstellen, deren Inhalt etwa so aussieht:

    Name1 RC_DATA "Datei1"
    Name2 RC_DATA "Datei2"
    Name3 RC_DATA "Datei3"

    Anschließend kannst Du die Datei mit brcc32 in eine *.res Datei compilieren.

    Die *.Res datei bindest Du mit

    {$R ResDateiName.res}

    in den Quelltext ein. Im Programm kannst Du dann mit Streams drauf zugreifen:

    var
    RStream: TResourceStream;
    FStream: TFileStream;
    begin
    try
    RStream := TResourceStream.Create(hInstance,'ResourceName', 'RC_DATA');
    try
    FStream := TFileStream.Create('Zieldatei.Zielextension', fmCreate or fmShareExclusive);
    try
    FStream.CopyFrom(RStream,0);
    finally
    FStream.Free;
    end;
    finally
    RStream.Free;
    end;
    except
    end

    Comment


    • #3
      Die Alternative wäre, die Dateien "von Hand" aneinanderzuhängen, also:

      1. Öffne neue (leere) untypisierte Datei SETUP.EXE,

      2. Schreibe byteweise erste Datei hinein (BLOCKWRITE),

      3. Schreibe einige unmissverständliche Bytes als Kennung des Dateiendes,

      4. Schreibe byteweise zweite Datei etc., bis alle "drin" sind.

      Die erste Datei enthält dabei das eigentliche Setup. Sie wird gestartet und kann dann sich selbst (wiederum byteweise als untypisierte Datei) auslesen und die anderen Dateien als einzelne Files abspeichern, indem mit BLOCKREAD immer bis zu der unter 3. genannten Kennung gelesen wird.

      Ich stimme allerdings Falk zu, dass es für ein Setup elegantere Lösungen gibt, z.B. InnoSetup oder einfach ein selbstentpackendes Zip-Archiv. Ich für mein Teil habe eine grafische Präsentation bestimmter Daten realisiert, die eben in bestimmten Fällen ihre eigenen Daten und Konfigurationseinstellungen in der Exe-Datei "mitbringen" muss. Der Nutzer sollte imstande sein, eine solche "Exe mit Daten und Einstellungen" selbst zu erzeugen. Dafür war die Methode ganz hilfreich.

      Gruß,

      Stefa

      Comment


      • #4
        Wie muss ich das Ende der ersten Datei kennzeichnen? Welche unmissverständlichen Bytes sind das

        Comment

        Working...
        X