我需要采取不同的操作,具体取决于OS X上安装的Flash Player版本(由于Flash错误)。有没有办法以编程方式确定版本号?
我正在使用WebKit,BTW。
编辑:
我也试过
NSBundle* myBundle = [NSBundle bundleWithPath: @"/Library/Internet Plug-Ins/Flash Player.plugin/Contents/Info.plist"];
虽然路径名存在但是。 “myBundle”永远是零。
答案 0 :(得分:1)
您只需要使用任何可以让您在当前安装的插件的CFBundleVersion
处使用的内容。像这样的东西在shell脚本环境中工作:
/usr/libexec/PlistBuddy -c 'Print CFBundleVersion' /Library/Internet\ Plug-Ins/Flash\ Player.plugin/Contents/Info.plist
可能有一种方法可以搜索系统的已安装应用程序列表,以查找与com.macromedia.Flash Player.plugin
匹配的软件包ID,并从系统记录中提取软件包版本。
编辑 :看起来NSWorkspace
和启动服务只是将项目映射到相关应用的捆绑ID,然后将捆绑ID映射到网址或FSRef
。所以最终,通过这种方法,你必须抓住适当的捆绑并从那里拉出版本。
可能还有一种方法可以从webview中运行的某些JavaScript代码中获取此信息。例如,Adobe的SWFObject
似乎使这很容易。有关更多信息,请参阅"Detecting Flash Player versions and embedding SWF files with SWFObject 2"。
答案 1 :(得分:1)
离开Contents/Info.plist
部分;你需要得到捆绑,而不是它的Info.plist:
NSBundle* flashBundle = [NSBundle bundleWithPath: @"/Library/Internet Plug-Ins/Flash Player.plugin"];
NSString flashVersion = flashBundle.infoDictionary[(id)kCFBundleVersionKey];
请记住在没有安装Flash Player的情况下覆盖案例。