интерактивный сценарий оболочки из InstallAnywhere в консольном режиме

Я использую InstallAnywhere в консольном режиме в Linux для установки и хочу запустить интерактивный сценарий оболочки после завершения установки. Под «интерактивным» я подразумеваю, что скрипт должен задавать вопросы и получать информацию от пользователя.

Я попытался запустить его с действием «Выполнить целевой файл», но скрипт ничего не выводит на консоль (он наверняка выполняется, потому что выводит отладочную информацию в выходной файл). Я также пытался вывести скрипт на передний план с помощью «fg %1» (это была последняя команда в InstallAnywhere), но это тоже не сработало.

Есть ли способ выполнить интерактивный скрипт с помощью InstallAnywhere в консольном режиме?


person user2279902    schedule 14.04.2013    source источник


Ответы (1)


Вместо того, чтобы использовать сценарий оболочки для взаимодействия с пользователем, используйте IA для сбора необходимых ответов, заполните их переменными IA, а затем используйте эти переменные в одном или нескольких действиях «Выполнение сценария/пакетного файла» для выполнения работы после установки.

Скажем, вы хотите собрать имя, фамилию и телефон, а затем записать их в файл в каталоге установки (надуманный, я знаю, но, надеюсь, показательный).

  1. Добавьте метку перехода и назовите ее, например, «Получить информацию о пользователе».
  2. Добавьте действие консоли «Получить пользовательский ввод», чтобы прочитать имя. Назначьте результат $FIRST_NAME$.
  3. Добавьте действие консоли «Получить пользовательский ввод», чтобы прочитать фамилию. Назначьте результат $LAST_NAME$.
  4. Добавьте действие консоли «Получить пользовательский ввод», чтобы прочитать номер телефона. Назначьте результат $PHONE_NUMBER$.
  5. Добавьте действие «Перейти к цели» со СЛЕДУЮЩИМ действием перехода «Получить информацию о пользователе» (№ 1 выше). Добавьте правила для проверки этих трех переменных, чтобы результат TRUE выполнял переход к «Получить информацию о пользователе». Другими словами, ПЛОХОЕ имя, ПЛОХАЯ фамилия или ПЛОХОЙ номер телефона должны оцениваться как TRUE. Это вернет пользователя к целевой метке «Получить информацию о пользователе». Три допустимых значения должны оцениваться как ложные, таким образом НЕ выполняя прыжок. Я знаю. Это странно.
  6. Наконец, добавьте столько действий «Выполнить сценарий/пакетный файл», сколько необходимо для каждой целевой платформы установки. Для каждого из этих действий добавьте правило, ограничивающее выполнение этого действия определенной платформой. Для действий Unix/Linux обязательно установите флажок «Не заменять неизвестные переменные», иначе IA заменит ВАШИ переменные скрипта пробелами. (предостережение: используйте форму полного имени переменной ${MY_VARIABLE_NAME}, чтобы помочь IA отличить ваши переменные от своих собственных).

Версия Unix/Linux может выглядеть так:

#!/bin/sh
echo <<EOF
Name: $FIRST_NAME$ $LAST_NAME$
Phone: $PHONE_NUMBER$
EOF > $USER_INSTALL_FOLDER$$/$userName.txt

Версия для Windows аналогична:

echo "Name: $FIRST_NAME$ $LAST_NAME$" > $USER_INSTALL_FOLDER$$/$userName.txt
echo "Phone: $PHONE_NUMBER$" >> $USER_INSTALL_FOLDER$$/$userName.txt

Обратите внимание на использование $/$, которое IA преобразует в соответствующий разделитель пути для текущей платформы.

После действий «Выполнить скрипт/пакетный файл» вы можете добавить шаги для оценки успеха скрипта/пакетного файла. Добавьте правила для действий «Перейти к цели», чтобы оценить значение $EXECUTE_EXITCODE$. $EXECUTE_EXITCODE$ — это переменная по умолчанию, в которой код выхода процесса хранится с помощью действий «Выполнить скрипт/пакетный файл».

Реальные сценарии установки могут быть более сложными. Вы можете собрать любое количество переменных и использовать их в любом количестве сценариев после установки. Затем эти сценарии сосредотачиваются на выполнении работы, а не на общении с пользователем. Это должно быть работой ИА.

Две прощальные мысли:

Во-первых, этот же метод можно использовать и с установщиком с графическим интерфейсом. Фактически, смешивание действий ввода с графическим интерфейсом и консолью в одном и том же проекте расширяет ваш установщик как на графические, так и на консольные целевые платформы. Сценарии после установки остаются неизменными независимо от того, как вы собираете входные данные.

Наконец, вы должны задать свои вопросы (если возможно) во время предварительной установки. Таким образом, пользователь может отказаться от установки, если он не может или не хочет отвечать на вопросы. Задавание вопросов во время после установки может привести к зависанию установки или вынудить пользователя откатиться, если он не хочет или не может предоставить нужную вам информацию.

person tdfunk    schedule 29.05.2013