Создание сервиса с пробелами в пути установки - PullRequest
2 голосов
/ 06 августа 2011

Я создаю службу Windows, используя функцию Apache, и у меня возникают трудности с ее правильной настройкой.Я использую командный файл для выполнения установки procrun.У меня вопрос в два раза.

  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

Ответы [ 2 ]

2 голосов
/ 07 августа 2011

Для вопроса № 1 вы можете попробовать использовать эквивалентный путь, состоящий только из коротких имен.Можно преобразовать путь с длинным именем с помощью цикла FOR:

FOR %%F IN ("C:\Program Files\prunsrv.exe") DO SET prunsrv=%%~sF
prunsrv … --Install=%prunsrv% …
1 голос
/ 28 января 2013

Я знаю, что это старое, но немного менее умное решение:

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...