فشل في تحميل البرنامج المساعد NPAPI في Google Chrome على Mac OS X

StackOverflow https://stackoverflow.com/questions/2846286

سؤال

لقد كنت أحاول الحصول على Google Chrome (6.0.401.1 Dev) على Mac OS X لتحميل مكون إضافي NPAPI دون نجاح حتى الآن. لقد كنت أعمل حول مثال npsimple من هنا: http://git.webvm.net/؟p=npsimple.

باستخدام GCC على Mac و VC ++ 2008 على Windows I ، تمكنت من تشغيل Safari و Firefox على Mac OS X و Firefox و Google Chrome على Windows ، ولكن ليس على Google Chrome على Mac OS X.

عند محاولة تصحيح google chrome على Mac OS X ، بدا أن Google Chrome كان يتم تحميله لفترة وجيزة (وعلى الفور dyld-unloading) المكون الإضافي عند بدء التشغيل ، ولكن دون أن يبحث بالفعل عن أي رموز داخل المكون الإضافي أو استدعاء أي من الوظائف. يبدو أنه يفعل ذلك لكل مكون إضافي.

أيضًا ، عند تحميل صفحة باستخدام TIMPED-TAG للمكون الإضافي ، لا يبدو أن Google Chrome حتى تحميل المكون الإضافي ولم يتم استدعاء أي وظائف (ولا حتى np_getentrypoints). لا تقوم Google Chrome أيضًا بإخراج أي رسالة خطأ ، بل إنها ببساطة لا تقوم بتحميل البرنامج المساعد. لست متأكدًا من أنني اكتشفت كل شيء مع GDB بسبب استخدام Google Chrome باستخدام عمليات مختلفة ، لكنني جربت أيضًا جميع المفاتيح مثل --no-sandbox, --single-process و --plugin-startup-dialog (والتي لا يبدو أنها تعمل على الإطلاق على Mac OS X). لقد تأكدت أيضًا من بنية المباريات الثنائية (أي 32 بت لـ Google Chrome).

هل كان لدى أي شخص مشاكل مماثلة من قبل؟ هل هناك أي شيء أفتقده هنا ، مثل مفتاح GCC عند التجميع أو شيء من هذا القبيل؟

أي مساعدة سيكون موضع تقدير كبير.

هل كانت مفيدة؟

المحلول

لقد التحقيق في هذا مزيد من. المشكلة هي أن Npsimple's Localized.R يسرد فقط نوع MIME في إدخال المعرف 128 ، ومن المفترض أن يكون زوجًا من نوع التمديد/الملف. يبدو أن WebKit و Gecko يتسامحان مع الإدخال الأخير لعدم وجود إدخال تمديد الملف ، لكن Chromium لا.

هناك طريقتان لجعل البرنامج المساعد الخاص بك يعمل في الكروم لنظام التشغيل Mac:

  1. أفضل طريقة هي استخدام نمط info.plist الجديد لإعلان أنواع MIME ، الموصوفة في قسم "تسجيل المكون الخاص بك" من مستندات البرنامج المساعد من Apple. ويدعم هذا من قبل Firefox 3.5+ و Safari و Chrome على الأقل ؛ يمكنك ترك المورد بمثابة احتياطي للمتصفحات القديمة.

  2. إذا كنت ترغب فقط في استخدام المورد ، فيمكنك إضافة ملحق ملف فارغ إلى إعلان MIME عن طريق تغيير خط إدخال MIME في tocalized.r إلى:

    "التطبيق/x-vnd-aplix-foo" ، ""

كن على دراية بأنه في بعض المتصفحات (بما في ذلك الكروم) من المحتمل أن يسقط الدعم للطريقة القديمة القائمة على الموارد في المستقبل المنظور ، لذلك أشجع بشدة الذهاب مع الخيار 1.

(يمكن القول إنه خطأ في الكروم لا يتعامل مع هذا بأمان كما تفعل المتصفحات الأخرى ، ولكن نظرًا لأن هذه الطريقة قد تم إهمالها ، وهي ليست مشكلة لأي مكون إضافي يتم نشره بالفعل ، فمن غير المرجح أن يكون من غير المرجح أن يكون ذلك كن متغير.)

نصائح أخرى

لقد راجعت للتو البرنامج المساعد الخاص بي وهو يعمل أيضًا مع بناء Dev الذي ذكرته. لذا ، من حيث المبدأ ، يدعم Build Dev of Google Chrome المكونات الإضافية NPAPI من طرف ثالث. (في الماضي ، يبدو أننا بنيات Dev التي كانت تدعم فقط Flash و QuickTime Plugins.)

بعض الأشياء للتحقق:

  • هل تم تضمين المكون الإضافي الخاص بك في قائمة الإضافات المثبتة التي تحصل عليها عند كتابة "حول: الإضافات" في حقل عنوان المتصفح؟
  • هل قمت بفحص إخراج وحدة التحكم (قم بتشغيل Console.App)؟
    في بعض الأحيان تجد معلومات قيمة هناك ، على سبيل المثال ، عند فشل تحميل dylib ...
  • قد يكون هناك شيء مفقود من info.plist من حزمة البرنامج المساعد الذي تتوقعه Google Chrome.

مع اثنين من الاستثناءات المحددة للغاية (ما هي أنواع MIME التي تحاول التعامل معها؟) يجب تحميل أي مكون إضافي صالح لـ NPAPI. أفضل شيء يجب فعله هو تقديم خطأ مع أكبر قدر ممكن من التفاصيل حتى أتمكن من التحقيق (أعمل على دعم البرنامج المساعد لـ Google Chrome على جهاز Mac).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top