0

我想在继续安装之前检测计算机上是否安装了某些库,但我无法使其正常工作。

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

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

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

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

4

3 回答 3

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
于 2013-03-01T12:22:29.800 回答
0

在启动时运行此脚本时,您并没有确切说明错误是什么。可能是您的 shell 的 PATH 尚未初始化,在这种情况下,脚本将无法找到“dpkg”可执行文件。如果事实上这就是问题所在,指定 dpkg 的完整路径,例如“/usr/bin/dpkg -s ia32-libs”将解决问题。

于 2013-03-01T19:02:37.733 回答
0

将脚本文件添加到 Installer->Custom Code & Resource,然后指定

${installer:sys.resourceDir}/scriptName.sh

对于“可执行”属性或“运行可执行文件或批处理文件”操作。

这也适用于“启动”节点。

于 2013-03-04T14:54:23.653 回答