まあ、よくある話なのですが・・・
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");
と追加し、いったん削除するという方法で切り抜けました。
まあ、アンインストール時にログけせばいいのでしょうけど、一応こちらでもやっといたほうがいいかもしれませんね。