C# (.NET 4) で Windows サービスを作成しています。
インストーラーのコードは次のとおりです。
[RunInstaller(true)]
public partial class JobManagerInstaller : Installer
{
public JobManagerInstaller()
{
InitializeComponent();
this.Installers.Clear();
ServiceProcessInstaller serviceProcessInstaller = new ServiceProcessInstaller();
ServiceInstaller serviceInstaller = new ServiceInstaller();
EventLogInstaller eventLogInstaller = new EventLogInstaller();
// Service Account Information
serviceProcessInstaller.Account = ServiceAccount.LocalSystem;
serviceProcessInstaller.Username = null;
serviceProcessInstaller.Password = null;
// Service Information
// The installer's ServiceName must be identical to the JobManager.ServiceName set in the constructor of JobManager.cs
serviceInstaller.ServiceName = "VIAVista";
serviceInstaller.DisplayName = "VIAVista";
serviceInstaller.StartType = ServiceStartMode.Automatic;
// EventLog
eventLogInstaller.Source = "VIAVista";
eventLogInstaller.Log = "VIAVista";
// Dependency SQL Server service (i.e.SQL Server must run)
serviceInstaller.ServicesDependedOn = new string[] { "MSSQL$SQLEXPRESS" };
this.Installers.Add(serviceProcessInstaller);
this.Installers.Add(serviceInstaller);
this.Installers.Add(eventLogInstaller);
}
}
ご覧のとおり、イベントのソースとログに「VIAVista」という名前を付けたいと考えています。
サーバー (Windows Web Server 2008 R2 64 ビット) にサービスをインストールしようとすると、イベント ソースがログ "アプリケーション" に既に存在するというメッセージが表示されます。this.Installers.Clear() がデフォルトのソース/ログの作成を妨げると思ったので、それは奇妙です。
情報: サービスをインストールする前に、regedit を使用して「VIAVista」キーがないことを確認しました。
何か案は?何か見逃しましたか?