2014-01-22 44 views
1

我使用InstallShield試用版2013安裝在C#應用程序,我想從另一個C#應用程序卸載C#應用程序 - InstallShield將試用版


我運行過程中卸載它這樣卸載:

p.StartInfo.FileName =「msiexec.exe」;

  p.StartInfo.UseShellExecute = false; 
      p.StartInfo.Arguments = "/x {XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}"; 
      p.Start(); 

,結果是一條錯誤消息:

「的行動僅僅是當前安裝了有效的產品」

該產品安裝使用InstallShield試用版。如果我使用Limited InstallShield安裝產品,卸載過程將完美執行。


是這個問題,因爲它是一個評估版本,或者我缺少其他東西?

回答

0

如果產品的GUID在InstallShield版本之間發生變化(很可能如果您讓它創建默認的GUID),那麼它可能會在註冊表中尋找舊的GUID來卸載。您可能需要手動清理舊的註冊表項。有關於這樣做的信息here

0

傑夫指出,很可能你得到了錯誤的GUID。你可以在這個答案中找到幾種找到正確答案的方法,以便如何卸載MSI:MSI uninstall details。或者更好的是,直奔這個答案如何找到您設置的產品GUID:How can I find the product GUID of an installed MSI setup?

我也將努力打造代碼的命令行,它序列化到一個字符串,並手動嘗試使用MSIEXEC。 exe在命令窗口驗證其有效性。這是一個複雜的,容易出錯的命令行界面。儘管如此,您的錯誤消息指示了錯誤的GUID。

最後:調用而是msiexec.exe的作爲命令行的,你可以使用DFT - Deployment Tools Foundation這是Win32的Windows安裝程序API一個.NET包裝。沒有命令行來構建或錯誤代碼來檢查,只需輕鬆使用.NET類來處理MSI的各個方面。這將允許您通過代碼正常運行卸載,甚至支持異常處理。如解釋here所述,DTF作爲Wix的一部分進行分發。請參閱serverfault.com上的this post(系統管理員站點),以更好地瞭解不同方法。請參閱MSI uninstall details中使用的示例C#代碼片段。