2012-09-28 47 views
9

在一個bat文件我有以下幾點:使用批處理文件安裝Windows服務?

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

的問題是,它即使BAT文件位於同一文件夾中My.WindowsService.exe它將試圖尋找在C :\ Windows \ System32 .....

我該如何解決這個問題?

+0

只是猜測,但怎麼樣。\ My.WindowsService.exe? – akluth

回答

9

這是它是如何解決:

@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」 - 在Windows批處理文件中引用的%〜dp0(即零)變量將擴展爲該批處理文件的驅動器號和路徑。 變量%0-%9是指批處理文件的命令行參數。 %1-%9參考批處理文件名後面的命令行參數。 %0指的是批處理文件本身。 [檢查此答案](https://stackoverflow.com/a/10290765/3378621) –

5

根據我發現的幾篇文章,爲您的服務傳遞絕對路徑就是您想要的。例如:

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

您可以在您的批處理文件是這樣的抓住你的當前目錄下,如果你想有一個動態生成的路徑:

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

參考文獻:

1

實在是太舊的,但對我來說非常有用......我做了一些改動。

我的服務手動啓動,所以在批處理中我包含了啓動命令,然後打開控制檯檢查已安裝的服務。

@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. 
相關問題