Editieren von .ini - Dateien
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
Posted 30 October 2003 - 13:01
Sonst einfach die Onlinehilfe durchstöbern ... oder halt hier fragen
Thomas
Posted 30 October 2003 - 16:13
aber als absoluter neueinsteiger weiß ich ehrlich gesagt nicht, ob ich da mit meinen projekteinstellungen dann richtig liege [Basic MSI Projekt]...
gruß
Posted 31 October 2003 - 10:54
Stefan Krüger
InstallSite.org twitter facebook
Posted 31 October 2003 - 13:07
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 ?
Posted 31 October 2003 - 15:37
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.
Posted 31 October 2003 - 16:30
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.
Thomas
Posted 31 October 2003 - 17:01
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
Posted 31 October 2003 - 17:45
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 ?
Posted 01 November 2003 - 11:14
Stefan Krüger
InstallSite.org twitter facebook
Posted 03 November 2003 - 11:06
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
ich hoffe, mir kann hier jemand behilflich sein ...
danke schonmal im voraus !
carsten
Posted 03 November 2003 - 12:16
Ausserdem muss bei eine Pfadangabe als String-Konstante der doppelte Backslash verwendet werden:
WriteProfString("C:\\Programme\\irgendwas\\test.ini", "Remote", "System",svEdit1_IP1);
Stefan Krüger
InstallSite.org twitter facebook
Posted 03 November 2003 - 12:35
darauf wär ich auch nicht so schnell gekommen,....
jetzt funktionierts, vielen dank !!!!!
Posted 03 November 2003 - 15:47
Aber der Compiler kümmert sich halt nicht um das, was als String drin steht
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); |
Thomas