在 Linux 上运行的 Platypus 的替代品(它构建了一个在用户双击时运行脚本的 mac .app)?
Posted
技术标签:
【中文标题】在 Linux 上运行的 Platypus 的替代品(它构建了一个在用户双击时运行脚本的 mac .app)?【英文标题】:Alternatives to Platypus (which builds a mac .app that runs a script when user double clicks it), which run on Linux? 【发布时间】:2018-04-05 20:58:42 【问题描述】:我已经有可以在 mac 上运行的软件,它可以由主“运行器”脚本驱动。但是,我希望将软件打包为 .app。在 Mac 上,我可以运行 'platypus' (https://www.sveinbjorn.org/platypus),它会创建一个非常好的 .app 文件,该文件调用该运行程序脚本作为入口点(正是我想要做的)。使用起来非常简单。
问题是,鸭嘴兽本身只能在 mac 上运行,我需要在 Linux 机器上将它们捆绑在一起(创建 .app)。
是否有替代 Platypus 的替代方案,它可以实现相同的结果(生成一个 .app,以脚本作为入口点),但可以在 Linux 上构建? 或者,有谁知道最新教程,解释如何手动完成此操作(但在 Linux 上)?
(我看过这个:How to build a dmg Mac OS X file (on a non-Mac platform)?,但它是用于 dmg 文件的,而我需要一个 .app 文件。另外,我对像鸭嘴兽这样简单的程序特别好奇。)
【问题讨论】:
【参考方案1】:一个mac .app“文件”实际上只是一个文件夹(您可以通过右键单击“显示包内容”来浏览内容。 您需要更改的主要部分是 .sh 脚本本身,它可以在应用程序包中找到:yourapp.app/Contents/MacOS/yourscript.sh
因此,您可以复制现有的 yourapp.app 并将其用作模板,只需在 Linux 中编辑脚本内容和应用程序(文件夹)名称即可。 复制回来时可能需要设置权限(chmod +x 等)。我不确定是否没有测试过这种方法,但我不明白为什么它不起作用。
【讨论】:
实际上,我上周采用了这种方法,并且完全有效! (在 yourapp.app/Contents/MacOS/youapp 创建一个 shell 脚本,我 chmod 到 777。注意 MacOS 文件夹中的可执行文件的名称,必须与应用程序的名称完全相同)【参考方案2】:在 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版本):
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
然后,您可以在桌面上分配该 foo.app(例如):
mv foo.app "/Users/$(whoami)/Desktop/"
【讨论】:
以上是关于在 Linux 上运行的 Platypus 的替代品(它构建了一个在用户双击时运行脚本的 mac .app)?的主要内容,如果未能解决你的问题,请参考以下文章
在使用替代方案的 Linux 系统上,JAVA_HOME 的正确路径是啥?