#install4j
#install4j
Вопрос:
Мое программное обеспечение создано с использованием install4j. Когда я устанавливаю его с параметрами -q -varfile (например. example.sh -q -varfile responce.varfile), затем я получаю сообщение об ошибке ниже. Я использую версии install4j 5.1.6 с Java 1.7
Чего мне здесь не хватает?
Starting Installer ...
In application "Installer", property "Progress interface creation script":
java.lang.StackOverflowError
at java.lang.System.getProperty(System.java:711)
at com.install4j.runtime.installer.helper.comm.HelperCommunication.getParentIdentifier(Unknown Source)
at com.install4j.runtime.installer.helper.comm.HelperCommunication.isElevatedHelper(Unknown Source)
at com.install4j.runtime.installer.helper.comm.HelperCommunication.helperUnsupported(Unknown Source)
at com.install4j.runtime.installer.frontend.GUIHelper.invokeOnEDT(Unknown Source)
at com.install4j.runtime.installer.frontend.headless.UnattendedScreenExecutor.getProgressInterface(Unknown Source)
at com.install4j.runtime.installer.ContextImpl.getProgressInterface(Unknown Source)
at I4jScript_Internal_1.eval(I4jScript_Internal_1.java:18)
at I4jScript_Internal_1.evaluate(I4jScript_Internal_1.java:24)
at com.install4j.runtime.installer.helper.Script.evaluate(Unknown Source)
at com.install4j.runtime.installer.ContextImpl.runScript(Unknown Source)
at com.install4j.runtime.installer.ContextImpl.runScript(Unknown Source)
at com.install4j.runtime.installer.frontend.headless.UnattendedScreenExecutor$1.run(Unknown Source)
at com.install4j.runtime.installer.frontend.GUIHelper.invokeOnEDT(Unknown Source)
Пожалуйста, найдите следующий скриншот и сценарий —
Разрешить автоматический режим -> Сценарий создания интерфейса выполнения:- (скриншот прилагается ниже.)
UnattendedProgressInterface unattend =(UnattendedProgressInterface)context.getProgressInterface();
unattend.setVisible(true);
return unattend ;
Комментарии:
1. Вызываете ли вы context.getProgressInterface() в действии с повышенными правами «Запустить скрипт»?
2. Привет, этот код уже написан в установщике -> Разрешить автоматический режим -> unfendedprogressinterface unattend =(unfendedprogressinterface)context.getProgressInterface(); unattend.setVisible(true); возвращает unattend ; Также права доступа предоставляются максимальные. Но он все еще не работает. Приведенный выше код написан на уровне установщика, нужно ли мне писать его для какого-либо конкретного шага / сценария? Чего я не понимаю?
3. Я не понимаю этот комментарий. Можете ли вы добавить скрипт-нарушитель к своему вопросу?
4. Отредактировал вопрос, добавил изображение и код. Проясняет ли это вопрос?
Ответ №1:
Сценарий создания интерфейса progress предназначен для того, чтобы вы могли предоставить пользовательскую реализацию. То, что вы делаете, может привести только к ошибке переполнения стека.
Если вы хотите отобразить окно с индикатором выполнения во время автоматической установки, перейдите
-q -splash «Заголовок»
в командной строке или установите для свойства «Режим выполнения по умолчанию» значение «Автоматический режим с диалогом выполнения».
Комментарии:
1. Я не могу вас правильно понять. как мы можем установить «Режим выполнения по умолчанию» в «Автоматический режим с диалогом выполнения», не могли бы вы, пожалуйста, дать мне несколько простых шагов или пример, чтобы это помогло мне в полной мере. и с параметром -q -splash «title», каким будет заголовок, это должен быть заголовок экрана ya, только простое сообщение.
2. Перейдите к шагу Установщик-> Экраны и действия, выберите установщик, затем найдите свойство «Режим выполнения по умолчанию» в списке свойств с правой стороны. «заголовок» — это то, что вы хотите в качестве заголовка окна выполнения.
3. я настроил вышеуказанные параметры, но по-прежнему получаю ту же ошибку. ниже приведен пример запуска командной строки установщика с использованием опции -splash. Например. bash example.sh -q -splash «Title» -varfile response.varfile
4. Вы должны удалить скрипт, который вызывает эту ошибку.
5. Наш установщик по умолчанию запускается в режиме графического интерфейса. Мы также хотим поддерживать режим консоли, предоставляя опцию -q и предоставляя файл var. Что для этого нужно сделать? Должны ли мы прикрепить скрипт в разделе «Разрешить автоматический режим»? Если да, то каким он должен быть?