Jump to content


This is a ready-only archive of the InstallSite Forum. You cannot post any new content here. / Dies ist ein Archiv des InstallSite Forums. Hier können keine neuen Beiträge veröffentlicht werden.
Photo

Editieren von .ini - Dateien


14 replies to this topic

calu

calu
  • Members
  • 45 posts

Posted 30 October 2003 - 11:04


hallo,

ich habe noch das problem, dass ich während der installationsroutine dialoggesteuert einträge in .ini - dateien (schon vorhanden) editieren muss.
konkret geht es darum, dass der anwender bei der installation in einem edit einen wert eingibt, der dann einen bereits vorhandenen key in einer .ini-file ersetzen muss

welche ist die einfachste methode dies zu tun ?


vielem dank, gruß carsten

Perotin

Perotin
  • Full Members
  • 407 posts

Posted 30 October 2003 - 13:01

Gibt's noch WriteProfString( file, section, variable, value) ?
Sonst einfach die Onlinehilfe durchstöbern ... oder halt hier fragen wink.gif
Gruß / regards
Thomas

calu

calu
  • Members
  • 45 posts

Posted 30 October 2003 - 16:13

writeProfString gibts noch,...

aber als absoluter neueinsteiger weiß ich ehrlich gesagt nicht, ob ich da mit meinen projekteinstellungen dann richtig liege [Basic MSI Projekt]...


gruß



Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 31 October 2003 - 10:54

Basic MSI? Dann arbeitest du sicher nicht mit InstallShield Professional. Bitte poste deine Frage nochmal im entsprechenden Windows Installer (MSI) forum.

calu

calu
  • Members
  • 45 posts

Posted 31 October 2003 - 13:07

richtig, sorry - war in gedanken bei der falschen version.
bei 6.3 istsn bissel anders, das hat ich nicht beachtet - die version 6.3 ist aber die mit der ich arbeite, also...

gibts es beim editieren von inifiles irgendetwas zu beachten - ws ist mit dieser cache-leerung. wichtig oder nicht ?

calu

calu
  • Members
  • 45 posts

Posted 31 October 2003 - 15:37

Also, ich habe versucht das umzusetzen, scheitere aber an der übergabe des variableninhalts in die funktion writeprofstring.

es wird die IP im Dialog eingegeben, in die variable svEdit1_IP geschrieben.
der Kompiler meldet keine Fehler.

Wie kann ich der Fkt WriteProfString den Inhalt der svEdit1_IP übergeben ?

Nachfolgend mal der entsprechende Teil des Scriptes:

<snip>
Dlg_SdShowDlgEdit1:
szTitle = "";
szMsg = "IP-Adresse eingeben. Nach Muster: 255.255.255.255";
szField1 = "IP:";
nResult = SdShowDlgEdit1 (szTitle, szMsg, szField1, svEdit1_IP);
if (nResult = BACK) goto Dlg_SdAskDestPath;
if (nResult = NEXT) then WriteProfString("c:\\direkt.ini", "Remote", "System", svEdit1_IP);
endif;
WriteProfString("", "", "","");

</snip>

danke schon mal im voraus,
carsten

Edited by calu, 31 October 2003 - 16:21.


Perotin

Perotin
  • Full Members
  • 407 posts

Posted 31 October 2003 - 16:30

OK, schon mal nen Schritt weiter ...
Das Script sieht eigentlich auch ganz gut aus ...

Aus der Doku (zu IS 5.x, sollte bei IS 6.x nicht viel anders sein)
QUOTE

szValue

Geben Sie den Wert an, der in die .ini-Datei geschrieben werden soll. Wenn Sie einen zeichenlosen String eingeben, wird der Eintrag in szKeyName gelöscht. Wenn der Parameter szValue gelöscht werden, der Schlüsseleintrag jedoch erhalten bleiben soll, verwenden Sie hier einen String mit einem Leerzeichen.



Kann es sein, dass svEdit1_IP leer ist ???
Kannst Du vor dem Dialog mal ne Initialisierung der Stringvariable machen (zB auf "255.255.255.255")?

btw: unter IS 5.1 funktioniert Dein Script ...

Edited by Perotin, 31 October 2003 - 16:43.

Gruß / regards
Thomas

calu

calu
  • Members
  • 45 posts

Posted 31 October 2003 - 17:01

ES FUNKTIONIERT !!!


du hattest recht !
die variable war tatsächlich leer. ich habe sie mit 255.255.255.255 initialisiert...

das wird jetzt im edit angezeigt, wenn ichs dann im dialog ändere, wird der richtige wert in die .ini übernommen...

danke für den tipp...
bin jetzt einen riesen schritt weiter.

gruß carsten

calu

calu
  • Members
  • 45 posts

Posted 31 October 2003 - 17:45

naja, das nächste problem lässt schon auf sich warten....

die .ini wird ja aufgrund meines WriteProfString-Befehls erstellt...
ich will aber eine vorhandene Editieren...
Jetzt muss ich herausfinden, wo und wann die bereits vorhandene .ini ins Zielverzeichnis kopiet wird und muss diese DANACH editieren...

bloß an welcher stelle ?

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 01 November 2003 - 11:14

Da bietet sich der OnMoved Event Handler an. Aber Achtung: if-Statement verwenden, damit du den Wert nicht auch bei der Deinstallation (also nach dem Löschen der Datei) schreibst. Besser wäre vielleicht OnInstalled event der entsprechenden Komponente.

calu

calu
  • Members
  • 45 posts

Posted 03 November 2003 - 11:06

danke für den hinweis!

hab das jetzt mal versucht umzusetzen, aber die .ini wird nicht geändert. möglicherweise liegt es daran, dass die fkt gar nicht ausgeführt wird...(?)

nachfolgend mal ein ausschnitt des scripts. ich denke, das der fehler trivial ist, aber ich komme einfach nicht drauf...

<snip>
//Globale Variablen
string svEdit1_IP1;

//Funktionen
function OnFirstUIBefore()

svEdit1_IP1 = "255.255.255.255"; //Initialisieren
Dlg_SdShowDlgEditUNC: //Fkt zum "Befüllen" der Variablen
...
nResult = SdShowDlgEdit1 (szTitle, szMsg, szField1, svEdit1_IP1);

function OnMoving()
...

function OnMoved()

begin
if !MAINTENANCE then

WriteProfString("C:\Programme\irgendwas\test.ini", "Remote", "System",svEdit1_IP1);

WriteProfString("", "", "","");

endif;


end;

</snip>


die darstellung ist etwas unglücklich, man möge mir dies verzeihen wink.gif

ich hoffe, mir kann hier jemand behilflich sein ...

danke schonmal im voraus !

carsten

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 03 November 2003 - 12:16

Lass doch mal die Variable svEdit1_IP1 in einer MessageBox anzeigen.
Ausserdem muss bei eine Pfadangabe als String-Konstante der doppelte Backslash verwendet werden:
WriteProfString("C:\\Programme\\irgendwas\\test.ini", "Remote", "System",svEdit1_IP1);


calu

calu
  • Members
  • 45 posts

Posted 03 November 2003 - 12:35

klar, der doppelte Backslash wars.... rolleyes.gif

darauf wär ich auch nicht so schnell gekommen,....

jetzt funktionierts, vielen dank !!!!!

Perotin

Perotin
  • Full Members
  • 407 posts

Posted 03 November 2003 - 15:47

Tjaja ... meistens sind es Kleinigkeiten, die einem den Tag schwer machen.
Aber der Compiler kümmert sich halt nicht um das, was als String drin steht sad.gif
Mit dem ^ Zeichen bist Du meist besser dran. Das verküpft die Pfadteile so, dass immer die richtige Anzahl Backslashes verwendet werden, zB
CODE
WriteProfString(TARGETDIR^"test.ini", "Remote", "System",svEdit1_IP1);


Gruß / regards
Thomas

calu

calu
  • Members
  • 45 posts

Posted 04 November 2003 - 10:37

danke !

das ist ne richtig saubere lösung...