MSI/MSP @Prcoess.Start() -> keine gültige Win32 Anwendung

zrimp

Grünschnabel
Hi,

ich habe ein Problem mit der Process-Klasse. OS: XP Pro 32 Bit, VS'05 und .Net 2.0 (3.5 sowie 4.0 Beta ist ebenfalls installiert, sollte sich aber nicht auf VS'05+.Net2.0 auswirken).

Ich weiß gerade nicht, ob es an den MSIs (TortoiseSVN + LangPack) und den MSPs (Adobe 8.1.4, 8.1.5 sowie 9.1.1) liegt oder direkt an der Process-Klasse, das sie nur in der Lage ist BAT und EXE-Daten und andere (ältere) Standard-Daten auszuführen.

Gibt es irgend eine Feinheit, welche beachtet werden muss?
Die Prcoess.StartInfo.WorkingDirectory habe ich angegeben - daran kann es nicht liegen. Bzw. lautet die Fehlermeldung auch nicht "Verzeichnis nicht gefunden" oder so ähnlich, sondern dass die Anwendung angeblich keine gültige Win32-Anwendung sei.


Edit:
Oh man, ich entschuldige mich für diese Artikulation!

Ich verwende VisualStudio 2005 mit .Net 2.0, beim Ausführen von MSI und MSP-Setup-Daten, gibt mir Process.Start() den Fehler „keine gültige Win32 Anwendung“ zurück.

Kann mir jemand sagen, ob es dabei an den verwendeten Installations-Daten liegt, am .Net respektive der Process-Klasse oder ob ich vergessen habe eine Einstellung zu setzen?
 

deepthroat

Erfahrenes Mitglied
Hi.
Ich verwende VisualStudio 2005 mit .Net 2.0, beim Ausführen von MSI und MSP-Setup-Daten, gibt mir Process.Start() den Fehler „keine gültige Win32 Anwendung“ zurück.
Die Dateien werden ja vom msiexec Programm verarbeitet. Ist dieses Programm vorhanden? Evtl. ist dieses Programm beschädigt?

Gruß
 

zrimp

Grünschnabel
Ah, danke.

Also sollte ich msiexec als Prozess starten und ihm die entsprechende Datei als Parameter übergeben?

Und ja, ist vorhanden. Ohne Umwege über mein Programm lassen sich die Installations-Daten ausführen (dann jedoch im aktuellen Benutzerkontext und nicht als stille Installation).
 

zrimp

Grünschnabel
Habe es gerade getestet.

Man übergibt msiexec als zu startendes Programm und die Parameter lauten Bspw. /a C:\Install.MSI /quiet

Vielen Dank, für die schnelle Hilfe! :)
 

Alexander Schuc

crazy-weasel
Hi,..

Eine weitere Möglichkeit wäre UseShellExecute auf true zu setzen.

C#:
ProcessStartInfo psi = new ProcessStartInfo(@"C:\Bla\Blubb\Produkt.msi");
psi.UseShellExecute = true;

Process p = Process.Start(psi);


lg,..
 

deepthroat

Erfahrenes Mitglied
Hi.
Eine weitere Möglichkeit wäre UseShellExecute auf true zu setzen.
Es ist aber standardmäßig schon auf true.

Bei mir funktioniert es auch einfach mit dem "Aufruf" einer MSI Datei, das die Installation gestartet wird.

Es scheint also, dass die Aktionen für MSI Dateien bei zrimp nicht korrekt eingerichtet sind - so dass das explizite Setzen von UseShellExecute wohl nicht helfen wird...

Gruß
 

zrimp

Grünschnabel
UseShellExecute = false
Da der Benutzerkontext gewechselt wird und es sonst zu einem Fehler kommt. :)