Установка / удаление службы Windows в сценарии сборки с помощью NAnt - PullRequest
1 голос
/ 05 августа 2010

Имеет ли NAnt возможность устанавливать или удалять службы Windows, используя утилиту InstallUtil или что-то еще?

Ответы [ 4 ]

3 голосов
/ 06 августа 2010

Вы можете вызвать задачу Нанта exec , чтобы вызвать InstallUtil и легко передать параметры для установки или удаления службы

 <target name="install-service">
    <exec program="${framework::get-framework-directory('net-2.0')}\InstallUtil.exe">
      <arg value="-i" />
      <arg value="/name=V1" />
      <arg value="C:\Service\SomeService.exe" />      
    </exec>
  </target>
1 голос
/ 13 августа 2010

Если ваша служба может быть установлена ​​в разных местах, вы также можете удалить ее по ее имени, используя SC.EXE, как показано ниже:

<property name="serviceName" value="Name of the service"/>
<exec program="sc" failonerror="false" verbose="true" if="${service::is-installed(serviceName,'.')}">
 <arg value="delete"/>
 <arg value="${serviceName}"/>
</exec>
1 голос
/ 06 августа 2010

Нант или MSBuild? В чем проблема с запуском installutil самостоятельно - это то, что вы делаете в MSBuild. (Как правило, сборки не выполняют установки для подобных вещей, как правило, так как обычно ваша сборка должна работать на сервере произвольной сборки).

Еще одна опция, которая бы вытащила installutil из уравнения, это добавление опции самоустановки к вашей службе, как это (ищите больше, ища self install windows service)

0 голосов
/ 06 августа 2010

Если вы используете TopShelf Project в своем приложении для размещения своих служб, вы можете получить средства командной строки для установки / удаления служб без необходимости InstallUtil.

ServiceName.exeСлужба установки ServiceName.exe Служба удаления

И вы можете запустить службу напрямую и получить красивое окно консоли, которое вы можете остановить, нажав CTRL + C.Вы можете интегрировать это непосредственно в nant или msbuild, выполнив программу.

...