如何从Dock中的程序快捷方式检索命令行参数?

时间:2013-03-07 10:18:13

标签: macos command-line dock

我的问题与this earlier one正好相反。我正在开发一个开源应用程序,它以2种形式发布,预编译的二进制文件和源代码。

我安装了预编译的二进制文件,它工作正常,在Dock中有一个漂亮的小图标。

我成功编译了源代码,但是在启动时遇到了运行时错误。调查后我怀疑这个应用程序需要命令行选项才能正常运行。

所以我的问题是:如果我的假设是正确的并且工作版本实际上是定义命令行参数,那么如何从打包的应用程序中检索CL参数

如果它有任何区别,我正在谈论的应用程序是Cyberduck,我正在运行OS X版本10.8.2

1 个答案:

答案 0 :(得分:1)

问题不在于命令行。来自代码here

// Get an instance of the non-localized keys.
CFDictionaryRef bundleInfoDict = CFBundleGetInfoDictionary(mainBundleRef);  
if(NULL == bundleInfoDict) {
    fprintf(stderr, "[Launcher Error] No info dictionary.\n");
    exit(-1);
}

其中mainBundleRef引用.app包。

问题是应用程序内的Info.plist(/Applications/Cyber​​duck.app/Contents/Info.plist)中没有正常的密钥。它已经以某种方式被破坏了。代码库中的一个看起来很好看。有关结构的信息,我将查看Apple开发document

最简单的解决方法是重新下载并安装应用程序。