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

Windows services 使用批处理文件安装Windows服务?,windows-services,batch-file,installutil,Windows Services,Batch File,Installutil,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 ----------------------------------------------

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.
问题是,即使bat文件与My.WindowsService.exe位于同一文件夹中,它也会尝试在C:\Windows\System32…..中查找它


如何解决这个问题?

根据我找到的几篇文章,传递一个绝对路径到您的服务是您想要的。例如:

{...Path_To_.NET_Framework...}\InstallUtil C:\MyFolder\My.WindowsService.exe
如果需要动态生成的路径,您可以在批处理文件中使用如下内容获取当前目录:

set CURDIR=%CD%
{...Path_To_.NET_Framework...}\InstallUtil %CURDIR%\My.WindowsService.exe
参考资料:


    • 这就是解决问题的方法:

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

      它太老了,但对我来说很有用。。。我做了一些改变

      我的服务是手动启动的,所以在批处理中我包含了start命令,然后打开控制台检查已安装的服务

      @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.
      
      安装和卸载示例
      只是猜测一下,但是.\My.WindowsService.exe呢?“%~dp0”-在Windows批处理文件中引用的%~dp0(这是一个零)变量将扩展到该批处理文件的驱动器号和路径。变量%0-%9引用批处理文件的命令行参数。%1-%9引用批处理文件名后的命令行参数。%0引用批处理文件本身。当您将InstallUtil的路径硬编码为
      C:\Windows\Microsoft.NET\Framework\v4.0.30319\
      时,为什么还要麻烦
      set DOTNETFX2
      set PATH
      
      @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 Instalar Servicio......
      echo ---------------------------------------------------
      InstallUtil /i "%~dp0WindowsService1.exe"
      echo ---------------------------------------------------
      pause
      echo Done.
      
      
      
      @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 Desintalar Servicio...
      echo ---------------------------------------------------
      InstallUtil /u "%~dp0WindowsService1.exe"
      echo ---------------------------------------------------
      pause
      echo Done.