Я устанавливаю программу на Java в виде exe-файла со связанной папкой JRE. Я не могу получить настройки для успешного вызова связанного java.exe
с моим приложением.
Итак, на моем ноутбуке уже установлена Java, поэтому сработало следующее:
[Files]
Source: "jre\*"; DestDir: "{app}\jre"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "build\launch4j\Application Lite.exe"; DestDir: "{app}"; Flags: ignoreversion; \
AfterInstall: MyAfterInstall
[Code]
procedure MyAfterInstall();
var ResultCode: Integer;
begin
Exec(
'cmd.exe',
'/c java -cp ' + AddQuotes(ExpandConstant('{app}\Application Lite.exe')) +
' com.examplesoftware.applicationlite.support.hibernateSupport',
'', SW_SHOW, ewWaitUntilTerminated, ResultCode);
end;
Где {app}
по умолчанию c:\Example Software\Application Lite
.
Следующее не работает, когда я пытаюсь использовать прилагаемый JRE:
[Code]
procedure MyAfterInstall();
var ResultCode: Integer;
begin
Exec(
'cmd.exe',
'/k ' + AddQuotes(ExpandConstant('{app}\jre\bin\java.exe')) +
' -cp ' + AddQuotes(ExpandConstant('{app}\Application Lite.exe')) +
' com.examplesoftware.applicationlite.support.hibernateSupport',
'', SW_SHOW, ewWaitUntilTerminated, ResultCode);
end;
Я получаю ошибку:
'c: \ Example' не распознается как внутренняя или внешняя команда,
работающая программа или командный файл.
Если я использую echo
с кодом, подобным этому:
Exec(
'cmd.exe',
'/k echo ' + AddQuotes(ExpandConstant('{app}\jre\bin\java.exe')) +
' -cp ' + AddQuotes(ExpandConstant('{app}\Application Lite.exe')) +
' com.examplesoftware.applicationlite.support.hibernateSupport',
'', SW_SHOW, ewWaitUntilTerminated, ResultCode);
и скопируйте команду, она работает. Я не понимаю, почему это ломается.