Abra siempre un archivo en un programa específico

Tengo un problema al obligar a un archivo de cierto tipo a abrirse siempre con un programa específico. En este caso, son .inddarchivos (Adobe InDesign). Tengo instalado Adobe CS6 y también Adobe InDesign 5.5. Me gustaría abrir siempre .inddarchivos con InDesign 5.5.

Intenté usar Get Info > Open with: > InDesign 5.5 > Change All...pero sigue volviendo automáticamente a CS6, inmediatamente después de hacer clic en Change All....

¿Hay alguna manera de forzar esto en la Terminal?

Aunque a menudo Adobe no controla, puede intentar cambiar los permisos de lectura/escritura del usuario en todos los directorios relevantes, con BatChmod o similar, e intentar cambiar todo de nuevo.

Respuestas (2)

Si no le importa especificar InDesign 5.5 cada vez, esta línea de comando debería funcionar:

open -a 'InDesign 5.5' myfile.indd

Si va a hacer esto con frecuencia, puede incluirlo en un script de shell o en una función bash como

function indd() { open -a 'InDesign 5.5' "$@" ; }

Entonces podrás simplemente decir

indd myfile.indd

Esto es bastante bueno, aunque idealmente debería ser un poco más fácil de usar. ¿Hay alguna forma de interceptar un doble clic en un archivo .indd y enviar esa acción al primer script bash?

Podrías intentar editar ~/Library/Preferences/com.apple.LaunchServices.plist:

defaults write com.apple.LaunchServices LSHandlers -array-add '{LSHandlerContentTag=indd;LSHandlerContentTagClass=public.filename-extension;LSHandlerRoleAll=com.adobe.InDesign;}'

Aplicar los cambios requiere reiniciar (cerrar la sesión y volver a iniciarla no es suficiente).

La reconstrucción de la base de datos de LaunchServices también podría funcionar, pero también restablece otras aplicaciones predeterminadas configuradas en Finder.

/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -kill -domain local -domain system -domain user