Я хочу программно изменить значок тома для сложной файловой системы, реализованной с помощью 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 вызывается нечасто и никогда не реагирует на эти уведомления.