Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash Platypus(它构建了一个mac.app,当用户双击它时运行一个脚本)的替代品,它运行在Linux上?_Bash_Macos_.app - Fatal编程技术网

Bash Platypus(它构建了一个mac.app,当用户双击它时运行一个脚本)的替代品,它运行在Linux上?

Bash Platypus(它构建了一个mac.app,当用户双击它时运行一个脚本)的替代品,它运行在Linux上?,bash,macos,.app,Bash,Macos,.app,我已经有了在mac上运行的软件,它可以由主“runner”脚本驱动。但是,我希望将该软件打包为.app。在mac上,我可以运行“platypus”(platypus),它将创建一个非常好的.app文件,该文件将runner脚本作为入口点调用(这正是我要做的)。它使用起来非常简单 问题是,platypus本身只在mac上运行,我需要在Linux机器上将这一切捆绑在一起(创建.app) 是否有Platypus的替代品,它可以实现相同的结果(生成一个.app,以脚本作为入口点),但可以在Linux上构

我已经有了在mac上运行的软件,它可以由主“runner”脚本驱动。但是,我希望将该软件打包为.app。在mac上,我可以运行“platypus”(platypus),它将创建一个非常好的.app文件,该文件将runner脚本作为入口点调用(这正是我要做的)。它使用起来非常简单

问题是,platypus本身只在mac上运行,我需要在Linux机器上将这一切捆绑在一起(创建.app)

是否有Platypus的替代品,它可以实现相同的结果(生成一个.app,以脚本作为入口点),但可以在Linux上构建?或者,有谁知道最新的教程解释了如何手动实现这一点(但在Linux上)

(我看到了:但它是用于dmg文件的,而我需要一个.app文件。另外,我特别好奇像Platypus这样简单的程序。)

mac.app“文件”实际上只是一个文件夹(你可以通过右键单击“显示包内容”来浏览内容)。 您需要更改的主要部分是.sh脚本本身,它可以在应用程序包中找到:yourapp.app/Contents/MacOS/yourscript.sh

因此,您可以复制现有的yourapp.app并将其用作模板,只需在Linux中编辑脚本内容和应用程序(文件夹)名称。
您可能必须在复制回时设置权限(chmod+x等)……我不确定是否未测试此方法,但我不明白为什么它不起作用。

在BSUK答案之上添加一些参考代码(bash):

mkdir -p foo.app/Contents/MacOS
cp foo.sh foo.app/Contents/MacOS/foo
chmod +x foo.app/Contents/MacOS/foo
还可以使用以下参考代码为应用程序设置一个漂亮的图标:
(请提前准备logo.png文件及其对应的icon.icns版本):

然后,您可以在桌面上(例如)分配该foo.app,其中包括:


事实上,我上周采用了这种方法,它完全有效!(在yourapp.app/Contents/MacOS/youapp上创建一个shell脚本,并将其chmod为777。注意MacOS文件夹中可执行文件的名称必须与应用程序的名称完全相同)
mkdir -p foo.app/Contents/Resources
cp icon.icns foo.app/Contents/Resources/
cp logo.png ./
sips -i logo.png
DeRez -only icns logo.png > tmpicns.rsrc
Rez -append tmpicns.rsrc -o file.ext
SetFile -a C file.ext
cp -f file.ext foo.app/Icon$'\r'
rm tmpicns.rsrc logo.png file.ext
SetFile -a C foo.app
mv foo.app "/Users/$(whoami)/Desktop/"