Windows サービスのインストールに使用する Visual Studio セットアップ プロジェクトがあります。サービスは自動的に実行されるように設定されており、カスタム アクションとしてサービスを追加することで、この時点で正常にインストールされています。ただし、インストールが完了したら、インストーラーにサービスを開始してもらいたいです。これは可能ですか?
関連する注意事項として、アンインストールやアップグレード時にサービスを手動で停止する必要がありますか?
Windows サービスのインストールに使用する Visual Studio セットアップ プロジェクトがあります。サービスは自動的に実行されるように設定されており、カスタム アクションとしてサービスを追加することで、この時点で正常にインストールされています。ただし、インストールが完了したら、インストーラーにサービスを開始してもらいたいです。これは可能ですか?
関連する注意事項として、アンインストールやアップグレード時にサービスを手動で停止する必要がありますか?
以下のカスタム アクション ハンドラーをオーバーライドして、インストール後に Windows サービスを開始します。サービス プロパティの type=Automatic を設定しても、明示的に開始しない限り、サービスは開始されません。
protected override void OnAfterInstall(IDictionary savedState)
{
using (var sc = new ServiceController(serviceInstaller1.ServiceName))
{
sc.Start();
}
}
アンインストール/アップグレードのカスタム アクションを使用してサービスを停止しても、Visual Studio インストーラーは FileInUse プロンプトを停止しません。VS Installer には、この動作を制御できなかったため、インストーラーのシーケンスを変更するための高度な機能があまりないようです。ただし、アンインストール/アップグレードのためにサービスを停止することをお勧めします。
サービスの開始/停止には、カスタムアクションを使用することもできます。カスタムアクションから、次のユーティリティを呼び出す必要があります:http ://technet.microsoft.com/en-us/library/cc736564(v=ws.10).aspx
はい、アップグレード/アンインストールの場合は、ファイルを削除する前にサービスを停止する必要があります。これにより、OSからの「使用中のファイル」プロンプトを回避できます。