2012-09-28 18 views
9

Mam następujący w pliku bat:Instalowanie usługi systemu Windows przy użyciu pliku wsadowego?

@ECHO OFF 

REM The following directory is for .NET 4.0 
set DOTNETFX2=%SystemRoot%\Microsoft.NET\Framework\v4.0.30319 
set PATH=%PATH%;%DOTNETFX2% 

echo Installing IEPPAMS Win Service... 
echo --------------------------------------------------- 
C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil My.WindowsService.exe 
echo --------------------------------------------------- 
pause 
echo Done. 

Problemem jest to, że nawet jeśli plik bat znajduje się w tym samym folderze co My.WindowsService.exe będzie starał się spojrzeć na to w C : \ Windows \ System32 .....

Jak rozwiązać ten problem?

+0

Po prostu zgaduję, ale co z. \ My.WindowsService.exe? – akluth

Odpowiedz

9

Jak to jest rozwiązane:

@ECHO OFF 

REM The following directory is for .NET 4.0 
set DOTNETFX2=%SystemRoot%\Microsoft.NET\Framework\v4.0.30319 
set PATH=%PATH%;%DOTNETFX2% 

echo Installing IEPPAMS Win Service... 
echo --------------------------------------------------- 
C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil "%~dp0My.WindowsService.exe" 
echo --------------------------------------------------- 
pause 
echo Done. 
+0

"% ~ dp0" - Zmienna% ~ dp0 (to jest zero) w przypadku odniesienia w pliku wsadowym systemu Windows zostanie rozwinięta do litery dysku i ścieżki tego pliku wsadowego. Zmienne% 0-% 9 odnoszą się do parametrów wiersza poleceń pliku wsadowego. % 1-% 9 odnoszą się do argumentów linii poleceń po nazwie pliku wsadowego. % 0 odnosi się do samego pliku wsadowego. [Sprawdź tę odpowiedź] (https://stackoverflow.com/a/10290765/3378621) –

5

Zgodnie z kilkoma artykułami, które znalazłem, podanie absolutnej ścieżki do usługi jest tym, czego potrzebujesz. Na przykład:

{...Path_To_.NET_Framework...}\InstallUtil C:\MyFolder\My.WindowsService.exe 

można pobrać aktualny katalog z czymś takim w pliku wsadowym, jeśli chcesz generowanych dynamicznie ścieżkę:

set CURDIR=%CD% 
{...Path_To_.NET_Framework...}\InstallUtil %CURDIR%\My.WindowsService.exe 

Referencje:

1

jest zbyt stary, ale był przydatny dla mnie ... Zrobiłem kilka zmian.

Moja usługa uruchamia się ręcznie, dlatego w pakiecie zawierałem polecenie uruchomienia, a następnie otwieram konsolę w celu sprawdzenia zainstalowanej usługi.

@ECHO OFF 

REM The following directory is for .NET 4.0 
set DOTNETFX2=%SystemRoot%\Microsoft.NET\Framework\v4.0.30319 
set PATH=%PATH%;%DOTNETFX2% 

echo Installing MyService Win Service... 
echo --------------------------------------------------- 
C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil /i "%~dp0MyService.exe" 
net start MyService 
services.msc 
echo --------------------------------------------------- 
pause 
echo Done. 
Powiązane problemy