ShellExceute überträgt nicht alles?



  • Hallo Leute,
    ich habe einigermaßen Nerven zeigen müssen, als ich mich mit ShellExecute befasst habe. Das funktioniert ja eigentlich ganz gut, aber bei gewissen Optionen funktiomiert das einfach nicht korrekt. Also:

    Ich habe einen bootstrapper für msi-Files programmiert. Dieser exe übergebe ich diverse Paramter, die ich auch korrekt extrahiere. Bevor ich ShellExecute aufrufe, printe ich die Kommandozeile in ein File:

    fprintf(streams, "Silentinstall-Line: msiexec %s \n", mainCmd);
    ShellExecute(NULL, "open","msiexec", mainCmd, tempDirName, SW_HIDE);
    

    Das Ergebnis ist:
    Silentinstall-Line: msiexec /i d:\temp\abc.msi /qf /l msilog.log INSTALLLEVEL=555

    Was ich aber nun nicht verstehe ist, warum die Option /qf richtig ausgeführt wird, die Option /l msilog.log aber total übergangen wird??? Wenn ich den Kommandoaufruf aus der Datei herauskopiere und in die Dos-Shell einfüge, funktioniert es perfekt.
    Ich habe auch schon versucht die Optionen zu versetzen, aber es schaut wirklich so aus, dass das /l msilog.log total vreschluckt wird.

    Habe es gerade mit dem gleichen Kommando mit system() versucht. Da haut es so hin, wie ich es wollte, sprich, er loggt mit. Dann liegt es also definitiv an ShellExecute...

    Hat jemand mal eine Idee? Vielleicht auch, wie ich das Shell-Window anzeige, in welchem der Befehl ausgeführt wird?
    Danke AkonF


Anmelden zum Antworten