C# サービスアプリケーションのServiceInstallerでなやんだこと

まあ、よくある話なのですが・・・

Visual Studio 2012 C#でサービスアプリケーションを作り、Installutil.exeでインストールできるようにつくるとして、ServiceInstallerを入れる

とりあえず、Serviceとして作ったクラスの”デザイナー”を開いて、ツールボックスのコンポーネントからドロップしてあげればよい。

まあ、これはともかく、

Installutil.exeを使ってインストール、アンインストールをしていると、Installerが ArgmentExceptionで失敗、ロールバックすることがありますが、海外などで見ると、Eventlogへの登録関連でおきますよね。

自前でInstallerコード書けば、

if(!EventLog.Exists("HogeHoge"))
    EventLog.CreateEventSource("HogeHoge");

とするのですが・・・

どうやら、デザイナーで放り込んだものはこんなことやってないようで、あるのに作ろうとして失敗しているような感がありました。

そこで、どこにいれてやろうとなやんだところ。

ProductInstallerのイベント、BeginInstallを追加し、そこに

if(Eventlog.Exists("HogeHoge"))
    EventLog.DeleteEventSource("HogeHoge");

と追加し、いったん削除するという方法で切り抜けました。

まあ、アンインストール時にログけせばいいのでしょうけど、一応こちらでもやっといたほうがいいかもしれませんね。

コメントを書く

Month List