2013-02-13 2 views
2

я установка окон обслуживания (на самом деле несколько из них), и это фрагмент одного из них:продолжать, если служба не запускается

<Component Id="cmpD9168A36C32F8D411B6EF4270EE6544F" Guid="{E5811AB8-0949-4C75-99BD-6687EB4672D4}" Win64="yes"> 
      <File Id="filD9168A36C32F8D411B6EF4270EE6544F" KeyPath="yes" Source="$(var.LoggerService.ProjectDir)\bin\LoggerService.exe" /> 
      <ServiceInstall 
       Id="loggerServiceInstaller" 
       Type="ownProcess" 
       Vital="yes" 
       Name="$(var.Manufacturer)LoggerService" 
       DisplayName="$(var.Manufacturer)LoggerService" 
       Start="auto" 
       Account="[PROP_DOMAINUSER]" 
       Password="[PROP_PASSWORD]" 
       ErrorControl="ignore" 
       Interactive="no"> 
      <ServiceDependency Id="LanmanWorkstation"/> 
      <ServiceDependency Id="LanmanServer"/> 
      </ServiceInstall> 
      <ServiceControl Id="loggerStartService" Start="install" Stop="both" Remove="uninstall" Name="$(var.Manufacturer)LoggerService" Wait="yes" /> 
     </Component> 

Теперь, во время службы установки будет пытаться запустить, но дизайн он может потерпеть неудачу, и все в порядке. Но теперь, когда служба терпит неудачу, он спрашивает, хочу ли я отменить или повторить попытку. Как я могу просто проигнорировать провал?

+0

Вы пробовали настройку ServiceControl @ Wait to No? –

ответ

4

Обычно это проблема с дизайном сервиса. Например, я ответил на вопросы в StackOverflow, где разработчики говорят, что их служба вызывает веб-службу во время запуска, и это занимает больше времени, чем 30 секунд MSI позволяет запускать. Мой ответ всегда «действительно».

Это плохой дизайн. Служба OnStart() службы не должна делать ничего больше, чем закручивать поток рабочего потока и сообщать об успехе. Затем этот поток должен быть инициализирован и обработан. Конвейер для OnStart должен иметь минимальную зависимость и минимальное время выполнения.

+0

Увы, несколько служб следуют этому совету. Даже некоторые из тех, которые поставляются с Windows по умолчанию, этого не делают. –

+0

К сожалению, согласился. В бывшей компании я боролся с разработчиком, зубом и гвоздем, который хотел изменить значение реестра, чтобы настроить SCM дольше, чтобы начать работу. Я утверждал, что это было неправильное изменение для машины клиентов и вынудило их реорганизовать свой код. Спустя пару лет я устанавливал продукт Microsoft (думаю, TFS) ... кто-то хочет догадаться, что этот инсталлятор сообщил мне, что это нужно сделать? –

Смежные вопросы