NSIS Setuperstellung - CreateProcess



  • Hallo zusammen,

    ich hab schon wieder ein Problem und komm garnicht drauf klar. Wir benutzen NSIS um Setup zu erstellen. Einem Script kann man dann Parameter übergeben.

    In der Console klappt es wunderbar:
    makensis.exe /DVariable1=test1.uhu NSI-File.nsi

    So jetzt möchte ich das ganze von meinem MFC Programm ausführen.

    Daszu verwende ich CreateProzess. Problem ist jetzt bei der Commandozeile:

    CString Commandline = _T("/DVariable1=test1.uhu ") +  NSISTemplatePath; // commandozeilenparameter, zuerst den parameter dann das file. das file ruft er richtig auf nur die variable erkennt er beim compilieren nicht
    LPWSTR test = strCommandline.GetBuffer();
    
    CreateProcess((strNsisPath).GetBuffer(), test ,NULL, NULL, TRUE, 0, NULL, NULL, &info, &processInfo)
    

    Das geht einfach nicht er erkennt die Variable nicht. Da ich eh 2 Variablen übergeben muss hab ich ein bisschen rumprobiert:

    CString Commandline = _T("/DVariable1=test1.uhu /DVariable2=test2") +  NSISTemplatePath;  // hier erkennt er nur die Variable2
    

    und

    CString Commandline = _T("/ /DVariable1=test1.uhu /DVariable2=test2") +  NSISTemplatePath;  // das geht, aber warum muss ich ein "/" davor setzen?? irgendwas stimmt doch nciht
    

    Ich hoffe ihr versteht was meine Frage ist, denn ich komm nicht mehr weiter.

    Vielen Dank für eure Hilfe



  • Ich habe gerade eben noch ein von mir geschriebenes Programm getestet. Auch hier ist das gleiche Problem.

    Den ersten Parameter in der Commandline nimmt er einfach nicht. Wenn ich zu begin en "/ " und ein Leerzeichen danach voranstelle, dann funktioniert es.

    Kann mir jemand sagen wo hier der Fehler liegt? Gehört da normal noch ein anderer Parameter hin?



  • Hmm, ich hab nach dem Falschen gesucht. Nach 3h arbeit umsonst hab ich diesen Artikel gefunden: http://support.microsoft.com/kb/175986/de

    Der erste Parameter wird wohl immer mit dem Programpfad ersetzt...



  • Ich hoffe ihr versteht was meine Frage ist, denn ich komm nicht mehr weiter.


Anmelden zum Antworten