1

我有一个捆绑包中的启动器应用程序,/Applications它选择一个二进制文件并 fork/execs 它。我想要的是让他们共享一个码头瓷砖。我尝试了一些方法,但没有一个是令人满意的。

1. 将二进制文件与应用程序捆绑在一起

如果二进制文件包含在应用程序包中,这似乎可行。但是,通常认为 bundle 修改自身是不好的做法,我不能保证用户对/Applications. 我尝试将符号链接添加到 eg~/Library/Application Support/MyBinaries/mybinary但这给出了一个单独的停靠图块。

2. 将二进制文件保留在应用程序包之外

如果二进制文件在应用程序包之外,我会得到一个单独的停靠图块。为什么我不将其中一个进程设置为代理,因为其中一个图块不出现?这必须是启动器,因为用户不应该能够跳过启动器关于运行哪个二进制文件的逻辑。不幸的是,这意味着退出无法正常工作,并且您无法单击停靠栏来恢复二进制文件的窗口。可以通过在应用程序之间正确传递消息来使其工作。

3. 大量骇客的解决方案

通过添加额外的间接级别,有一种相当老套的方法,其中应用程序在/Applications/MyLauncher.app启动另一个应用程序~/Library/Application Support/Launcher2.app,其中包含其捆绑包中的二进制文件。只有第二个启动器有停靠图标。

这似乎相当hacky,所以我想我会向SO开放它,看看是否有人有更好的解决方案?

编辑

在选项 2 中,我将二进制文件保存在它们自己的包中。不要这样做。当我将它们保存在常规文件夹中时,一切正常。

4

1 回答 1

0

回答我自己的问题。

如果您发现自己处于这种情况,请使用选项 2。将应用程序放在/Applications/MyApplication.app并将二进制文件保存在一个名为类似的文件夹中~/Library/Application Support/MyApplication/Binaries/,然后愉快地 fork/exec 它们。绝对不要将它们放在应用程序包中,因为这是我困惑的根源。这解决了我的所有标准:

  • 不需要 root 访问权限来修改二进制文件
  • 启动器和二进制文件共享一个停靠图块
  • 在 Dock 磁贴上按退出会退出二进制文件。
  • 应用程序出现在 Launchpad 中
  • 通过 Dock 启动通过启动器应用程序
于 2012-09-03T17:25:44.547 回答