- ベストアンサー
Windowsサービスのインストーラ 作法とコツ
Windowsサービスのインストーラを作成することになりました。 使用ツールは「InstallShield X ExpressEdition」を予定しています。 サービスの登録は、次のレジストリキー(※)にサービスを登録するらしい という所まではたどり着いたのですが、それ以外に何かサービスの インストーラとして注意するべき点や、コツについてご教授ねがいます。 (※ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\)
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>アドバイスを参考にCreateService()(インストール時)とDeleteService()(かな?)(アンインストール時)を使用したAPIでのインストーラを検討します。 ご名答。DeleteServiceです。 APIを呼べるのならそれがいいと思います。 もしくは、サービスのインストーラ・アンインストーラは別exeにするとか。 #個人的にはサービスプログラム自体に組み込んで、パラメータ指定でインストール・アンインストールなんですけどね(^^;; 一応参考までに。サービスプログラムのサンプルですが、インストール・アンインストールもサポートしてます。 http://www.cisnet.or.jp/home/tsuneoka/win32sub/8.html (サンプルソースはこのurlの「戻る」で移動したページにあります。)
その他の回答 (1)
- taka_tetsu
- ベストアンサー率65% (1020/1553)
というか、本当はCreateService()というAPIを使ってレジストリに登録するんですが(^^;;; なので、インストーラでレジストリにキーを追加するということですと、本来はCreateServiceで指定するパラメータで設定可能な項目についても対処する必要があるということです。 http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpdllpro/html/_win32_CreateService.asp また、通常サービスプログラムはエラーメッセージをイベントログに出力しますが、これのためのメッセージリソースを持つモジュールもレジストリに登録する必要がありますけど。
お礼
回答ありがとうございます。 アドバイスを参考にCreateService()(インストール時)とDeleteService()(かな?)(アンインストール時)を使用したAPIでのインストーラを検討します。
補足
今回インストールしたいサービスと、関連するアプリケーションのインストーラと、イメージを合わせたかったため、今回のような質問となりました。 InstallShield X ExpressEditionでは、レジストリへの操作も行える為、CreateService()の代替となるのでは、と考えておりました。 ちなみに、サンプルとして、自分のWin2000のサービスの登録状況をレジストリエディタで見てみましたが、直接レジストリに値を設定するのは少々面倒であるということがわかりました。(どのようなキーにどのような値を設定してよいのかの調査が必要 等の理由により)