서브 프로세스를 생성하는 응용 프로그램이 있습니다. 이러한 하위 프로세스에는 동일한 응용 프로그램 번들에있는 XPCServices가 필요합니다. 이 my.app/Contents/MacOS/my
하위 프로세스가 도크에서 튀는 것을 방지하려면 어떻게해야합니까?
내 XPC 서비스가
하위 프로세스가 my.app/Contents/Resources/mysubprocess
에있는 my.app/Contents/XPCServices/com.my.service.xpc
에 앉아, 그리고 응용 프로그램이 시작되고에서
내 주요 응용 프로그램이 실행 파일을 가지고, 내 서브 프로세스는 XPC에 연결할 수 없습니다 서비스 (왜 안 되니?)하지만 Dock에는 나타나지 않습니다.
반면에 하위 프로세스가 my.app/Contents/MacOS/mysubprocess
이면 하위 프로세스가 내 XPC 서비스에 성공적으로 연결됩니다 (주 응용 프로그램은이 XPC 서비스에서 아무 것도 필요 없습니다). 하위 프로세스가 갑자기 독에 자체 수신 거부 아이콘을 가져옵니다. OS X은 무언가가 *.app/Contents/MacOS/*
에서 시작되면이를 감지하여 응용 프로그램으로 간주합니다.
분명히 그렇게하면 서브 프로세스가 XPC 서비스에 연결할 수 있지만 서브 프로세스는 숨겨져 있고 Dock에는 나타나지 않습니다. 내가 LSUIElement 및 LSBackgroundOnly 내 사용자 기본값으로 등록 시도했는데 트릭을하지 않았다. 내가 LSUIElement 사용자 기본값으로 작성하는 경우, 내 응용 프로그램은 바람직하지 않은 주 메뉴를 얻을하지 않습니다 (하지만 LSUIElement의 경우에는 NO
이 절대적으로 올바른 동작 임).
기본적으로 두 가지 질문이 있습니다. 서브 프로세스 바이너리를 my.app/Contents/MacOS/
외부로 이동할 때 XPCServices를 찾을 수 없습니다. 하위 프로세스가 my.app/Contents/Resources/
인 경우 서비스에 대한 상대적 경로가 동일하게 유지되므로 다소 이상하게 보입니다. 또한 내 하위 프로세스를 디버깅하는 동안 [NSBundle mainBundle]
을 확인했으며 올바른 경로를 가지고 있는데 심지어 Resources
폴더에 있었던 경우에도 마찬가지입니다. 어떻게하면 XPC 서비스를 찾아야하는지 내 하위 프로세스에 알릴 수있는 방법이 있습니까?
다른 접근법은 Dock에서 수신 거부의 하위 프로세스를 방지 할 수 있다는 것입니다. 내 주요 응용 프로그램에는 아이콘과 메뉴가 필요합니다. 그렇다면 서브 프로세스가 my.app/Contents/MacOS/
폴더에 있더라도 Dock 아이콘을 실행하지 않도록 런타임에 지정하는 방법이 있습니까?
분산 객체가 트릭을 수행했습니다. 고맙습니다. –