Mac应用程序包能够启动多个实例

3
问题:如何创建一个Mac程序,能够默认打开多个实例?
一般来说,Mac应用程序包只维护一个程序实例。也就是说,如果我双击“VLC”,它会打开VLC程序。如果我再次双击,它会将之前的VLC窗口置于最前面;而不是打开一个新的VLC实例。但如果我在VLC上运行“open -n”,它将强制VLC打开第二个实例。
我正在创建一个Mac应用程序包,并希望用户的第二次双击会启动应用程序的第二个实例。我在Info.plist中没有找到任何相关的键。有什么想法吗?

XCode?Qt?Java?...? - Thomas Ayoub
1
使用Oracle的AppBundler打包的Java应用程序:https://java.net/projects/appbundler。在.app / Contents / MacOS中生成“JavaAppLauncher”二进制文件,用于执行启动。 JavaAppLauncher二进制文件的创建发生在此处找到的main.m中:https://java.net/projects/appbundler/sources/svn/show/appbundler/native?rev=34 - ChaimKut
JavaAppLauncher是Mac的通用二进制启动器,它从Info.plist中解析选项,然后使用这些选项启动Java。其源代码在此处:https://java.net/projects/appbundler/sources/svn/show/appbundler/native?rev=34。我认为启动器不太相关,应该有一种方法在Bundle级别上控制这种单实例行为。这就是为什么我认为在Info.plist中会有一个标志,但我没有看到任何相关内容。 - ChaimKut
1个回答

3

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


2
在尝试类似操作时,我偶然发现了这个。当从终端直接调用shell脚本时,它似乎是有效的。但是,在info.plist中将CFBundleExecutable指向shell脚本似乎不起作用。在finder中双击图标仍然只会启动一个实例。看起来macOS有意阻止这种解决方法。 - persiflage

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接