Не мога да стартирам приложението си след инсталиране с помощта на NSIS скрипт?

Създадох успешно nsis скрипт за моя java проект. Преобразувах моя java проект в bat (машината с Windows изисква bat файл за изпълнение) файл с име test.bat. Стъпките ми за инсталиране бяха извършени успешно.

След инсталиране 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 файл съдържа classpath за всички jar файлове.   -  person Ami    schedule 12.10.2012


Отговори (1)


Инсталирах java услуга с обвивката от http://wrapper.tanukisoftware.org, която може да инсталира jar като услуга. 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