使用批处理文件安装Windows服务?

Ban*_*hee 9 windows-services installutil batch-file

我在bat文件中有以下内容:

@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.
Run Code Online (Sandbox Code Playgroud)

问题是,即使bat文件与My.WindowsService.exe位于同一文件夹中,它也会尝试在C:\ Windows\System32中查找它.

我该如何解决这个问题?

Ban*_*hee 10

这是如何解决的:

@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.
Run Code Online (Sandbox Code Playgroud)


Jon*_*hop 5

根据我发现的几篇文章,将绝对路径传递给您的服务是您想要的.例如:

{...Path_To_.NET_Framework...}\InstallUtil C:\MyFolder\My.WindowsService.exe
Run Code Online (Sandbox Code Playgroud)

如果需要动态生成的路径,可以在批处理文件中使用类似的内容获取当前目录:

set CURDIR=%CD%
{...Path_To_.NET_Framework...}\InstallUtil %CURDIR%\My.WindowsService.exe
Run Code Online (Sandbox Code Playgroud)

参考文献: