Visual Studio 2015 のセットアッププロジェクトで作成したインストーラ―でWindowsサービスを上書きインストールすると次のエラーが表示されました。
Error 1001.ソース (サービス名) は既にローカルコンピューターに存在します。
対策ですが、セットアッププロジェクトのカスタム動作に指定している ProjectInstaller.cs の serviceProcessInstaller1 に BeforeInstall イベントを作成し、そこに既存の登録情報を削除する処理を定義しました。
using System.Collections.Generic; using System.ServiceProcess; private void serviceProcessInstaller1_BeforeInstall(object sender, System.Configuration.Install.InstallEventArgs e) { // 上書きインストール時、上書きできるようにインストール前に既存の登録情報を削除します。 var services = new List(ServiceController.GetServices()); foreach (ServiceController s in services) { if (s.ServiceName == this.serviceInstaller1.ServiceName) { var serviceInstaller = new ServiceInstaller(); serviceInstaller.Context = new System.Configuration.Install.InstallContext(); serviceInstaller.Context = Context; serviceInstaller.ServiceName = this.serviceInstaller1.ServiceName; serviceInstaller.Uninstall(null); break; } } }