3

Apache の procrun を使用して Windows サービスを作成していますが、適切にセットアップするのに苦労しています。バッチ ファイルを使用して procrun インストールを実行しています。私の質問は 2 つあります。

  1. 名前にスペースが含まれるサービスを作成できません。この例は Apache から取得したもので、prunsrv サービスのインストールをセットアップしています。

    prunsrv //IS//TestService --DisplayName="Test Service" \
        --Install=prunsrv.exe --Jvm=auto --StartMode=jvm --StopMode=jvm \
        --StartClass=org.apache.SomeStartClass --StartParams=arg1;arg2;arg3 \
        --StopClass=org.apache.SomeStopClass --StopParams=arg1#arg2
    

    C:\Program Files\ のどこかにインストール済みのサービスがあり、スペースが含まれています。正しいパスを正しく指すには、 --Install パスを「C:\Program Files\prunsrv.exe」にする必要があります。パスを引用符で囲まない場合:

    --Install=C:\Program Files\prunsrv.exe
    

    Windows サービスは、インストール パスを次のように認識します。

    C:\Program
    

    これは無効な場所です。私が使用する場合:

    --Install="C:\Program Files\prunsrv.exe"  (or) 
    "--Install=C:\Program Files\prunsrv.exe"
    

    Windows サービスは、インストール パスを次のように認識します。

    "C:\Program Files\prunsrv.exe"
    

    ...これも無効な場所です(文字通り、引用符でそのパスを実行しようとします。)

    パスにスペースを含む Windows サービスを正しくインストールする方法を知っている人はいますか?

  2. さらに複雑な問題が発生した場合は、より詳細なドキュメントがあると便利です。procrun に関する追加のドキュメントや使用例はありますか? これまでに見つけたリソースのリストは次のとおりです。

    他の質問で使用されている適切なリソースが利用できなくなったようです: http://blog.platinumsolutions.com/node/234

4

2 に答える 2

3

質問1については、短い名前のみで構成される同等のパスを使用してみることができます。FORループを使用してロングネームパスを変換することができます。

FOR %%F IN ("C:\Program Files\prunsrv.exe") DO SET prunsrv=%%~sF
prunsrv … --Install=%prunsrv% …
于 2011-08-06T22:19:28.587 に答える
1

私はこれが古いことを知っていますが、少し賢い解決策は次のとおりです。

set JVM_DLL="c:\Program Files\Java\jre6\bin\server\jvm.dll"

prunsrv //IS//%SERVICE_NAME% --Jvm=%JVM_DLL%

于 2013-01-28T15:28:17.130 に答える