2011-02-22 34 views
2

我有一個安裝項目,它使用System.Configuration.Install.Installer類來處理一些自定義操作。我在Uninstall方法中的邏輯是拋出一個異常(確切地說是null引用異常),導致卸載在不實際卸載任何內容的情況下退出。如何刪除卸載過程中引發異常的安裝?

我知道是什麼原因造成的問題,並在Uninstall方法改變了代碼,但它並沒有關係,因爲如果我嘗試通過控制面板卸載該程序,它不會有我做這樣一些修改將繼續例外,如果我嘗試通過VS2010中的安裝項目的上下文菜單進行卸載,它似乎不會使用重建的安裝項目,並執行嘗試通過控制面板進行卸載時發生的相同事情。

我覺得我被困在一塊岩石和一個艱難的地方之間。有沒有其他人陷入這種情況,如果是的話,你如何規避它?

回答

2

This Question完美地回答了我的問題。

基本上,我只是在Uninstall方法中重新編譯沒有任何邏輯的System.Configuration.Install.Installer dll文件。手動更換位於程序安裝位置的dll與新編譯的位置,然後再次嘗試卸載該程序。卸載程序將使用新的dll文件,不會拋出異常(因爲我從該方法中刪除了所有的代碼)。

我當時能夠修復我的代碼並創建一個新的安裝程序。

作爲以防萬一,我把我所有的卸載邏輯成try塊和我趕上Exception,你可以說是壞的,但至少它讓崩潰卸載過程中,我做的方法的任何變化(我只是意味着一些配置文件可能會被遺留下來而沒有正確清理)。

+0

只能回答​​我自己的問題,以便那些瞭解問題的人想知道解決方案的人的利益。 – Anthony

相關問題