脚本的不同结果在Startup上运行

时间:2013-03-01 12:13:35

标签: linux install4j

我想检测计算机上是否安装了某些库,然后再进行安装,但我无法正常工作。

我有以下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退出代码,因为所有内容都已正确安装。

我将此脚本设置为在安装的启动阶段,在请求权限步骤之后运行,并将其设置为等待终止和输出流。为了让我能够停止安装程序,我还将故障策略设置为“作为用户是否重试或在失败时退出”。

问题在于,尽管安装了软件包,但脚本仍然失败,安装程序会询问是继续还是退出。

我不确定如何解决此问题,因此如果不满足某些先决条件,我可以停止安装程序。或者有更好的方法来实现这一目标吗?

3 个答案:

答案 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”节点。