2010-05-13 53 views
1

我從我的應用程序啓動安裝程序,然後同步等待它完成。如何判斷安裝程序(特定於InstallShield)是否成功完成?

Process installerProcess = Process.Start("TheProcessName"); 

// Must EnableRaisingEvents before calling synchronous method WaitForExit 
// according to MSDN documentation. 
installerProcess.EnableRaisingEvents = true; 

installerProcess.WaitForExit(); 

我的應用程序需要知道這個安裝程序是否成功完成。如果用戶取消了它或因任何原因失敗了,我需要找出答案。

我試過ExitCode這個過程的屬性,認爲'0'表示成功,所有其他代碼表示失敗,但它顯示了相同的退出代碼,以便安裝成功或不成功,所以現在我很難過。有任何想法嗎?還是有更好的方法比我現在做的更好?

+1

你在做正確的事情。 InstallShield顯然不是。 – 2010-05-13 17:21:42

+0

這就是我開始想的。只是以爲我可能錯過了一些東西。我會發現是否可以用標準退出碼創建安裝程序。我會再給它幾個小時才能關閉它 - 以防萬一有這個答案。 – 2010-05-13 20:21:19

回答

0

我相信Windows用於檢查安裝程序兼容性的方法是觀察Uninstall registry key下的密鑰數量。如果這增加,那麼安裝成功的可能性很大。在您的情況下,您可能只需查找由您啓動的特定安裝程序安裝的任何相關注冊表項,但其卸載密鑰可能是一個不錯的選擇。

+0

謝謝Michael,這是一個有趣的方法。我會研究這個。 – 2010-05-14 13:46:24

1

您正在使用什麼類型的InstallShield項目?微星或腳本驅動?我一直有msixec和setup.exe返回有意義的退出代碼。這有些不對勁。

相關問題