3

我正在使用 Apache 的 procrun 创建一个 Windows 服务,但我很难正确设置它。我正在使用批处理文件来执行 procrun 安装。我的问题是两方面的。

  1. 我无法创建名称中包含空格的服务。此示例取自 Apache,正在设置 prusrv 服务安装:

    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

我知道这很旧,但不太聪明的解决方案是:

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

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

于 2013-01-28T15:28:17.130 回答