2015-01-10 6 views
15

का उपयोग कर रहा टिम ट्यूटोरियल निम्नलिखित प्रवेश पर मेरे एप्लिकेशन स्वत: लॉन्च करने के लिए कोशिश कर रहा हूँ सक्षम करने से: http://blog.timschroeder.net/2012/07/03/the-launch-at-login-sandbox-project/त्रुटि जब मैक ओएस अनुप्रयोग के ऑटो लॉगिन एक सहायक

मैं पत्र के लिए निर्देशों का पालन किया है, लेकिन मैं एक त्रुटि हो रही है जब मैं अपने कंप्यूटर को फिर से प्रवेश इस प्रकार है:

Jan 10 12:55:01 pc61 com.apple.xpc.launchd[1] (com.myApp.macgap.helper[25725]): Could not resolve CFBundleIdentifier specified by service: -10814: com.myApp.macgap.helper 
Jan 10 12:55:01 pc61 com.apple.xpc.launchd[1] (com.myApp.macgap.helper): Service only ran for 0 seconds. Pushing respawn out by 10 seconds. 

की रूपरेखा तैयार करने के लिए:

  • मैं अपने मुख्य अनुप्रयोग "MyApp" (आईडी: com.myApp.macgap) कहा जाता है
  • उस ऐप में मेरे पास आईडी के साथ एक सहायक ऐप है: com.myApp.macgap.helper
  • जब आप मुख्य ऐप लॉन्च करते हैं और वरीयताओं पर जाते हैं, तो आपके पास ऑटो लॉगिन सक्षम करने का विकल्प होता है (ऐप्पल अनुपालन नियमों के अनुरूप)
  • मैं अपने कंप्यूटर से लॉग आउट, में फिर से प्रवेश करके देखने के लिए क्या हो रहा है (इस तरह मैं ऊपर कोड)

एक और मुद्दा उल्लेख के लायक मिलता है कंसोल को देखो, तब होता है जब मैं करता हूँ "दिखाएँ पैकेज सामग्री "ऐप पर और डबल सहायक ऐप्लिकेशन क्लिक करें, यह मुख्य एप्लिकेशन लॉन्च करता है ...

उत्तर

8

मैं था ठीक उसी अभी समस्या, और एक समाधान की तलाश करते समय यह (अनुत्तरित) प्रश्न मिला।

कम से कम मेरे मामले में, जब मैंने ऐप की प्रतिलिपि बनाई थी (एक्सकोड से एक देव-आईडी हस्ताक्षरित .app के रूप में निर्यात किया गया था) तो यह ठीक काम की वांछित कार्यक्षमता है, जो कि मेरे सभी विकास सामग्री के बिना एक ताजा ओएस एक्स इंस्टॉल/खाता है । बेशक यह प्रश्न में उल्लिखित ट्यूटोरियल में बताए गए अनुसार/अनुप्रयोगों में भी होना चाहिए।

मुझे यकीन है कि क्यों एप्लिकेशन की इस सुविधा मेरे विकास मशीन पर काम नहीं किया नहीं हूँ। शायद समस्या मेरे ऐप की अन्य सभी समान-समान प्रतियों के साथ कुछ प्रकार के संघर्ष के कारण हो सकती है, मेरे पास डिस्क पर है (मेरे पास ऐप के विभिन्न संस्करणों का एक संग्रह है, साथ ही कॉपी एक्सकोड स्टोर्स स्वयं भी हैं), सभी एक ही हैं निश्चित रूप से बंडल आईडी।

आशा इस एक ही रास्ता या किसी अन्य रूप में मदद करता है!

+1

विकास मशीन पर इसे हल करने के तरीके पर [answer] (http://stackoverflow.com/a/36326592/458356) देखें। –

+0

यदि आपको सेवा की सभी प्रतियों का पता लगाने की आवश्यकता है: https://stackoverflow.com/questions/27876046/error-when-enabling-auto-login-of-mac-os-app-using-a-helper/48201871#48201871 –

5

मैं एक ही समस्या थी, एक में/आवेदन मेरे लिए समस्या हल छोड़कर एप्लिकेशन के अन्य प्रतियां को हटाने। एक्सकोड द्वारा जेनरेट की गई .app फ़ाइलों को निकालने के लिए आप उत्पाद-> क्लीन चला सकते हैं।

+0

क्षमा करें, यह वही जवाब है लेकिन @byb ने आपके सामने जवाब दिया। – denislexic

0

मैं दूसरी प्रति नहीं मिल सकता है, लेकिन आप सेवा को हटा सकते हैं मिला:,

launchctl remove com.annoying.service 
8

यह सब कैसे launchd और launchctl काम करने के लिए नीचे आता है पहले से ही के रूप में:

एक टर्मिनल विंडो में उत्तर दिया गया, नियमित उपयोग केस को अक्सर ऐप को पुनर्स्थापित करके हल किया जा सकता है और यह सुनिश्चित किया जा सकता है कि ऐप एप्लिकेशन फ़ोल्डर के अंदर है। लेकिन एक और मामला है कि @byb इस बारे में बात कर रहा है, जब यह आपकी विकास मशीन पर होता है - यह अवैध लॉन्च कॉन्फ़िगरेशन के कारण हो सकता है।

जब आप SMLoginItemSetEnabled चलाने यह launchd सेवा में अन्य जानकारी के साथ आपका बंडल पहचानकर्ता पंजीकृत करता है। कुछ बिंदु बाद, जब आपका ऐप बदलता है, तो साफ हो जाता है, या इसके साथ कुछ और होता है, जिसे लॉन्च द्वारा उठाया जाता है, लॉन्चड उस विशेष लॉगिन आइटम को अक्षम कर सकता है। जाहिर है, कभी-कभी यह आसानी से नहीं जाता है, और SMLoginItemSetEnabled के साथ लगातार कॉल अपेक्षित काम नहीं करेगा या एजेंट/सहायक ऐप बस लॉन्च नहीं होगा।

कोशिश करने वाली पहली चीज़ बस आपके लॉन्चर के लिए बंडल पहचानकर्ता को बदल रही है। यदि यह समस्या हल करता है, तो मूल के साथ क्या गलत है यह पता लगाने का प्रयास करें। अक्षम सेवाओं और लॉगिन आइटम एसोसिएशन प्रदर्शित करने के लिए launchctl print-disabled "user/$(id -u)" चलाएं। अगर आउटपुट में आपके परेशान बंडल पहचानकर्ता शामिल हैं - आप भाग्य में हैं।

मुझे लॉन्चक्टल का उपयोग करके नाम से अक्षम सेवाओं को हटाने का कोई तरीका नहीं मिला और मैन्युअल रूप से कॉन्फ़िगरेशन फ़ाइलों को संपादित करके इसे करना पड़ा। क्योंकि वे सिस्टम के स्वामित्व में हैं, आप रूट को रूट के रूप में लॉन्च करने और आवश्यक संदर्भों को हटाने के बजाय, बस क्लिक और संपादित करने में सक्षम नहीं होंगे।

sudo /Applications/Xcode.app/Contents/MacOS/Xcode "/private/var/db/com.apple.xpc.launchd/loginitems.$(id -u).plist" 
sudo /Applications/Xcode.app/Contents/MacOS/Xcode "/private/var/db/com.apple.xpc.launchd/disabled.$(id -u).plist" 

पुनः प्रारंभ, launchctl print-disabled "user/$(id -u)" चलाने निकाले गए आइटम पुष्टि करने के लिए सूची में नहीं रह रहे हैं। SMLoginItemSetEnabled दोबारा प्रयास करें, उम्मीद है कि अब यह उम्मीद के अनुसार काम करेगा।

1

मैं घंटों तक इसके साथ संघर्ष कर रहा था। मेरे पास ऑटो लॉगिन के साथ कई ऐप्स थे लेकिन एक नया बस काम नहीं करना चाहता था। अजीब विकास मशीन पर काम किया आज़ादी:

1: Build App as normal 
2: Move it to Application directory 
3. Clean Xcode (CMD+k)!! 
4. Enable auto login in the app. 
5. Logout Login 

मैंने गलती से देखा है कि सिस्टम एप्लिकेशन (यह हर 10 सेकंड में कोशिश करता है) जब मैं साफ Xcode :)

+0

यह! Thnx बहुत कुछ –

0

के रूप में यह पहले से ही है, तो कहा गया था शुरू कर दिया वहाँ मशीन लॉन्च पर सेवा बंडल की एक प्रतियां अधिक नहीं हो सकती हैं, यह हल नहीं कर सकता कि बंडल पहचानकर्ता द्वारा कौन सा शुरू किया जाना चाहिए।

मैं आपको सलाह दूंगा कि आपकी सेवा की सभी प्रतियां मिलें और फिर वांछित लोगों को हटा दें।

import Cocoa 

let bundleId = "com.your.bundleId" 
let paths = LSCopyApplicationURLsForBundleIdentifier(bundleId as CFString, nil) 
print("Available service instances by bundle id: \(paths)") 

मेरे मामले में यह पैदा करता है:

Available service instances by bundle id: 
Optional(Swift.Unmanaged<__ObjC.CFArray>(_value: <__NSArrayI 0x6000002234a0>(
file:///Applications/MyApp.app/Contents/Library/LoginItems/MyService.app/, 
file:///Users/igor/Library/Developer/Xcode/Archives/2017-12-27/MyApp%2027-12-2017,%2016.06.xcarchive/Products/Applications/MyService.app/ 
) 
)) 

तो मैं easely की पहचान की प्रतिलिपि हटा दिया जाना चाहिए

इसके लिए आपको स्विफ़्ट कूट (स्विफ्ट खेल का मैदान में भी काम करता है) के बाद चलाने की आवश्यकता :

file:///Users/igor/Library/Developer/Xcode/Archives/2017-12-27/MyApp%2027-12-2017,%2016.06.xcarchive/Products/Applications/MyService.app/ 

उम्मीद है कि यह मदद करेगा।

0

यह मानते हुए कि आप कम से टिम श्रोएडर का नुस्खा का पालन किया: http://blog.timschroeder.net/2012/07/03/the-launch-at-login-sandbox-project/:

क्या वास्तव में मेरे लिए काम समाप्त हो गया, था, Xcode में, 1 से 2 करने के लिए अपने मुख्य परियोजना के बिल्ड नंबर बदलने के लिए मैं भी एक बिल्ड नंबर की कोशिश की 1000 और यह भी ठीक काम किया।

एक्सकोड में, अपना मुख्य प्रोजेक्ट लक्ष्य चुनें। फिर, 'सामान्य' टैब का चयन करें। यदि आप देखते हैं कि आपका बिल्ड 1 पर सेट है, तो इसे 2 में बदलें और फिर पुनर्निर्माण, पुन: नियोजित करें और देखें कि क्या यह आपके लिए समस्या का समाधान करता है या नहीं।

यह शायद कुछ समय में चलने वाली सबसे खराब बग्स में से एक था।

संबंधित मुद्दे