Desidero modificare a livello di programmazione l'icona del volume per un file system impilato implementato utilizzando OSXFUSE (in precedenza MacFUSE). L'icona deve riflettere lo stato di un file system montato.È possibile modificare a livello di programmazione l'icona del volume su un'unità montata su Mac OS X?
L'approccio che ho cercato di ottenere è di mappare le richieste di /.VolumeIcon.icns all'icona appropriata nel pacchetto dell'applicazione. Quindi inviando notifiche di modifica al file system per il percorso effettivo (percorso) e il percorso di montaggio (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);
Facendo un passo attraverso il debugger posso vedere questo codice essere colpito ma il codice per mappare le /.VolumeIcon.icns viene chiamato raramente e mai in risposta a queste notifiche.
Hai provato l'eliminazione di file di .DS_Store nascosto? –
Non sono sicuro che interesserà l'icona. Ma in ogni caso sono riluttante a percorrere questa strada perché significa pulire le impostazioni di visualizzazione della cartella scelte dall'utente. –
@Aditya - Ho provato il tuo suggerimento ma l'eliminazione del file .DS_Store non ha alcun impatto sull'icona del volume visualizzata sul desktop. –