我正在 OSX FUSE 之上构建自定义的基于云的存储访问解决方案。一切正常,但是 Finder 存在问题,它试图下载文件夹中的所有文件以构建文件图标。
有谁知道不允许 Finder 执行此操作的良好且可靠的编程方式(即在我的 Cocoa 应用程序中编码)?基于构建 .DS_Store 文件的代码,或基于 Finder 代码注入的代码也将是一个很好的解决方案。
有一种方法可以过滤掉 finder 回调。您可以从任何 FUSE 委托回调中获取上下文。从该上下文中,您可以获得应用程序包 ID,它可用于过滤掉来自 finder 的调用。
Finder 应该有 bundle id "com.apple.finder"
但是,例如,如果您尝试在驱动器中存档某些内容,则 finder 将带有完全相同的包 ID。因此,启用此类过滤将破坏归档,并且可能会破坏其他内容。
BTW-“com.apple.appkit.xpc.openAndSavePanelService”打开和保存面板也会读取文件来构建图标。
NSDictionary *context = [GMUserFileSystem currentContext];
pid_t pid = [context[kGMUserFileSystemContextProcessIDKey] intValue];
NSRunningApplication *appFromPid = [NSRunningApplication runningApplicationWithProcessIdentifier:pid];
NSString *bundleId = appFromPid.bundleIdentifier;