代码之家  ›  专栏  ›  技术社区  ›  Matt Long

无图形用户界面应用程序包

  •  9
  • Matt Long  · 技术社区  · 14 年前

    我想创建一个没有图形用户界面的助手应用程序,它可以访问应用程序包。我在查看Xcode命令行项目模板,但这些模板都只是生成可执行文件。我如何创建类似命令行工具的东西,它不显示应用程序菜单,但提供对.app中捆绑资源的访问?我是不是想错了?

    谢谢。

    2 回复  |  直到 14 年前
        1
  •  11
  •   Peter Hosey    14 年前

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

    它被称为代理,通过创建常规应用程序并设置 LSUIElement 字符串__1__的键。

        2
  •  16
  •   Barry Wark    14 年前

    彼得的回答(使用 LSUIElement )可能是你想要的。有时候,我想创建一个实际的命令行应用程序,它也有一个应用程序包。如果其他人遇到同样的情况,我发现…

    应用程序包不是可执行文件。真正的可执行文件隐藏在: MyApp.app/Contents/MacOS/MyApp 是名为myapp的应用程序的实际mach-o可执行文件。标准Xcode模板将应用程序链接到appkit.framework,并有一个main.m定义 main() 用于启动 NSApplication 实例。但是,您可以将任何可执行文件放入应用程序包中,包括仅控制台应用程序。只需更换 主() 功能在 main.m 在控制台应用程序的应用程序模板中 主体() 函数并从应用程序的链接框架中删除appkit.framework。

    如果需要,可以用一个m a in.c替换m a in.m,该m a in.c声明了一个m a in函数,如果您想完全避免objective-c(尽管在m a in.m中没有必要指定objective-c,如果您替换了 主体() 功能)。

    要从控制台运行应用程序,必须指定实际的可执行文件,而不是应用程序包,因此必须键入 myapp.app/contents/macos/myapp 在命令行。当我将应用程序包用于控制台应用程序(提供链接的框架、资源等)时,我通常会创建一个指向可执行文件的symlink,并在安装或首次运行期间将symlink放入/usr/local/bin(或路径上的其他地方)。