カスタム インストーラー/アンインストーラーを使用してサービスをインストールする .NET アプリケーションがあります。
これは Windows インストーラーにまとめられているため、インストール時にサービスが登録され、アンインストール時にこのサービスが登録解除されます。ただし、カスタム アンインストーラーが失敗する場合があります。(私の場合、 を呼び出してサービスを手動でアンインストールしましたinstallutil
。)
ここで、Windows インストーラー フレームワークを使用して製品をアンインストールしようとすると、次のエラーが表示されます。
エラー 1001。アンインストール中に例外が発生しました。この例外は無視され、アンインストールが続行されます。ただし、アンインストールが完了した後、アプリケーションが完全にアンインストールされない場合があります。→指定されたサービスはインストール済みサービスとして存在しません。
意味あり。THEN を除いて、メッセージの内容にかかわらず、アンインストールはロールバックされます。(この問題については、こちらでも説明しています)。
サービスを手動で再インストールすると、アンインストールが機能する可能性があることはわかっています。
しかし、これをインストール済み製品のリストから強制的に除外できる方法があるかどうかを知りたいです。
これをアンインストールする私の現在のプログラムによる方法は、呼び出すことです
::MsiConfigureProduct(productCode.c_str(), INSTALLLEVEL_DEFAULT, INSTALLSTATE_ABSENT);
しかし、これはコントロール パネルからアンインストールするのと同じ効果があり、失敗します。
他にどのようなアプローチを取ることができますか?