Mi solución al problema es:
- Cree una nueva aplicación en Xcode que contenga los recursos de iconos para el tipo de archivo.
- Seleccione esa aplicación como la predeterminada para el tipo de archivo.
- Sustituye el binario de la aplicación dentro de su paquete por un enlace duro al binario de la aplicación que quieres abrir el archivo.
EDIT: Esto sólo parece funcionar en Mojave: en Catalina, hay algún fallo fatal de señalización de código. Si alguien sabe cómo solucionarlo...
Crear una nueva aplicación en Xcode
Este paso no requiere ningún tipo de codificación. Abra un nuevo proyecto como aplicación basada en documentos, utilizando la extensión del tipo de archivo que desea cambiar.
En "Assets.xcassets", en la barra lateral, haga clic en el icono + y, en Iconos de aplicaciones e imágenes de inicio, seleccione crear un Nuevo icono genérico de MacOS .
Añade las imágenes de tamaño correcto a los cuadrados vacíos.
A continuación, en Objetivos > Información, defina los campos de Tipos de documentos con los datos pertinentes para su tipo de archivo. Seleccione el recurso Icono, y debería obtener el icono en el cuadrado vacío.
Puedes hacer lo mismo con las ITU importadas, para cubrir todas las bases.
Tu aplicación debería construirse y ejecutarse sin más esfuerzo. Salga de ella. De vuelta en Xcode, haz clic con el botón derecho en el producto de la aplicación y selecciona " Mostrar en el Buscador ". Mueve la aplicación a la carpeta de Aplicaciones.
Es posible que la base de datos de LaunchServices no se actualice inmediatamente con su nueva aplicación y sus iconos. Un consejo para forzar la actualización es copiar y pegar un icono en el cuadro de iconos en Obtener información en cualquier archivo. Puede eliminar el cambio inmediatamente.
Establece tu aplicación para que sea la aplicación por defecto para el tipo de archivo.
Esto se hace de la manera habitual en Obtener información ventana. Es posible que el Finder no actualice las ventanas existentes: cierre y vuelva a abrir para ver el cambio de icono.
Sustituir el binario
Haz clic con el botón derecho del ratón en tu nueva aplicación. Seleccione Mostrar el contenido del paquete . Navegue hasta el MacOS
y borre el archivo ejecutable Unix que hay dentro, con el nombre de su aplicación.
En otra ventana del Finder, navegue hasta el archivo similar MacOS
dentro del paquete de la aplicación que desea abrir el archivo. (En mi caso, BBEdit).
En el Terminal, escriba ln
(es LN en minúscula) seguido de un espacio. A continuación, arrastra el ejecutable Unix de la aplicación "de destino" a la ventana de Terminal. A continuación, arrastra la carpeta vacía de MacOS de tu aplicación a la ventana de Terminal. El comando completado debería ser algo así:
ln /Applications/BBEdit.app/Contents/MacOS/BBEdit /Applications/PostScript.app/Contents/MacOS
Pulse Enter .
Ahora debería tener un enlace duro a la aplicación de destino (BBEdit) en su aplicación ficticia.
Queda una cosa importante por hacer: renombrar este enlace con el nombre de tu aplicación. (En mi caso, 'PostScript'.) Podrías hacerlo en un solo paso como parte del comando de Terminal anterior, añadiendo el nombre.
ln /Applications/BBEdit.app/Contents/MacOS/BBEdit /Applications/PostScript.app/Contents/MacOS/PostScript
Hecho.
Siempre que tu aplicación ficticia y la aplicación de destino estén instaladas, los archivos mostrarán los iconos personalizados y se iniciarán con la aplicación que elijas, sin modificar las aplicaciones instaladas. Tampoco parece haber ninguna penalización de velocidad.