我想要使用“脚本结果”要求来检查特定进程是否正在运行,以便我可以在安装开始之前向用户发送消息。 我的脚本是一个shell脚本,返回1表示失败,0表示成功。我遇到的问题是,无论我的返回值如何,安装程序流程都将其解释为失败。我没有使用一个令人难以置信的简单脚本:PackageMaker“脚本结果”要求永远不会通过
#!/bin/bash
echo "script starting">> /tmp/myfile
true
(回声是保证自己的剧本,其实,跑步)。我尝试用很多东西替换最后一行(出口0,出口1,“真”,“真”),但没有任何结果通过测试。
我还发现了以下JavaScript代码,当我激活此要求时,它将被添加到distribution.dist中。
<installation-check script="pm_install_check();"/>
<script>function pm_install_check() {
if(!(system.run('path/to/script/myscript.sh') == true)) {
my.result.title = 'Title';
my.result.message = 'Message';
my.result.type = 'Fatal';
return false;
}
return true;
}
</script>
据我所知,if语句中的表达式永远不会计算为真。所以,我认为这是我的问题。不过,我不知道如何解决这个问题,因为这个代码是由PackageMaker生成的。
更新
我已经决定的印象,这是PackageMaker一个bug下工作,并且很接近的解决方法。而不是使用规定“的脚本结果”,我使用的规定“Javascript的结果”,并建立了一个JavaScript函数看起来像
function my_check() {
code = system.run('path/to/script/myscript.sh');
return code == 0;
}
现在我唯一的问题是,这将只有当我点上班我的脚本通过绝对路径。显然这对安装程序造成了问题。
谢谢凯文!对我来说已经太迟了:-)但我希望这可以帮助其他人,因为它当然不直观。 – evanflash 2011-09-13 22:58:41
谢谢!帮助过我 - 其他人。 – elsamuko 2013-03-18 21:15:01