Dateien in die ExE einbinden -> Problem

  • Moin

    Ich wollte mal fragen, ob es eine andere Möglichkeit gibt Dateien in die ExE einzubinden als die folgende gibt:

    [autoit]

    FileInstall("source", "dest")

    [/autoit]

    Das Problem dabei ist, dass die Dateien ja beim Compilieren "eingepackt" werden. (in die ExE eingefügt) und beim Verwenden der ExE "ausgepackt" werden, wozu man aber dann ein eigenes Verzeichnis braucht. (z.b. man erstellt vorher einen tmp Ordner im Tmp-Bereich vom Sys).
    Dadurch sind die Dateien aber nicht direkt verfügbar und müssen entpackt werden, bevor sie verwendbar sind.
    Zudem muss der Ordner (der tmp-Ordner) noch gelöscht werden, was oft nicht mit dem gleichen skript funktioniert, weil das skript ja noch auf den ordner zugreift)

    Falls es etwas ähnliches noch nicht gibt gilt das hier als Vorschlag für eine Beta, um die Funktionsweise mal zu Testen.

    Zum "einfügen in die ExE"

    [autoit]

    $file1 = FileInclude("source")

    [/autoit]

    Zum Entpacken der Datei

    [autoit]

    FileExport($file1, "dest")

    [/autoit]

    Vorteil:
    Man kann die Datei OHNE sie zu Entpacken verwenden.
    (z.b. die Datei war eine Musikdatei im wav Format)

    [autoit]

    SoundPlay($file1, "1")

    [/autoit]

    Die Datei ist also in der konstanten $file1 gespeichert. Die konstante greift direkt in der ExE auf die Datei zu, ohne Temporäre ordner oder sonstiges.

    Wie gesagt. Wenn es sowas schon gibt, klärt mich bitte auf^^
    Wenns das noch nicht gibt bitte als Vorschlag werten... ;)

    mfg
    Marsi

  • Also ich verwende eigentlich in grösseren Scripten sehr oft "FileInstall"
    Das ganze sieht dann so aus.

    Spoiler anzeigen
    [autoit]

    FileInstall("libsnmp.dll", @TempDir&"\libsnmp.dll",1)

    [/autoit]


    und wenn ich mein Skript fertig abgearbeitet habe, oder einen Ende-Button klicke werden die
    Dateien wieder gelöscht.

    Spoiler anzeigen
    [autoit]

    FileDelete(@TempDir&"\libsnmp.dll")

    [/autoit]

    Das Skript was du gerade ausführst, wird ja nicht in Temp kopiert sondern liegt ja da wo du es startest.

    Also verstehe ich dein Problem nun net so richtig.

    MfG
    Der_Doc

  • Willkommen im Forum. :)

    Mir stellt sich die Frage warum kannst du dein Programm nicht sowieso gleich in mehrere Dateien aufteilen?
    Also z.B. im Skriptverzeichnis noch ein Ordner "Bitmaps" wo die Bilder drin liegen oder ähnliches?
    Dann braucht nichts entpackt zu werden und es steht sofort zur Verfügung.

    Eine andere Möglichkeit wurde >>Hier<< erläutert.

    Zudem muss der Ordner (der tmp-Ordner) noch gelöscht werden, was oft nicht mit dem gleichen skript funktioniert, weil das skript ja noch auf den ordner zugreift)

    Da kann FileInstall aber nichts dafür wenn du es versäumst alle FileHandles vor dem löschen korrekt zu schließen.