2009-07-09 2 views
5

Я работаю над приложением, которое запускается как служба, но только если он говорит о командной строке (в противном случае открывается стандартная форма). Поэтому, когда служба запускается Windows при загрузке, она должна передать этот параметр командной строки или служба не запускается.Добавить аргументы командной строки для установщика установки C#

Я хочу, чтобы установщик (ServiceProcessInstaller) добавил параметр командной строки, чтобы при запуске службы он добавил в команду параметр командной строки.

Пример: MyService.exe -commandlineoption

Я думал, что это было то, что свойство ServiceProcessorInstaller.Context было для, но это для аргументов, которые были выполнены на InstallUtil.

Любые предложения?

+0

Непонятно из вашего вопроса: ваше приложение устанавливает сервис, запускает его или и то, и другое? – adrianbanks

+0

Я думаю о первом. –

+0

Извините за двусмысленность. Обычно приложение является стандартным приложением окон. Однако в методе Main() он ищет аргументы командной строки. Если есть опция командной строки -service, она запускает службу. Я также включил кластер установщика, который ищет InstallUtil, чтобы зарегистрировать службу в Windows. Когда служба запускается Windows при загрузке, служба должна вызываться с опцией командной строки. – Tim

ответ

1

Когда я добавил параметры командной строки для обслуживания, я всегда дефолт к работе в качестве службы , Однако я знаю, что это возможно, потому что именно так работает SvcHost: это EXE, который всегда настроен на загрузку DLL как сервисов.

+0

И вот как, любезно предоставлено Jorg ниже: http://stackoverflow.com/questions/652654/set-start-parameters-on-service-installation-with-net-serviceinstaller –

+0

Вопрос, с которым вы связаны, кажется, Что мне нужно. Наверное, я не искал правильных слов. Они не могли успокоиться, не так ли? Спасибо, Стивен! – Tim

+0

Jorg получает кредит, но я рад обратить ваше внимание на его хорошую работу. –

0

Сервис устанавливается только один раз для выпуска. Похоже, вы говорите о передаче аргумента командной строки службе, когда она запущена.

Вы можете передать аргументы командной строки службе при запуске его с помощью 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

Джон, связанный с ним вопрос объясняет, как настроить службу для присоединения параметров, которые передаются всякий раз, когда служба запускается кем-либо. Я думаю, что он содержит ответ на вопрос Тима. –