2017-06-15 3 views
0

C#を使用してWindowsサービスプロジェクト(WinService.exe)を作成しました。私はinstallutil.exeを使用してインストールおよびアンインストールを行ったときに、私のWindowsサービスプロジェクトは、サービスパネルにサービスを追加して、今すぐ https://docs.microsoft.com/en-us/dotnet/framework/windows-services/walkthrough-creating-a-windows-service-application-in-the-component-designerWindowsインストーラでサービスが削除されないのはなぜですか?

:また、私はマイクロソフトから以下のガイドに従ってプロジェクト(ProjectInstaller.cs)とのインストーラ機能を追加しました適切に除去します。

このサービスをリモートマシンに展開したいので、VisualStudio 2015をサービス展開プロジェクトとして使用して、Windowsインストーラプロジェクト(DeployService.msi)を作成しました。また、WinServiceプロジェクトとしてプライマリ出力を対象としたInstall、UnInstall、Commit、Rollbackのカスタムアクションを構成しました。

このインストーラを使用してインストールを実行すると、サービスがサービスパネルに追加され、ApplicationFolderはサービスに必要なすべてのバイナリをコピーします。しかし、アンインストールを実行すると、ApplicationFolderバイナリは削除されますが、InstallStateファイル、つまりWinService.InstallStateが残ります。重要ですが、サービスはサービスパネルから削除されません。

Windowsインストーラ経由でサービスパネルからサービスを削除するためのヘルプはありますか?

+0

アンインストールする前にサービスを停止する必要がありますか?あなたのアンインストーラにそのステップはありますか? – PhillipH

+0

はい、私もそれを試みましたが、まだサービスはパネルから削除されません。 – Rajan365

答えて

0

私が追加しようとしていますServiceProcessInstallerのイベントハンドラで、何らかの理由でOnBeforeUninstall()およびOnAfterUinstall()がWindowsインストーラによって呼び出されないことに気付きました。同時に、私はOnBeforeInstall()とOnAfterInstall()が呼ばれていることに気付きました。これが私の場合にWindowsサービスがアンインストールされなかった主な理由です。

私は(Installerからderviced)ProjectInstallerクラスのメソッドをオーバーライドしようとしたとき: protected override void OnBeforeUninstall(IDictionary savedState); protected override void OnAfterUninstall(IDictionary savedState); を私はWindowsインストーラを観察したが、適切にこれらのメソッドを呼び出して、私はそこにWindowsサービスを削除するために、適切な方法を書かれています。

0

あなたは(あなたがCMDを使用して、それを試すことができます)あなたは、正確な名前のサービスを削除したアプリケーションのアンインストールを実行すると、次のコマンドを実行しようとすることができます:

sc delete “serviceName” 
+0

私はInstallUtil.exe/u をOnBeforeUnInstallに実行することができます。他に良い方法はありますか?なぜWindowsのインストーラがそれをしなかったのは私の質問です。 – Rajan365

+0

それを停止したり、プログラムで削除する必要があるかもしれません。私は知らない。 – CGG

関連する問題