与其使用 shell 脚本进行用户交互,不如利用 IA 收集您需要的答案,将它们填充到 IA 变量中,然后在一个或多个“执行脚本/批处理文件”操作中使用这些变量来完成安装后的工作。
假设您想收集名字、姓氏和电话,然后将它们写入安装目录中的文件(我知道这是人为的,但希望是示范性的)。
- 添加跳转标签并将其命名为“获取用户信息”
- 添加控制台操作“获取用户输入”以读取名字。将结果分配给
$FIRST_NAME$
。
- 添加控制台操作“获取用户输入”以读取姓氏。将结果分配给
$LAST_NAME$
。
- 添加控制台操作“获取用户输入”以读取电话号码。将结果分配给
$PHONE_NUMBER$
。
- 添加“跳转到目标”动作和“获取用户信息”的下一个跳转动作(#1,上面)。添加规则以验证这三个变量,以便
TRUE
结果将执行跳转到“获取用户信息”。换句话说,一个 BAD first name 或 BAD last name 或 BAD phone number 应该评估为TRUE
。这会将用户发送回“获取用户信息”目标标签。三个有效值应评估为假,从而不执行跳转。我知道。有点奇怪。
- 最后,根据需要为每个目标安装平台添加尽可能多的“执行脚本/批处理文件”操作。对于这些操作中的每一个,添加一条规则,将该操作的执行限制到特定平台。对于 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$
是“执行脚本/批处理文件”操作存储进程退出代码的默认变量。
现实生活中的安装脚本可能比这更复杂。您可以收集任意数量的变量并在任意数量的安装后脚本中使用它们。这些脚本然后专注于完成工作,而不是与用户交谈。那应该是IA的工作。
两个分手的想法:
首先,同样的技术也可以用于 GUI 安装程序。事实上,在同一个项目中混合 GUI 和控制台输入操作会将您的安装程序扩展到图形和控制台目标平台。无论您如何收集输入,安装后脚本都保持不变。
最后,您应该在预安装期间提出您的问题(如果可能)。这样,如果他们不能或不会回答问题,用户可以决定放弃安装。如果用户不愿意或无法提供您需要的信息,则在安装后提出问题可能会使安装挂起,或迫使用户回滚。