2011-02-22 6 views
2

私はSystem.Configuration.Install.Installerクラスを使用していくつかのカスタムアクションを処理するセットアッププロジェクトを持っています。 Uninstallメソッドの私のロジックは、実際にアンインストールしなくてもアンインストールを終了させる例外(null参照例外)をスローしていました。アンインストール中に例外をスローするインストールをどのように削除しますか?

私はこの問題の原因を知り、Uninstallメソッドでコードを変更しましたが、コントロールパネルからプログラムをアンインストールしようとすると、変更が反映されないため問題はありませんVS2010のセットアッププロジェクトのコンテキストメニューからアンインストールしようとすると、再構築されたセットアッププロジェクトを使用していないように見えますが、コントロールパネルからアンインストールしようとしても同じことが起こります。

私は岩と硬い場所の間に挟まれているような気がします。他の誰かがこの状況に陥っていますか?そうであれば、それをどう回避しますか?

答えて

2

This Question私の質問に完全に答えました。

基本的には、UninstallメソッドでロジックなしでSystem.Configuration.Install.Installer dllファイルを再コンパイルしました。手動で、プログラムのインストール場所にあるDLLを新しくコンパイルしたDLLに置き換えて、プログラムを再度アンインストールしようとしました。アンインストーラは新しいdllファイルを使用し、そのメソッドからすべてのコードを削除したため、例外はスローされません。

私はコードを修正して新しいインストーラを作成することができました。

私はすべてのアンインストールロジックをtryブロックに投げ入れて、Exceptionをキャッチしていますが、これは悪いと主張できますが、少なくとも、メソッドに対して行った変更をアンインストールプロセスをクラッシュさせないようにします。私はちょうどいくつかの設定ファイルが残っているかもしれないことを意味します。

+0

問題の解決方法をどこに知りたいのかを知りたい人のために自分の質問に答えるだけです。 – Anthony

0

することはでき(あなたは、実際のMSIのパスを使用)、このコマンドを使用して固定MSIを再キャッシュしてみてください。

msiexec.exe /fv <path_to_new_msi> 

あなたはまた、Windows SDKからのMsizap.exeを使用して試すことができます:

http://msdn.microsoft.com/en-us/library/aa370523(VS.85).aspx

関連する問題