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

INSTALLDIR wird nur teilweise übergeben


5 replies to this topic

Mandragor

Mandragor
  • Full Members
  • 5 posts

Posted 21 March 2007 - 09:25

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:
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.


Mandragor

Mandragor
  • Full Members
  • 5 posts

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

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 21 March 2007 - 18:36

Versuch doch mal den Pfad in Anführungszeichen einzuschließen bevor du ihn übergibst.

Mandragor

Mandragor
  • Full Members
  • 5 posts

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.


Mandragor

Mandragor
  • Full Members
  • 5 posts

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

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 24 March 2007 - 17:43

LongPathToQuote() wäre auch eine Möglichkeit.