【问题标题】:Mac application bundle able to launch multiple instancesMac 应用程序包能够启动多个实例
【发布时间】:2015-02-16 09:05:08
【问题描述】:

问题:如何创建一个可以默认打开多个实例的Mac应用程序?

通常,Mac 应用程序包维护一个 Mac 程序实例。也就是说,如果我双击“VLC”,它将打开 VLC 程序。如果我再次双击,它将把以前的 VLC 窗口带到前台;它不会打开 VLC 的新实例。但是如果我在 VLC 上运行“open -n”,它会强制 VLC 打开第二个实例。

我正在创建一个 Mac 应用程序包,并希望用户第二次双击以启动该应用程序的第二个实例。我找不到在 Info.plist 中使用的任何相关键。有什么想法吗?

【问题讨论】:

  • XCode ?吗?爪哇? ... ?
  • 使用 Oracle 的 AppBundler 捆绑的 Java 应用程序:java.net/projects/appbundler。在执行启动的 .app/Contents/MacOS 中生成“JavaAppLauncher”二进制文件。 JavaAppLauncher 二进制文件的创建发生在 main.m 中:java.net/projects/appbundler/sources/svn/show/appbundler/…
  • JavaAppLauncher 是一个通用的 Mac 二进制启动器,它解析来自 Info.plist 的选项,然后使用这些选项启动 Java。它的源代码在这里:java.net/projects/appbundler/sources/svn/show/appbundler/…。我假设 Launcher 的相关性较低,并且应该有一种方法可以在 Bundle 级别控制这种单实例行为。这就是为什么我认为 Info.plist 中会有一个标志,但我没有看到任何相关内容。

标签: macos bundle


【解决方案1】:

open -n 命令捆绑到应用程序包中的shell 脚本中,并让它启动您的主应用程序。

【讨论】:

  • 偶然发现这个试图做类似的事情。当直接从终端调用 shell 脚本时,它似乎可以工作。在 shell 脚本的 info.plist 中指向 CFBundleExecutable 似乎不起作用。双击 finder 中的图标仍然只启动一个实例。似乎 macos 故意停止这种解决方法。
猜你喜欢
  • 1970-01-01
  • 2014-05-18
  • 1970-01-01
  • 2011-10-25
  • 1970-01-01
  • 2017-10-07
  • 2021-05-09
  • 1970-01-01
  • 2019-11-15
相关资源
最近更新 更多