Frage

Does NAnt haben die Möglichkeit, einen Windows-Dienst zu installieren oder zu deinstallieren, mit dem InstallUtil Dienstprogramm oder was sonst?

War es hilfreich?

Lösung

können Sie rufen Nant exec Aufgabe InstallUtil anrufen und können Parameter übergeben installieren oder einen Service deinstallieren leicht

 <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>

Andere Tipps

Nant oder MSBuild? Was ist das Problem mit nur läuft installutil selbst - das ist, was Sie in MSBuild tun würde. (In der Regel baut die Installationen für Dinge wie dies in der Regel tut sie nicht tun, wie sie typischerweise sollte Build der Lage sein, auf einem zufälligen Build-Server ausgeführt werden).

Eine weitere Option, die installutil aus der Gleichung nehmen würde, ist

Wenn Ihr Dienst kann an verschiedenen Orten installiert werden, können Sie auch deinstallieren es durch seinen Namen SC.EXE wie folgt verwendet:

<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>

Wenn Sie die Verwendung Topshelf Projekt in Ihrer Anwendung Ihre Dienste hosten, können Sie Befehlszeile erhalten basierte Werkzeuge für die Installation / Entfernen der Dienste ohne InstallUtil zu benötigen.

ServiceName.exe Dienst installieren ServiceName.exe Service deinstallieren

Und Sie können den Service direkt und bekommen ein schönes Konsolenfenster, dass Sie STRG + C zum Anschlag laufen. Sie können dies in Nant oder msbuild direkt integrieren, indem das Programm ausgeführt wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top