macOS Catalina (10.15)에서 응용 프로그램 폴더가 두 개로 분리되어 있습니다.
요약
System/Applications
에 배치합니다. Applications
에 있습니다. 참고
Catalina에서 파일 시스템이 이렇게 바뀝니다.
Catalina에서는 파일 액세스를 더욱 엄격화한다. APFS(Apple File System)로 포맷된 루트 볼륨(시동 디스크)은 시스템 영역과 데이터 영역으로 2분할되고, 그 중 시스템 영역은 완전히 리드 온리가 된다.
순정 앱은 시스템 영역에서 읽기 전용, 그 외의 앱은 종래대로 데이터 영역에 할당되고 있다고 한다.
확인
macOS 10.15 환경
System/Applications
에 포함되어 있는지 확인할 수 있습니다. pwd
/System/Applications
ls
App Store.app Contacts.app Image Capture.app Music.app Preview.app System Preferences.app
Automator.app Dictionary.app Launchpad.app News.app QuickTime Player.app TV.app
Books.app FaceTime.app Mail.app Notes.app Reminders.app TextEdit.app
Calculator.app FindMy.app Maps.app Photo Booth.app Siri.app Time Machine.app
Calendar.app Font Book.app Messages.app Photos.app Stickies.app Utilities
Chess.app Home.app Mission Control.app Podcasts.app Stocks.app VoiceMemos.app
Applications
에 있습니다. $ pwd
/Applications
ls
CotEditor.app Safari.app Xcode.app
Google Chrome.app Numbers.app Sourcetree.app iMovie.app
...
macOS 10.13 환경
cd /Applications
ls
Adobe Acrobat DC Microsoft Outlook.app
Alfred.app Microsoft PowerPoint.app
App Store.app Microsoft Remote Desktop.localized
...
NSSearchPathForDirectoriesInDomains의 동작 변경
개요
NSSystemDomainMask
에서 검색하는 값이 변경된 것 같습니다./System/Applications
가 새로 추가되었기 때문입니다. NSSearchPathForDirectoriesInDomains
는 디렉토리를 검색하는 데 사용됩니다. 참고
코드
NSArray *paths1 = NSSearchPathForDirectoriesInDomains(NSApplicationDirectory, NSUserDomainMask, YES);
NSArray *paths2 = NSSearchPathForDirectoriesInDomains(NSApplicationDirectory, NSLocalDomainMask, YES);
NSArray *paths3 = NSSearchPathForDirectoriesInDomains(NSApplicationDirectory, NSNetworkDomainMask, YES);
NSArray *paths4 = NSSearchPathForDirectoriesInDomains(NSApplicationDirectory, NSSystemDomainMask, YES);
NSArray *paths5 = NSSearchPathForDirectoriesInDomains(NSApplicationDirectory, NSAllDomainsMask, YES);
NSLog(@"NSSearchPathForDirectoriesInDomains(NSApplicationDirectory, NSUserDomainMask, YES)\r\n%@", paths1.description);
NSLog(@"NSSearchPathForDirectoriesInDomains(NSApplicationDirectory, NSLocalDomainMask, YES)\r\n%@", paths2.description);
NSLog(@"NSSearchPathForDirectoriesInDomains(NSApplicationDirectory, NSNetworkDomainMask, YES)\r\n%@", paths3.description);
NSLog(@"NSSearchPathForDirectoriesInDomains(NSApplicationDirectory, NSSystemDomainMask, YES)\r\n%@", paths4.description);
NSLog(@"NSSearchPathForDirectoriesInDomains(NSApplicationDirectory, NSAllDomainsMask, YES)\r\n%@", paths5.description);
macOS 10.15 실행 결과
2019-10-25 19:09:31.542660+0900 Sample[64147:308796] Metal API Validation Enabled
2019-10-25 19:09:31.699039+0900 Sample[64147:308796] NSSearchPathForDirectoriesInDomains(NSApplicationDirectory, NSUserDomainMask, YES)
(
"/Users/xxx/Library/Containers/jp.co.xxx.sample/Data/Applications"
)
2019-10-25 19:09:31.699109+0900 Sample[64147:308796] NSSearchPathForDirectoriesInDomains(NSApplicationDirectory, NSLocalDomainMask, YES)
(
"/Applications"
)
2019-10-25 19:09:31.699155+0900 Sample[64147:308796] NSSearchPathForDirectoriesInDomains(NSApplicationDirectory, NSNetworkDomainMask, YES)
(
"/Network/Applications"
)
2019-10-25 19:09:31.699194+0900 Sample[64147:308796] NSSearchPathForDirectoriesInDomains(NSApplicationDirectory, NSSystemDomainMask, YES)
(
"/System/Applications"
)
2019-10-25 19:09:31.699242+0900 Sample[64147:308796] NSSearchPathForDirectoriesInDomains(NSApplicationDirectory, NSAllDomainsMask, YES)
(
"/Users/xxx/Library/Containers/jp.co.xxx.sample/Data/Applications",
"/Applications",
"/Network/Applications",
"/System/Applications"
)
macOS 10.13 실행 결과
2019-10-25 19:07:25.439859+0900 Sample[20257:3829737] NSSearchPathForDirectoriesInDomains(NSApplicationDirectory, NSUserDomainMask, YES)
(
"/Users/username/Library/Containers/jp.co.username.sample/Data/Applications"
)
2019-10-25 19:07:25.439909+0900 Sample[20257:3829737] NSSearchPathForDirectoriesInDomains(NSApplicationDirectory, NSLocalDomainMask, YES)
(
"/Applications"
)
2019-10-25 19:07:25.439932+0900 Sample[20257:3829737] NSSearchPathForDirectoriesInDomains(NSApplicationDirectory, NSNetworkDomainMask, YES)
(
"/Network/Applications"
)
2019-10-25 19:07:25.439948+0900 Sample[20257:3829737] NSSearchPathForDirectoriesInDomains(NSApplicationDirectory, NSSystemDomainMask, YES)
(
"/Applications"
)
2019-10-25 19:07:25.439973+0900 Sample[20257:3829737] NSSearchPathForDirectoriesInDomains(NSApplicationDirectory, NSAllDomainsMask, YES)
(
"/Users/username/Library/Containers/jp.co.username.sample/Data/Applications",
"/Applications",
"/Network/Applications"
)
Application
의 패스가 취득하고 싶은데 파라미터로 NSSystemDomainMask
를 지정하고 있으면, 기대하는 동작과 다르기 때문에 주의입니다. Reference
이 문제에 관하여(macOS Catalina (10.15)에서 응용 프로그램 폴더가 두 개로 분리되어 있습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/IKEH/items/6acc3973bf2a6cca754f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)