2009-07-09 18 views
5

私はサービスとして起動するアプリケーションで作業していますが、コマンドラインスイッチが指示する場合のみ(そうでなければ標準形式が開かれます)。したがって、起動時にWindowsによってサービスが開始されると、このコマンドラインオプションを渡す必要があります。そうしないと、サービスが開始されません。サービスインストーラへのコマンドライン引数の追加c#

インストーラ(ServiceProcessInstaller)にコマンドラインオプションを追加して、サービスの起動時にコマンドラインオプションをコマンドに追加したいと考えています。

例: MyService.exe -commandlineoption

私は、これはServiceProcessorInstaller.Contextプロパティがために何であったかと思ったが、それはます。installutil上で実行された引数のためです。

提案がありますか?

+0

あなたの質問から、アプリケーションがサービスをインストールしているか、起動しているか、またはその両方ですか? – adrianbanks

+0

私は前者と思っています。 –

+0

ご迷惑をおかけして申し訳ありません。アプリケーションは通常、標準のWindowsフォームアプリケーションです。ただし、Main()メソッドでは、コマンドライン引数を探します。 -serviceコマンドラインオプションがある場合、サービスを開始します。また、Windowsにサービスを登録するためにInstallUtilが探しているインストーラクラスも含まれています。起動時にWindowsによってサービスが開始されると、コマンドラインオプションを使用してサービスを呼び出す必要があります。 – Tim

答えて

1

、私は常にサービスとして実行にデフォルト設定しました。しかし、私はSvcHostがどのように動作するのかを知ることができます:DLLをサービスとしてロードするように常に設定されているEXEです。

+0

そして、ここに、Jorgの礼儀があります: http://stackoverflow.com/questions/652654/set-start-parameters-on-service-installation-with-net-serviceinstaller –

+0

リンク先の質問は私は何が必要です。私は正しい言葉を求めていなかったと思う。 彼らは簡単にすることができませんでしたか? ありがとうSteven! – Tim

+0

ジョルジュは信用を得ていますが、私は彼の良い仕事にあなたの注意を向けてくれてうれしいです。 –

0

サービスはリリースごとに1回のみインストールされます。サービス開始時にコマンドライン引数をサービスに渡すことについて話しているようです。あなたはそれを使用して起動するときは、サービスへのコマンドライン引数を渡すことができ

ServiceController.Start method

私はサービスにコマンドラインオプションを追加しました
using (var controller = new ServiceController("servicename")) { 
    controller.Start(arg0, arg1); 
} 
+0

その場合は、次を参照してください。私のQ:http://stackoverflow.com/questions/652654/set-start-parameters-on-service-installation-with-net-serviceinstaller –

+0

矛盾はありますか? –

+0

John、彼がリンクしている質問は、誰でもサービスを開始するたびに渡されるパラメータを添付するようにサービスを設定する方法を説明しています。私はそれがティムの質問に対する答えを含んでいると思う。 –

関連する問題