Änderungen einer .ini Datei vor einer portablen App neu Includen

  • Wie kann ich z.B. eine .ini Datei, wo sich Dateneinträge geändert haben bei einer portablen App (nicht fest installiert) neu includen, bevor die App sich schliesst?

    Danke für eure Hife.

  • Du könntest Dein eigenes Programm zur Laufzeit neu kompilieren. Dann natürlich mit der neuen INI als Fileinstall drin.
    Aber ob das der richtige Weg ist, bleibt mal noch offen.

    Weiter kannst Du, wenn Du durchgehend das NTFS Dateisystem nutzt, die Datei in einen Alternativen Datenstrom der Exe Datei includen.
    Ich mache das gelegentlich mit Lizenzen. Aber sobald Du die Exe Datei auf einen Nicht-NTFS Datenträger kopierst (USB-Stick, externe HDD, Webserver....) dann geht der alternative Datenstrom verloren.

    Ist also keine wirklich elegante und zukunftssichere Lösung!

    Aber es stellt sich die Frage, warum Du die Datei wieder in die Exe reinbringen möchtest.
    Kannst Du Deine Einstellungen nicht in der INI-Datei lassen oder in die Registry eintragen?

    Veronesi

    2 Mal editiert, zuletzt von veronesi (30. Januar 2013 um 08:56)

  • Jup, hast recht hatte das jetzt verwechselt ... wie meinste das mit der ini funktion? mache dies moementan mit fileinstall... :( ?


    Ist eine Möglichkeit darf aber nur installiert werden wenn noch nicht vorhandensons werden beim nächsten Programmstart die Änderungen an der INI wieder überschrieben.
    Ich meinte die INI-Funktionen:

    [autoit]

    IniRead
    IniReadSection
    IniReadSectionNames
    IniWrite
    ;etc

    [/autoit]

    mfg autoBert

  • Also ich versteh ihn so, dass er ein portables Programm schreibt, dass er mit einer einzigen exe handlen möchte. Aber vermutlich gibt es Usereinstellungen, die er natürlich auch für den nächsten Programmstart speichern möchte.
    Also möchte er jedesmal (momentan per FileInstall) die .ini (Settings.ini) irgendwo ablegen und während das Script läuft, kann es dort verwendet werden und wenn das Script beendet wird, sollen die Einstellungen (Settings.ini) wieder ins Script geschrieben werden, so das beim neuen ausführen diese - aktuelle - vorhanden ist.

    Momentan fällt mir nur ein die .au3 des Scripts auch per FileInstall einzubinden und dann diese beim schließen mit der neuen Settings.ini zu kompilieren. Ist aber fehleranfällig und langsam.

    Ich bin nachher zu Hause und werde mal versuchen eine bessere Methode zu finden, da ich das eventuell auch gebrauchen kann ;)

    Da es hier doch einige falsch machen:

    Zitat von einem User dieses Forums

    Die Standard-Standart eines Flamingos ist einbeinig. ;)

    • Offizieller Beitrag

    Ich verstehe den Sinn des Ganzen nicht. Warum speicherst Du die Inidatei nicht im Scriptverzeichnis (wenn das Script auf dem USB-Stick liegt, dann ist das Scriptverzeichnis doch automatisch auch auf dem USB-Stick).
    So machen das doch die ganzen portablen Tools. Jedenfalls alle, die ich kenne. :rolleyes:

  • Ist das echt störend, wenn dann eine einzige Settingsdatei dabei ist?
    Übrigens ist das mit dem neu kompilieren doch komplizierter als ich dachte und während das Programm läuft hättest du sogar noch mehr Dateien, als wenn du nur eine Settingsdatei anlegst, die dann dauerhaft dabei ist.

    Da es hier doch einige falsch machen:

    Zitat von einem User dieses Forums

    Die Standard-Standart eines Flamingos ist einbeinig. ;)

    Einmal editiert, zuletzt von Joriktos (31. Januar 2013 um 13:50)

  • Also scheint es irgendwie nicht möglich zu sein, wenn von den grossen Programmierern auch keiner nen Rat hat... was könnte man als Alternative effektiv anwenden?


    Wenn das ganze eine portable App bleiben soll nichts. Wenn der DAU die Anwendung wo anders hin kopiert muss er auch die INI mit kopieren, ansonsten hat er eine jungfräuliche Anwendung. Natürlich musst du dafür sorgen dass die INI nur installiert wird wenn sie noch nicht vorhanden ist!

    mfg autoBert

  • Du kannst die Daten auch ans Ende deiner .exe schreiben. Alles was nach der angegebenen Länge, die im Header steht, wird ingoriert bei der Ausführung. Du musst nur wissen, wo du es hinschreiben musst. Also einmal vorher die Größe der .exe ermitteln. Und beim nächsten mal Musst du natürlich wissen wo die Daten stehen. Also würde ich zum Schluss noch die Länge der Daten reinschreiben, z.B. in 4 Bytes oder so.

  • Zur Laufzeit kann man aber die Script.exe nicht manipulieren meines Wissens nach. Man müsste also mit einer includierten hilfs.exe arbeiten die dann das Hauptscript beendet, manipuliert und sich selbst wieder aufräumt/löscht. Dabei kommen einem dann noch diverse Virenscanner in die Quere, die bei mir teilweise selbst schon beim normalen Kompilieren meckern wenn die Ressource Felder der exe Datei gesetzt werden sollen.

    Sinn macht das vorgehen meiner Meinung nach sowieso nicht. Ini Dateien wurden schließlich erfunden, damit man Programmeinstellungen eben nicht in einer Computer gebundenen Registry oder gar in der exe selbst speichern muss. Wo sollte auch das Problem liegen wenn man exe und ini zusammen auf das andere Zielsystem kopieren muss? Jede portable Anwendung arbeitet so.