الكاكاو: الطريقة الصحيحة للحصول على قائمة بأدلة الإضافات المحتملة للتطبيق؟

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

  •  25-09-2019
  •  | 
  •  

سؤال

في تطبيق الكاكاو عمومًا ، يمكننا تثبيت حزمة مكون إضافي في أحد الأماكن. على سبيل المثال ، إذا كان التطبيق يسمى "myapp" ، فستتمكن من تثبيت المكون الإضافي على:

  • /applications/myapp.app/contents/plugins
  • ~/Library/Application Support/MyApp/Plugins
  • /مكتبة/دعم التطبيق/myapp/الإضافات
  • /شبكة/مكتبة/دعم التطبيق/myApp/المكونات الإضافية

أنا أبني NSArray من المسارات التي يجب البحث فيها بالترتيب الصحيح ، لكنني متأكد تمامًا من أنني أفعل هذا الخطأ لأنه يبدو أنني أقوم بالكثير من العمل لشيء يبدو أن Apple توفر الكثير من الوظائف.

NSArray *systemSearchPaths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSAllDomainsMask, YES);
NSMutableArray *searchPaths = [NSMutableArray array];

NSFileManager *fileManager = [NSFileManager defaultManager];

for (NSString *systemPath in systemSearchPaths) {
    NSString *systemPluginsPath = [systemPath stringByAppendingPathComponent:@"PlugIns"];
    // FIXME: Remove debug code
    NSLog(@"Considering plugin path %@", systemPluginsPath);
    if ([fileManager fileExistsAtPath:systemPluginsPath]) {
        [searchPaths addObject:systemPluginsPath];
    }
}

[searchPaths addObject:[[NSBundle mainBundle] builtInPlugInsPath]];

ينتج عن هذا الصفيف الذي تم إرجاعه بواسطة NSSearchPathForDirectoriesInDomains, ، مع ال builtInPlugInsPath القيمة الملحقة حتى النهاية.

ومع ذلك ، فإنه يبحث في الواقع أدلة مثل "~/library/application دعم/plugins" (مفقود المجلد "myapp"). قبل أن أبدأ في اختراق الرمز لضخ اسم طلبي (الذي يخضع للتغيير في أي وقت) ، هل أفعل هذا الخطأ؟

هل هناك طريقة لإخبار الكاكاو "أعطني كل مسارات البحث عن" دلائل "الإضافات" لهذا التطبيق "؟

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

المحلول

لا. أنت تفعل ذلك بشكل صحيح.

يمكنك الحصول على اسم التطبيق الخاص بك في وقت التشغيل عن طريق سؤال الحزمة الرئيسية عن قاموس المعلومات والبحث عنه kCFBundleNameKey فيه. عند إعادة تسمية التطبيق الخاص بك ، قم بتغيير اسم الحزمة في info.plist.

(بالتأكيد لا تستخدم طلبك اسم الملف, ، لأن هذا أكثر هشاشة.)

كن على دراية بأن المستخدمين قد لا يعجبهم إذا قاموا بتثبيت المكونات التي قاموا بتثبيت العمل لأنك أعيد تسمية التطبيق الخاص بك.

لاحظ أن الكود الخاص بك أعلاه لن يلتقط مجلد الإضافات داخل حزمة التطبيق. لذلك ، اسأل حزمةك الرئيسية عن مسار المكونات الإضافية المدمجة أو عنوان URL.

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