2012-12-19 88 views
2

我爲我的應用程序創建了一個QuickLook生成器,並使用以下代碼將quicklook生成器複製到此位置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]; 
    } 

但我收到此錯誤:

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"} 

無論我不得不提一下在Entitlementes.plist什麼?如何在SandBox環境中安裝QuickLookGenerator?

+0

我認爲你必須請求訪問該用戶的特定文件夾...還沒有看到任何提及沙盒權限和功能的quicklook生成器。也許提出一個雷達來增加適當的支持? –

回答

11

您不需要將QuickLook插件複製到~/Library/QuickLookIf it's in YourApp.app/Contents/Library/QuickLook/然後系統將使用它 - 這與沙盒一起工作,因爲除了將插件與應用程序捆綁在一起之外,您無需執行任何操作。

+0

但我不知道如何在路徑YourApp.app/Contents/Library/QuickLook/中添加quicklook生成器。我試圖將文件複製到捆綁路徑,但沒有成功。 – Aravindhan

+0

我不知道如何在應用程序內創建庫文件夾。 – Aravindhan

+0

不要在運行時執行它,將插件作爲構建過程的一部分。您需要在目標中創建一個新的「複製文件」構建階段。 – 2012-12-19 10:08:41