如何在沙盒应用程序中添加quicklook生成器?

Ara*_*han 2 macos cocoa sandbox quicklook

我为我的应用程序创建了一个QuickLook Generator,并Containers/com.Aravindh.EgApp/Data/Library/QuickLook/QuickLookGenerator.qlgenerator使用以下代码将quicklook生成器复制到此位置.

    NSString *path1 = [[NSBundle mainBundle] pathForResource:@"QuickLookGenerator" ofType:@"qlgenerator"];
    NSError *error;
    NSArray *paths = [[NSFileManager defaultManager] URLsForDirectory:NSLibraryDirectory inDomains:NSUserDomainMask];
    NSString *librayPath = [[paths objectAtIndex:0] path];
    librayPath = [NSString stringWithFormat:@"%@/Quicklook/QuickLookGenerator.qlgenerator",librayPath];
    if(![[NSFileManager defaultManager] fileExistsAtPath:librayPath]) {
        [[NSFileManager defaultManager] copyItemAtPath:path1 toPath:librayPath error:&error];
    }
Run Code Online (Sandbox Code Playgroud)

但是我收到了这个错误:

Error Domain=NSCocoaErrorDomain Code=513 "“QuickLookGenerator.qlgenerator” couldn’t be copied because you don’t have permission to access “QuickLook”." UserInfo=0x101518250 {NSSourceFilePathErrorKey=/Users/Aravindh/Desktop/EgApp/EgApp/build/Release/EgApp.app/Contents/Resources/QuickLookGenerator.qlgenerator, NSUserStringVariant=(
    Copy
), NSDestinationFilePath=/Users/Aravindh/Library/Containers/com.Aravindh.EgApp/Data/Library/Quicklook/QuickLookGenerator.qlgenerator, NSFilePath=/Users/Aravindh/Desktop/EgApp/EgApp/build/Release/EgApp.app/Contents/Resources/QuickLookGenerator.qlgenerator, NSUnderlyingError=0x10154dbb0 "The operation couldn’t be completed. Operation not permitted"}
Run Code Online (Sandbox Code Playgroud)

我是否必须在Entitlementes.plist中提及任何内容?如何在SandBox环境中安装QuickLookGenerator?

小智 11

您无需将QuickLook插件复制到~/Library/QuickLook.如果它在YourApp.app/Contents/Library/QuickLook/那时系统将使用它 - 这适用于沙箱,因为除了将插件与您的应用捆绑在一起之外,您不需要做任何其他事情.

  • 添加一个新的"复制文件"阶段,然后将其设置如下图所示:http://www.evernote.com/shard/s197/sh/4c27c5e7-4318-4e6d-8ac0-a6b0aa902ab8/7f42b0318f9b7c93f49679a2f3fbd0eb (2认同)