无GUI应用程序包

时间:2010-02-09 04:27:46

标签: objective-c cocoa command-line

我想创建一个没有GUI但可以访问应用程序包的帮助应用程序。我正在查看Xcode命令行项目模板,但这些只是生成可执行文件。如何创建类似命令行工具的东西,它不提供应用程序菜单,但可以访问.app中的bundle资源?我是否以错误的方式思考这个问题?

感谢。

2 个答案:

答案 0 :(得分:16)

彼得的答案(使用LSUIElement)可能就是你要找的东西。偶尔,我想创建一个也有应用程序包的实际命令行应用程序。如果其他人遇到同样的情况,这就是我发现的......

应用包不是可执行文件。真正的可执行文件隐藏在内部:MyApp.app/Contents/MacOS/MyApp是名为MyApp的应用程序的实际Mach-O可执行文件。标准的Xcode模板将应用程序链接到AppKit.framework,并有一个main.m,它定义了启动main()实例的可执行文件的NSApplication函数。但是,您可以将任何可执行文件放入应用程序包中,包括仅限控制台的应用程序。只需使用控制台应用main()函数替换应用程序模板中main.m中的main()函数,然后从应用程序的链接框架中删除AppKit.framework。

如果需要,可以将main.m替换为声明主函数的main.c,如果你想完全避免使用Objective-C(尽管如果你替换内容,main.m中没有必要特定于Objective-C main()函数)。

要从控制台运行应用程序,您必须指定实际的可执行文件,而不是应用程序包,因此您必须在命令行键入MyApp.app/Contents/MacOS/MyApp。当我使用app bundle作为控制台应用程序(提供链接的框架,资源等)时,我经常为可执行文件创建一个符号链接,并将符号链接放在/ usr / local / bin(或路径中的其他位置)安装或首次运行。

答案 1 :(得分:11)

  

我想创建一个没有GUI的辅助应用程序,但确实有...应用程序包。

这称为代理,您可以通过创建常规应用程序并将其LSUIElement键设置为字符串“1”来创建代理。