Hi,
ich habe in einem BasicMSI Projekt ein InstallScript geschrieben welches eine externe Batchdatei aufruft und an diese den INSTALLDIR Pfad übergibt. Bei Verzeichnissen ohne Leerzeichen klappt das auch wunderbar, aber bei Verzeichnissen mit Leerzeichen tritt ein Fahler auf. Wenn ich also z.B. nach "Program Files" installiere steht in %1 scheinbar nur "Program" drinnen. Ist dies ein bekannter Fehler? Gibt es einen Workaround? Hat jemand einen Tipp für mich?
InstallScript:
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.

INSTALLDIR wird nur teilweise übergeben
Started by
Mandragor
, Mar 21 2007 09:25
5 replies to this topic
Posted 21 March 2007 - 09:25
QUOTE |
function myInstall(hMSI) number myResult; begin myResult = LaunchAppAndWait(SRCDIR ^ "userdata.bat", INSTALLDIR,LAAW_OPTION_WAIT|LAAW_OPTION_HIDDEN); if (myResult < 0) then MessageBox ( "couldn't find userdata.bat", WARNING); endif; end; |
Batchdatei:
QUOTE |
mkdir "%1\dummy" |
Thanks in advance
Mandragor
Edited by Mandragor, 21 March 2007 - 09:27.
Posted 21 March 2007 - 16:02
Habe nun herausgefunden, dass der Pfad als mehrere Parameter übergeben wird sobald er Leerzeichen enthält. Hat da evtl. wer nen Tipp wie ich das umgehen kann? Ansonsten muss ich mir nun eine Batchdatei schreiben welche die Parameter wieder zu einem Pfad zusammen setzt, was dann leider auch nur bis zu max. 8 Leerzeichen im Pfad funktioniert aufgrund der Limitierung von %1-%9.
Cheers
Mandragor
Cheers
Mandragor
Posted 21 March 2007 - 18:36
Versuch doch mal den Pfad in Anführungszeichen einzuschließen bevor du ihn übergibst.
Stefan Krüger
InstallSite.org twitter facebook
Posted 22 March 2007 - 08:41
QUOTE |
function myInstall(hMSI) number myResult; begin myResult = LaunchAppAndWait(SRCDIR ^ "userdata.bat", "INSTALLDIR",LAAW_OPTION_WAIT|LAAW_OPTION_HIDDEN); if (myResult < 0) then MessageBox ( "couldn't find userdata.bat", WARNING); endif; end; |
Wenn ich den Pfad in Anführungszeichen setze zum übergeben, wird er als String "INSTALLDIR" übergeben und nicht als der eigentlich Wert (Pfad). Ich habe es auch schon mit [] und <> versucht was allerdings beides zu Fehler beim erzeugen des Installers führt. Dies scheint ein Fheler/Problem von InstallShield zu sein, denn vond er Komandozeile lassen sich in Anführungszeichen eingeschlossene Werte die Leerzeichen enthalten wunderbar übergeben.
Bin um jeden weiteren Tip dankbar
Mandragor
Edited by Mandragor, 22 March 2007 - 08:41.
Posted 22 March 2007 - 10:23
QUOTE |
function myInstall(hMSI) number myResult; begin myResult = LaunchAppAndWait(SRCDIR ^ "userdata.bat", "\""+INSTALLDIR+"\"",LAAW_OPTION_WAIT|LAAW_OPTION_HIDDEN); if (myResult < 0) then MessageBox ( "couldn't find userdata.bat", WARNING); endif; end; |
Nach dem Escapen der Hochkommas klappt es nun. Danke für den Schubs in die richtige Richtung.
Cheers
Mandragor
Posted 24 March 2007 - 17:43
LongPathToQuote() wäre auch eine Möglichkeit.
Stefan Krüger
InstallSite.org twitter facebook