冰呂のまったりブログ

ビジネスからプログラミング・デザイン等 日々興味を持った内容を配信しています

【InstallScript】 FailureActionsの設定

f:id:hirouf:20141216182053j:plain

InstallSheldでインストーラを作成中に、InstallScriptプロジェクトでServiceを登録する処理を作成していたところ
サービス起動時のエラー発生時の処理設定、「FailureActions」の設定方法でつまづきました。

レジストリに直接登録する方法も考えましたが。。。バイナリデータのため難しい。。。

結構悩んで、以下の方法で一応設定できました。

  • ServiceAddServiceでサービスを登録する。
  • LaunchAppAndWaitを利用して該当サービスのレジストリに登録する。

こんな感じです

szService = "Test Service";
sc = "failure " + "¥"" + szService + "¥"" + " action= restart/60000/restart/60000/restart/60000 reset= 3600;

LaunchAppAndWait("sc.exe", sc, LAAW_OPTION_WAIT|LAAW_OPTION_HIDDEN);

※ szServiceにはサービス名(サービス内部名が入ります)が入ります。サービスの表示名ではありません。
実行後、無事に以下のような設定になってました。

・最初のエラー発生時   :「サービスを再起動する」
・次のエラー発生時    :「サービスを再起動する」
・その次以降のエラー発生時:「サービスを再起動する」

他の方法ってあるのかなぁ。。。