System.Prozess.Start - ausführen von msi-problem
Wenn ich versuche zu laufen, ein msi mit System.Prozess.Start("test.msi") in einer vb-app bekomme ich die folgende Fehlermeldung.
Installationspaket konnte nicht geöffnet werden. Kontakt Hersteller der Anwendung...
Msi-Datei funktioniert einwandfrei, wenn doppelt geklickt, versucht System.Prozess.Beginnen Sie mit text-Dateien und exe-Dateien, und Sie arbeiten gut, problem nur mit msi
Dateien. Läuft vista. Habe auch versucht xp aber kein Glück
Dank
- Der Kern des Problems ist, dass MSI ' s sind nicht ausführbare Dateien. Sie können einen Doppelklick auf Sie zu öffnen, da alle Windows-Versionen, die MSI-Dienstprogramm eingebaut und weiß es zu öffnen .msi mit dem MSI utility
- das ist nicht ganz alles dort ist zu ihm. Ein
.txt
ist nicht ausführbar, entweder, aber Sie können tunSystem.Process.Start("file.txt")
und es wird funktionieren. Ich aktualisiert meine Antwort zu erklären. - Sie sind 100% richtig. Haben sollte recherchiert: "..Also, der name der Datei nicht brauchen, um die ausführbare Datei darstellen. Es kann eine Datei beliebigen Typs sein, für die die Erweiterung wurde im Zusammenhang mit einer Anwendung auf dem system installiert." -MSDN
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie eine setup.exe mit Ihrem msi, führen Sie diese stattdessen. Sonst, verwenden Sie diesen code:
(von hier: MSI läuft nicht von in C#)
Der Grund für die Notwendigkeit, es zu tun auf diese Weise ist, dass wenn du
System.Process.Start("file.txt")
es wird funktionieren, da es ist (Art von) Berufungnotepad.exe %1
die Arbeit für eine text-Datei, abermsiexec %1
nicht für msi, da msiexec hat ein erforderlicher parameter (Option).Können Sie dies selbst einmal ausprobieren, indem man versucht msiexec-Datei.msi auf der Befehlszeile - es wird Ihnen dieser hilfreich kleine Nachricht:
msiexec /i test.msi
in der Konsole funktioniert das? Wenn nicht, was ist die Fehlermeldung?msiexec /passive /package "test.msi"
Helfen, lokalisieren das problem, versuchen Sie einen anderen .exe aus dem code, wie notepad.exe.
Hatte das gleiche problem. Das problem liegt an der Deklaration der Pfad der msi-Datei. Setzen Sie doppelte Anführungszeichen um ihn herum.
Statt
p.StartInfo.Arguments = "/i PathToYour.msi"
versuchen