Я хочу программно изменить значок тома для стековой файловой системы, реализованной с использованием OSXFUSE (ранее MacFUSE). Значок должен отражать состояние смонтированной файловой системы.
Подход, который я пытался использовать, заключается в отображении запросов для /.VolumeIcon.icns на соответствующий значок в пакете приложения. Затем отправьте в файловую систему уведомления об изменении фактического пути (пути) и пути монтирования (mountPath).
[[NSWorkspace sharedWorkspace] noteFileSystemChanged: @"/Volumes"];
[[NSWorkspace sharedWorkspace] noteFileSystemChanged: [mountPath stringByDeletingLastPathComponent]];
[[NSWorkspace sharedWorkspace] noteFileSystemChanged: mountPath];
[[NSWorkspace sharedWorkspace] noteFileSystemChanged: [path stringByDeletingLastPathComponent]];
[[NSWorkspace sharedWorkspace] noteFileSystemChanged: path];
FNNotifyByPath([[[mountPath stringByDeletingLastPathComponent] dataUsingEncoding:NSUTF8StringEncoding] bytes], kFNDirectoryModifiedMessage, kNilOptions);
FNNotifyByPath([[[path stringByDeletingLastPathComponent] dataUsingEncoding:NSUTF8StringEncoding] bytes], kFNDirectoryModifiedMessage, kNilOptions);
FNNotifyByPath([[@"/Volumes" dataUsingEncoding:NSUTF8StringEncoding] bytes], kFNDirectoryModifiedMessage, kNilOptions);
Проходя через отладчик, я вижу, что этот код срабатывает, но код для сопоставления /.VolumeIcon.icns вызывается редко и никогда в ответ на эти уведомления.