2012-09-28 14 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

それはあまりにも古いですが、私はいくつかの変更を行った...私のために有用でした。

私のサービスは手動で起動するので、バッチで私は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. 
関連する問題