ユーザー インタラクションにシェル スクリプトを使用するのではなく、IA を利用して必要な回答を収集し、それらを IA 変数に詰め込み、それらの変数を 1 つ以上の「スクリプト/バッチ ファイルの実行」アクションで使用して、インストール後の作業を行います。
名、姓、および電話番号を収集し、それらをインストール ディレクトリ内のファイルに書き込みたいとします (わざと、私は知っていますが、できれば実証的です)。
- Jump ラベルを追加し、「Get User Info」のような名前を付けます
- 名を読み取るためのコンソール アクション「Get User Input」を追加します。結果を に割り当て
$FIRST_NAME$
ます。
- 姓を読み取るためのコンソール アクション「Get User Input」を追加します。結果を に割り当て
$LAST_NAME$
ます。
- コンソール アクション「ユーザー入力の取得」を追加して、電話番号を読み取ります。結果を に割り当て
$PHONE_NUMBER$
ます。
- 「Get User Info」の NEXT Jump アクションを含む「Jump To Target」アクションを追加します (上記の #1)。
TRUE
結果が「Get User Info」へのジャンプを実行するように、これら 3 つの変数を検証するルールを追加します。つまり、BAD の名、BAD の姓、または BAD の電話番号は、 と評価される必要がありTRUE
ます。これにより、ユーザーは「Get User Info」ターゲット ラベルに戻されます。3 つの有効な値が false と評価されるため、ジャンプは実行されません。知っている。それは奇妙だ。
- 最後に、ターゲット インストール プラットフォームごとに必要な数の「スクリプト/バッチ ファイルの実行」アクションを追加します。これらのアクションごとに、そのアクションの実行を特定のプラットフォームに制限するルールを追加します。Unix/Linux アクションの場合は、[不明な変数を置換しない] チェックボックスを必ずオンにしてください。そうしないと、IA が YOUR スクリプト変数を空白に置き換えます。(注意:
${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 が現在のプラットフォームの適切なパス区切り文字に変換する使用に注意してください。
「スクリプト/バッチ ファイルの実行」アクションの後に、スクリプト/バッチ ファイルの成功を評価するステップを追加できます。の値を評価する「Jump To Target」アクションのルールを追加します$EXECUTE_EXITCODE$
。$EXECUTE_EXITCODE$
プロセスの終了コードが「スクリプト/バッチ ファイルの実行」アクションによって格納されるデフォルトの変数です。
実際のインストール スクリプトは、これよりも複雑になる可能性があります。任意の数の変数を収集し、それらを任意の数のインストール後スクリプトで使用できます。これらのスクリプトは、ユーザーとの会話ではなく、作業の実行に集中します。それがIAの仕事です。
2 つの別れの考え:
まず、これと同じ手法を GUI インストーラーでも使用できます。実際、GUI とコンソール入力アクションを同じプロジェクトに混在させると、インストーラーがグラフィカル ターゲット プラットフォームとコンソール ターゲット プラットフォームの両方に拡張されます。インストール後のスクリプトは、入力の収集方法に関係なく同じままです。
最後に、インストール前に (可能であれば) 質問をする必要があります。そうすれば、ユーザーは、質問に答えられない、または答えられない場合に、インストールを中止することを決定できます。インストール後に質問をすると、インストールがハングしたままになったり、ユーザーが必要な情報を提供したくない、または提供できない場合にロールバックを余儀なくされる可能性があります。