Не удается запустить мое приложение после установки с помощью сценария NSIS?

Я успешно создал скрипт nsis для своего java-проекта. Я преобразовал свой java-проект в файл bat (для работы с Windows требуется файл bat) файл с именем test.bat. Мои шаги по установке выполнены успешно.

После установки батника не могу запустить службу. Я проверил следующий путь

Start Menu -> Control Panel -> Administrative Tools -> Services.

Я вижу службы в этом списке, но не вижу имени файла службы.

Я пробовал следующие строки скрипта

!define MUI_FINISHPAGE_RUN "$INSTDIR\test.bat"

Также я пробовал этот

Function test
  ExecShell "" "$INSTDIR\test.bat"
FunctionEnd

Как это решить?


person Ami    schedule 09.10.2012    source источник
comment
Является ли ваше приложение услугой? Ваш установщик nsis регистрирует ваше приложение как службу Windows? Службы Windows требуют реализации определенного набора API. Кроме того, что вы подразумеваете под преобразованием java-проекта в bat? Вы переименовали .jar в .bat?   -  person Seki    schedule 09.10.2012
comment
Я не знаю, как зарегистрировать свое приложение в качестве службы Windows. Можете ли вы мне объяснить? В моем файле bat содержится путь к классам для всех файлов jar.   -  person Ami    schedule 12.10.2012


Ответы (1)


Я установил службу Java с оболочкой с http://wrapper.tanukisoftware.org, которая может устанавливать банки как сервис. IIRC вам потребуется, чтобы файлы wrapper.exe, wrapper.dll и wrapper.jar были установлены вместе с вашим приложением. Посетите веб-сайт для получения дополнительной информации.

Затем у вас есть вызов NSIS этой оболочки для установки службы на целевой машине:

Detailprint "Installing service"
nsExec::Exec "$\"$INSTDIR\wrapper.exe$\" -i $\"$INSTDIR\wrapper.conf$\""

Часть деинсталлятора:

Detailprint "Stopping service"
nsExec::Exec "$\"$INSTDIR\wrapper.exe$\" -p $\"$INSTDIR\wrapper.conf$\""

Detailprint "Removing service"
nsExec::Exec "$\"$INSTDIR\wrapper.exe$\" -r $\"$INSTDIR\wrapper.conf$\""

Как видите, вам также потребуется создать файл wrapper.conf, чтобы указать сведения о сервисе (например, какой основной класс использовать). После установки службы вы сможете запустить ее с чем-то вроде...

Exec '"net start your_service_name"'
person Larsen    schedule 26.10.2012