我想检测计算机上是否安装了某些库,然后再进行安装,但我无法正常工作。
我有以下shell脚本:
#!/bin/bash
verify_distro(){
CHECK_IF_PACKAGE=`dpkg -s ia32-libs`
result=`echo $?`
echo ${result}
if [ ${result} == 0 ]; then
echo "ia32-libs installed"
return 0
else
echo "not installed"
return 1
fi
}
verify_distro
如果我安装了ia32-libs并在控制台中手动运行,然后执行echo $?
查看输出,我会得到0退出代码,因为所有内容都已正确安装。
我将此脚本设置为在安装的启动阶段,在请求权限步骤之后运行,并将其设置为等待终止和输出流。为了让我能够停止安装程序,我还将故障策略设置为“作为用户是否重试或在失败时退出”。
问题在于,尽管安装了软件包,但脚本仍然失败,安装程序会询问是继续还是退出。
我不确定如何解决此问题,因此如果不满足某些先决条件,我可以停止安装程序。或者有更好的方法来实现这一目标吗?
答案 0 :(得分:0)
尝试消除无用的代码行检查其他脚本输出:
#!/bin/bash
verify_distro(){
dpkg -s ia32-libs > /dev/null
if [ $? == 0 ]; then
echo "ia32-libs installed"
return 0
else
echo "not installed"
return 1
fi
}
verify_distro
答案 1 :(得分:0)
在启动时运行此脚本时,您没有确切地说出错误是什么。可能是您的shell的PATH尚未初始化,在这种情况下,脚本将无法找到“dpkg”可执行文件。如果实际上这是问题,请指定dpkg的完整路径,例如“/ usr / bin / dpkg -s ia32-libs”可以解决这个问题。
答案 2 :(得分:0)
将脚本文件添加到Installer-> Custom Code&资源,然后指定
${installer:sys.resourceDir}/scriptName.sh
表示“Executable”属性或“Run executable or batch file”操作。
这也适用于“Startup”节点。