gpt4 book ai didi

PackageMaker "Result of Script"要求永远不会通过

转载 作者:行者123 更新时间:2023-12-01 09:07:20 25 4
gpt4 key购买 nike

我正在尝试使用“脚本结果”要求来检查特定进程是否正在运行,以便在安装开始之前向用户发送消息。我的脚本是一个 shell 脚本,失败返回 1,成功返回 0。我遇到的问题是,无论我的返回值如何,安装程序流程都将其解释为失败。我没有使用非常简单的脚本:

#!/bin/bash
echo "script starting">> /tmp/myfile
true

(回显是为了向自己保证脚本实际上正在运行)。我尝试用很多东西(导出 0、导出 1、“true”、“TRUE”)替换最后一行,但没有任何结果导致测试通过。

我还发现了以下 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 中的一个错误,并且接近解决方法。我没有使用“脚本的结果”要求,而是使用了“Javascript 的结果”要求,并构建了一个 Javascript 函数,看起来像

function my_check() {
code = system.run('path/to/script/myscript.sh');
return code == 0;
}

现在我唯一的问题是,这只有在我通过绝对路径指向我的脚本时才有效。显然这给安装者带来了问题。

最佳答案

对你来说可能为时已晚,但我觉得这应该记录在某个地方。

今天早上的大部分时间里,我一直在四处寻找答案。长话短说,我最终研究了通用 bash 脚本,并找到了一些关于从脚本调用的脚本返回值的信息。可以这样做:

您将使用 exit 0 的任何地方(为了成功)使用 $(exit 1)

正如你所料,exit 1 应该被替换为 $(exit 0)

我意识到这是倒退的,我并没有真正理解其背后的原因,但经过一些实验后我发现了。

关于PackageMaker "Result of Script"要求永远不会通过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5346446/

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