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

Double-Backslash für INI-Dateien


4 replies to this topic

raigoi

raigoi
  • Members
  • 3 posts

Posted 04 February 2003 - 16:34

Hallo,
ich habe folgendes Problem :
In INSTALLDIR ist z.B. C:\PROG\ eingetragen. Ich kann hier kein \\ zuweisen. Ich benötige dies aber, da ich für meine INI-Datei folgenden Pfad benötige :

C:\\PROG\\IRGENDEIN\\PFAD\\

[INSTALLDIR]IRGENDEIN\\PFAD\\ funktioniert nicht, da ja INSTALLDIR mit C:\PROG\ ausgewertet wird.

Kann ich INSTALLDIR ein Double-Backslash zuweisen ?
Alternativ:
Einer String-Variablen kann ich ja ein Double-Backslash zuweisen (Pfadtest="C:\\PROG\\"). Wie kann ich diese Variable für die INI-Datei-Pfadangabe weitergeben und entsprechend auswerten ?

Schönen Dank !

wernerf

wernerf
  • Members
  • 22 posts

Posted 07 February 2003 - 11:43

Ich hoffe, Du bist Dir der Tatsache bewusst, dass die String-Konstante  "\\" in InstallScript genau wie in C(++) eine sog. "Escape Sequence" ist und lediglich eine Notation für ein EINZELNEN Backslash darstellt. D.h., die Zuweisung
  Var = "C:\\Pfad\\";
weist der Variablen das Verzeichnis C:\Pfad\ zu. Und INSTALLDIR sollte immer auf ein gültiges Verzeichnis verweisen; zwar ignorieren manche Betriebssysteme (wie etwa Unix/Linux) mehrfache Verzeichnistrenner (z.B. ist ///dos//C:///Pfad äquivalent zu /dos/C:/Pfad), aber warum sollte jemand wollen, dass INSTALLDIR doppelte Trenner beinhaltet?

wernerf

wernerf
  • Members
  • 22 posts

Posted 07 February 2003 - 11:46

Pardon, habe noch folgendes vergessen: Um eine Zeichenkette wie C:\\IRGENDEIN\\PFAD\\ zu generieren, muss man lediglich jedes \ verdoppeln:
 STRING szVerz = "C:\\\\IRGENDEIN\\\\PFAD\\\\";
Dieser String kann dann natürlich auch in eine INI.Datei gechrieben werden.

raigoi

raigoi
  • Members
  • 3 posts

Posted 10 February 2003 - 14:46

Hallo wernerf,

schönen Dank für Deine Antwort. Mit dem \\ ist mir schon klar. Ich versuche mein Problem genauer zu beschreiben :
Durch mein Script (Funktion SdAskDestPath) kann der Benutzer seinen Installationspfad wählen. Das Ergebnis (z.B. F:\PROG) habe ich einer Variable (szDir), die ich INSTALLDIR zuweise. Jetzt füge ich \\ in die Variable ein (szDir hat jetzt den Wert F:\\PROG).
Unter Systemkonfiguration->INI-Datei-Änderung habe ich mehre Schlüsselwerte, deren Datenwert sich aus dem Installationspfad und einem festen Teil zusammensetzt. Hier ist es zwingend, dass \\ verwendet wird. Meine Vorstellung war, ich kann bei Datenwert => [szDir]\\AAA\\BBB eintragen und das Ergebnis ist
F.\\PROG\\AAA\\BBB
Leider ist das Ergebnis
\\AAA\\BBB
(szDir wird nicht ausgewertet)
Mache ich hier was mit der Syntax falsch ?

Michael Panzlaff

Michael Panzlaff
  • Members
  • 37 posts

Posted 11 February 2003 - 09:56

[szDir] könnte ( auf Grund der Schreibweise ) ein "privates" Property sein - keine ahnung ob die Werte zwischen Scriptengine und MSI erhalten bleiben bzw bekannt sein.
viel schlimmer: eine simple Variablenzuweisung geht nicht - ( wie gesagt: Property) - du must  schon ein MSISetProperty() machen - dan kappts auch mit dem Pfad.

gruß,
micha