我在Linux中以控制台模式使用InstallAnywhere进行安装,并希望在完成安装后运行一些交互式shell脚本。 “交互式”是指脚本应该提出一些问题并接收用户输入。
我尝试使用“执行目标文件”操作来运行它,但脚本没有向控制台打印任何内容(它确实执行了因为将调试信息输出到输出文件)。我还尝试使用“fg%1”将脚本置于前台(这是InstallAnywhere中的最后一个命令),但它也不起作用。
有没有办法在控制台模式下通过InstallAnywhere执行交互式脚本?
答案 0 :(得分:0)
不是使用shell脚本进行用户交互,而是利用IA收集所需的答案,将它们填充到IA变量中,然后在一个或多个“执行脚本/批处理文件”操作中使用这些变量来进行安装后工作
假设您要收集名字,姓氏和电话,然后将其写入您的安装目录中的文件(我知道,但我很有希望,但希望能够进行说明)。
$FIRST_NAME$
。 $LAST_NAME$
。$PHONE_NUMBER$
。TRUE
结果将执行跳转到“获取用户信息”。换句话说,BAD名字或BAD姓氏或BAD电话号码应评估为TRUE
。这将使用户返回“获取用户信息”目标标签。三个有效值应评估为false,从而不执行跳转。我知道。这很奇怪。${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和控制台输入操作会将安装程序扩展到图形和控制台目标平台。无论您如何收集输入,安装后脚本都保持不变。
最后,您应该在预安装期间提出问题(如果可能)。这样,如果用户不能或不会回答问题,他们可以决定保释安装。如果他们不愿意或无法提供您需要的信息,那么在安装后询问问题可能会导致安装停止,或强迫用户回滚。