如何更改OS X应用程序包中的可执行文件

时间:2009-04-08 16:19:45

标签: firefox macos

我想在Firefox启动之前运行一个脚本&退出之后。在Ubuntu中,我通过创建一个先调用我的函数的新快捷方式,然后调用firefox命令,然后调用我的最后一个函数来完成此操作。由于firefox命令会一直阻塞,直到应用程序退出,我的最后一个函数会在进程结束后立即调用。

然而,在OS X中我不能很好地做到这一点,因为我最终在扩展坞上有两个图标。我的脚本之一变成了一个应用程序&另一个用于Firefox应用程序。我更愿意只有一个停靠图标&不要破坏Firefox更新。

我目前的解决方案是将MacOS / firefox {, - bin}重命名为'real-'前缀,然后将我的shell脚本命名为“firefox-bin”。这有效,但我很确定下一次firefox尝试自我更新我是吐司。

我尝试将捆绑包的Info.plist文件中的“CFBundleExecutable”属性更改为我的脚本,但这不起作用。

有人可以提供任何其他建议吗?

2 个答案:

答案 0 :(得分:3)

创建常规应用程序包但在其上设置LSUIElement,因此脚本应用程序的图标在停靠栏中隐藏,并包含Firefox 包中。

执行此操作的一种简单方法是使用Platypus。配置Platypus如下:

  • 单击“参数”。检查“设置 $ 1到应用程序的路径“复选框, 所以你的脚本可以引用文件 在包内。

  • 选中“后台运行” - 此设置 LSUIElement为你。

  • 在“文件和文件夹”列表中 与应用程序捆绑在一起 资源文件夹“,删除Firefox。

  • 将输出更改为“无”,以便您的日志 消息进入系统控制台。

  • 将Firefox的图标文件(firefox.icns)放在“自定义图标”上。

  • 将“App Name”更改为Firefox。

对于看起来像这样的脚本:

#!/bin/sh
echo before >&2
$1/Contents/Resources/Firefox.app/Contents/MacOS/firefox-bin
echo after >&2

输出如下:

4/8/09 1:16:33 PM [0x0-0x801801].net.sabi.PlatypusScript[76610] before 
4/8/09 1:16:35 PM firefox-bin[76613] Database load time: 0.373 (717 objects) 
4/8/09 1:16:35 PM [0x0-0x801801].net.sabi.PlatypusScript[76610]
2009-04-08 13:16:35.699 firefox-bin[76613:10b] Database load time: 0.373 (717 objects) 
4/8/09 1:16:57 PM [0x0-0x801801].net.sabi.PlatypusScript[76610] after 

如果您的用户以其他方式启动Firefox,例如使用URL处理程序和打开HTML文件,则您需要使用本机应用程序,该应用程序可以将相应的Apple事件传递到Firefox,并添加相应的URL和文件处理程序信息到Info.plist。 (aemreceive是Apple Event接收的方便Python包装器。)

答案 1 :(得分:0)

如果您的Mac OS版本可用,请使用Automator工作流程。