Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 我可以在info.plist中将多个可执行文件的信息放在同一个包中吗?_Macos_Qt_Info.plist - Fatal编程技术网

Macos 我可以在info.plist中将多个可执行文件的信息放在同一个包中吗?

Macos 我可以在info.plist中将多个可执行文件的信息放在同一个包中吗?,macos,qt,info.plist,Macos,Qt,Info.plist,我有一个Qt应用程序,它使用助手显示帮助 在Mac电脑上,我把他的助手打包在包里。我可以包含其所有库的唯一方法是将Assistant可执行文件放置在与app可执行文件相同的MacOS文件夹中,并正确链接所有库依赖项 是否有办法将两个可执行文件的信息都放在Info.plist中 不,不能将多个可执行文件的信息放在同一info.plist中。(好吧,您总是将自定义键放入Info.plist并在其中存储您喜欢的任何属性列表数据,但系统不会注意这些键。) 为什么不将助手捆绑到自己的捆绑包中,并将该捆绑包

我有一个Qt应用程序,它使用助手显示帮助

在Mac电脑上,我把他的助手打包在包里。我可以包含其所有库的唯一方法是将Assistant可执行文件放置在与app可执行文件相同的MacOS文件夹中,并正确链接所有库依赖项


是否有办法将两个可执行文件的信息都放在Info.plist中

不,不能将多个可执行文件的信息放在同一info.plist中。(好吧,您总是将自定义键放入Info.plist并在其中存储您喜欢的任何属性列表数据,但系统不会注意这些键。)

为什么不将助手捆绑到自己的捆绑包中,并将该捆绑包放在主应用程序的捆绑包中?助手包将有自己的Info.plist文件。此外,如果您创建了一个问题,关于链接或动态加载问题使您认为必须将其全部放入主捆绑包,那么您可能会发现有更好的解决方案

将助手可执行文件放置在同一MacOS文件夹中

我建议不要这样做。助手是主应用程序的资源,因此它应该位于resources文件夹中。如果要从主应用程序启动助手应用程序,则可以

在Info.plist中只能定义一个应用程序。如果要添加更多,则密钥中会出现冲突


例如,CbundleIdentifier是一个唯一的URI,用于命名包(例如com.apple.calculator)。例如,当应用程序复制到/Applications文件夹时,操作系统使用URI向操作系统注册应用程序。操作系统希望键是根字典的子项,并且其值必须是唯一的。如果有多个名为CbundleIdentifier的密钥,它将不知道哪个是有效的。

尽管你可以将几乎所有垃圾扔进Mac应用程序包,但你不会得到很多好处

如果我理解正确,您有一个Mac应用程序(通常捆绑)和一个称为“助手”的辅助应用程序,您希望嵌入到同一个应用程序捆绑包中

您还提到了必须与助手位于同一目录中的库(.dylib)

现在-如果这些库仅由助手端应用程序使用,我建议您将助手打包为代码包(Apple提供了大量关于这些库的信息,并且您可以从Xcode获得易于使用的模板)。然后,您可以使用Xcode将其复制到主应用程序包中的正确位置(我选择“插件”),并使用NSBundle API启动它


但是,如果这些.dylibs在主应用程序和助手之间共享,那么我会说,继续吧,将你的助手、.dylibs和主应用程序的二进制文件放在同一个“MacOS-X”目录中,并使用posix API或shell命令启动助手。当然,它将共享(如果可能的话)主应用程序的每个资源,因为它们位于同一个位置。但是,主应用程序的捆绑包只能有一个CbundleExecutable条目,该条目应指向主应用程序的二进制文件。

关于将助手与应用程序捆绑在一起,我问了很多问题。。。我之所以把它和应用程序放在一起,而不是它自己的捆绑包,是因为我必须包括应用程序和助手的Qt框架,否则。。。我没有找到一种方法将Assistant链接到应用程序包中的框架上(请参阅我的问题,谢谢您的回答-我的应用程序是在Qt中构建的,并使用Qt的Assistant作为帮助工具-所以很多Qt框架库(dylib)是在两者之间共享的。我最终得到了一个折衷方案…到底定位了什么?