Quiero cambiar mediante programación el icono de volumen para un sistema de archivos apilados implementado usando OSXFUSE (anteriormente MacFUSE). El icono debe reflejar el estado de un sistema de archivos montado.¿Es posible cambiar de forma programática el icono de volumen en una unidad montada en Mac OS X?
El enfoque que he estado tratando de poner en práctica es mapear solicitudes para /.VolumeIcon.icns al icono correspondiente en el paquete de la aplicación. A continuación, enviando notificaciones de cambio al sistema de archivos para la ruta real (ruta) y la ruta de montaje (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);
Entrar por el depurador puedo ver el código de ser golpeado, pero el código para mapear los /.VolumeIcon.icns es llamado con frecuencia y nunca en respuesta a estas notificaciones.
Ha intentado borrar archivos .DS_Store oculto? –
No estoy seguro de que afecte el icono. Pero en cualquier caso, soy reacio a seguir esta ruta, ya que significa borrar la configuración de visualización de la carpeta elegida por el usuario. –
@Aditya: Intenté su sugerencia, pero eliminar el archivo .DS_Store no tiene ningún impacto en el icono de volumen que se muestra en el escritorio. –