OSX / Xcode / Objective-C: Как определить версию установленного Flash Player? - PullRequest
3 голосов
/ 12 сентября 2011

Мне нужно предпринять различные действия в зависимости от версии Flash Player, установленной в OS X (из-за ошибки Flash).Есть ли способ программно определить номер версии?

Я использую WebKit для этого, кстати.

РЕДАКТИРОВАТЬ:

Я также пытался

NSBundle* myBundle = [NSBundle bundleWithPath: @"/Library/Internet Plug-Ins/Flash Player.plugin/Contents/Info.plist"];

И хотя путь существует.«myBundle» всегда ноль.

Ответы [ 2 ]

1 голос
/ 02 октября 2012

Просто оставьте часть Contents/Info.plist; вам нужно получить пакет, а не его Info.plist:

NSBundle* flashBundle = [NSBundle bundleWithPath: @"/Library/Internet Plug-Ins/Flash Player.plugin"];
NSString flashVersion = flashBundle.infoDictionary[(id)kCFBundleVersionKey];

Не забудьте прикрыть случай, когда не установлен Flash Player.

1 голос
/ 13 сентября 2011

Вам просто нужно использовать все, что позволит вам на CFBundleVersion установленного в данный момент плагина.Примерно так работает в среде сценариев оболочки:

/usr/libexec/PlistBuddy -c 'Print CFBundleVersion' /Library/Internet\ Plug-Ins/Flash\ Player.plugin/Contents/Info.plist

Может быть способ найти в списке установленных приложений системы идентификатор пакета, соответствующий com.macromedia.Flash Player.plugin, и извлечь версию пакета из системной записи.

РЕДАКТИРОВАТЬ : похоже, что и NSWorkspace, и Launch Services просто отображают элементы для связывания идентификаторов соответствующих приложений, а затем сопоставляют связкуИдентификатор URL или FSRef.В конечном счете, при таком подходе вам нужно взять соответствующий пакет и извлечь версию оттуда.

Вероятно, есть также способ получить эту информацию из некоторого кода JavaScript, работающего в веб-представлении.Например, SWFObject от Adobe, кажется, делает это довольно легко.Для получения дополнительной информации см. «Определение версий Flash Player и встраивание SWF-файлов с помощью SWFObject 2» .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...