gpt4 book ai didi

linux - 控制台模式下来自 InstallAnywhere 的交互式 shell 脚本

转载 作者:太空宇宙 更新时间:2023-11-04 04:16:52 24 4
gpt4 key购买 nike

我在 Linux 中以控制台模式使用 InstallAnywhere 进行安装,并希望在完成安装后运行一些交互式 shell 脚本。我所说的“交互式”是指脚本应该提出一些问题并接收用户输入。

我尝试使用“执行目标文件”操作来运行它,但脚本不会在控制台上打印任何内容(它肯定会执行,因为将调试信息打印到输出文件)。我还尝试使用“fg %1”(这是 InstallAnywhere 中的最后一个命令)将脚本置于前台,但它也不起作用。

有没有办法通过InstallAnywhere在控制台模式下执行交互式脚本?

最佳答案

不要使用 shell 脚本进行用户交互,而是利用 IA 收集您需要的答案,将它们填充到 IA 变量中,然后在一个或多个“执行脚本/批处理文件”操作中使用这些变量来完成安装后工作。

假设您想收集名字、姓氏和电话,然后将它们写入安装目录中的文件中(我知道这是做作的,但希望是示范性的)。

  1. 添加跳转标签并将其命名为“获取用户信息”
  2. 添加控制台操作“获取用户输入”以读取名字。将结果分配给 $FIRST_NAME$
  3. 添加控制台操作“获取用户输入”以读取姓氏。将结果分配给$LAST_NAME$
  4. 添加控制台操作“获取用户输入”以读取电话号码。将结果分配给 $PHONE_NUMBER$
  5. 添加“跳转到目标”操作以及“获取用户信息”的下一个跳转操作(上面#1)。添加规则来验证这三个变量,以便 TRUE 结果将执行跳转到“获取用户信息”的跳转。换句话说,BAD 名字或 BAD 姓氏或 BAD 电话号码应评估为 TRUE。这会将用户带回到“获取用户信息”目标标签。三个有效值应评估为 false,从而不执行跳转。我知道。很奇怪。
  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$ 是默认变量,“执行脚本/批处理文件”操作存储进程的退出代码。

现实生活中的安装脚本可能比这更复杂。您可以收集任意数量的变量并在任意数量的安装后脚本中使用它们。然后,这些脚本专注于完成工作,而不是与用户交谈。这应该是 IA 的工作。

两个分手的想法:

首先,同样的技术也可以用于 GUI 安装程序。事实上,在同一项目中混合 GUI 和控制台输入操作可将安装程序扩展到图形和控制台目标平台。无论您如何收集输入,安装后脚本都保持不变。

最后,您应该在预安装期间提出您的问题(如果可能)。这样,如果用户不能或不愿回答问题,他们可以决定放弃安装。如果用户不愿意或无法提供您所需的信息,在安装后提问可能会导致安装挂起,或者迫使用户回滚。

关于linux - 控制台模式下来自 InstallAnywhere 的交互式 shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16000915/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com