سؤال

لديّ تطبيق أريد أن أحمله (مع بعض الملفات الإضافية) معًا داخل تطبيق Wrapper.

حرفيًا الشيء الوحيد الذي أريد القيام به هو جعل تطبيق Wrapper قم بتشغيل ملف مورد (أي كما لو كنت كتبت:

/path/to/Resources/Bundled.app/Contents/MacOS/executable

في المحطة.

منطقي؟ اعتقدت أن هذا يجب أن يكون بسيطًا ، لكنني لا أجد طريقة بسيطة للقيام بذلك- برمجة الكاكاو الخاصة بي محدودة ، على أقل تقدير.

شكرا مقدما!

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

المحلول

يمكن لبرنامجك الخارجي استخدام NSBundle لتحديد موقع البرنامج الداخلي ضمن حزمة البرنامج الخارجي.

لتشغيل البرنامج الداخلي: إذا كان تطبيقًا ، فاستخدمه خدمات الإطلاق أو Nsworkspace; ؛ إذا كانت أداة سطر الأوامر ، فاستخدم nstask.

نصائح أخرى

طريقة واحدة ، إذا كان "التطبيق" ملفوف هو مجرد نص shell أو شيء من هذا القبيل ، هو بلاتيبوس.

إذا كان تطبيقًا فعليًا (.app bundle) ، فلماذا لا يفعل التطبيق A أي شيء سوى تشغيل التطبيق B؟ لماذا التطبيق A على الإطلاق؟

لدي نشر مدونة على هذا: تحويل أي برنامج نصي shell إلى تطبيق قابل للنقر المزدوج. يذكر الإدخال "ابدأ بحزمة تطبيق فارغة" ... والتي يمكنك الحصول عليها باستخدام أداة Pashua المذكورة ، إذا كنت أتذكر بشكل صحيح ...

فقط من أجل الأجيال القادمة (وإذا كان يساعد أي شخص آخر ، فإليك الرمز الكامل الذي استخدمته (داخل ملف AppDelegate.m):

NSString *appName = @"";
NSString *bundledApp = [[NSBundle bundleWithPath:[[NSBundle
                                                           mainBundle] pathForResource:appName ofType:@"app"]]
                          bundlePath];
NSWorkspace *launchApp = [[NSWorkspace alloc] init];
NSLog(@"Launching %s", bundledApp);
[launchApp launchApplication:bundledApp];
[launchApp release];

// Make Launcher terminate (if it serves no other purpose)
[NSApp terminate:nil];
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top