4 votos

¿Cómo hacer que una aplicación en particular sea el visor / editor predeterminado para TODOS sus tipos de archivo admitidos a la vez?

Quiero hacer una aplicación, digamos VLC, el reproductor predeterminado para todos los tipos de archivo que admite, sin tener que pasar por cada uno de ellos individualmente.

Incluso es posible que no conozca todos los formatos admitidos (ya que VLC puede leer cientos de formatos) y aún así quiera establecerlo como reproductor predeterminado para todos ellos.

Pude hacer esto usando la terminal, con el procedimiento publicado a continuación.

¿Hay una forma más fácil de hacerlo que no requiera que el usuario sea un desarrollador?

2 votos

¿Estás preguntando específicamente por el caso en el que tienes una lista de tipos de archivo en lugar de los archivos mismos? Para tipos de archivo individuales, puedes seleccionar un archivo de ese tipo, escribir el comando-i (obtener información) y en la ventana de información del archivo, puedes seleccionar la aplicación que se usará en todos los archivos de ese tipo.

0 votos

0 votos

@TimB El título lo dice realmente, no quiero hacerlo para cada tipo de archivo individualmente. Incluso es posible que ni siquiera sepa cuáles son todos los tipos admitidos. Solo agregué "todos" al título para que sea más claro.

4voto

demure Puntos 833

Mientras que RCDefaultApp es un poco antiguo, todavía funciona

Esto te proporciona una interfaz gráfica decente para controlar las aplicaciones predeterminadas

0 votos

Esto es genial, pero aún tendría que hacer más de 100 clics para establecer VLC como el reproductor predeterminado para todos los archivos multimedia.

1 votos

No, ¿no lo hace? Pref de sistema -> RCDefaultApp -> Apps -> VLC. Luego haz clic en la casilla de verificación para toda la sección de 'Extensión' y haz clic en 'establecer como predeterminado'.

1voto

Tobia Puntos 143
  1. Encuentra el archivo Info.plist de la aplicación y conviértelo a formato xml si es necesario.
    El archivo plist de VLC ya está en formato xml, de lo contrario tendrías que hacer lo siguiente:
    plutil -convert xml1 /Applications/VLC.app/Contents/Info.plist
  2. Realiza la magia oscura necesaria para extraer la lista de extensiones de archivo admitidas, con tu varita preferida (aquí se usa awk, pero sed, perl y otros funcionarían igual de bien):
    awk '/CFBundleTypeExtensions/{t=1} /<\/array>/{t=0} t&&//{gsub(/\t*<\/?string>/,"");print}' /Applications/VLC.app/Contents/Info.plist
  3. Verifica la salida para asegurarte de que realmente obtuviste la lista de extensiones y de que realmente quieres asociar todos esos tipos con la aplicación.
  4. Recuerda el último comando y edítalo para crear un archivo vacío en tu directorio actual para cada extensión de archivo en la lista:
    for i in $( ≪comando awk como antes≫ ); do touch dummy.$i; done
  5. Abre tu carpeta de inicio en el Finder, selecciona todos los archivos "dummy" y abre un inspector colectivo para todos ellos: option+command+i
  6. Establece la aplicación en Abrir con y utiliza el botón Cambiar todo.
  7. Elimina los archivos dummy.

0 votos

¿Puedo hacer eso? ¿quieres establecer VLC como reproductor predeterminado?

1voto

No querría asociar VLC con todos los tipos que admite (como mp3, iso, o utf), pero he añadido esto a un archivo de configuración de duti:

org.videolan.vlc .avi all
org.videolan.vlc .flac all
org.videolan.vlc .flv all
org.videolan.vlc .mkv all
org.videolan.vlc .mov all
org.videolan.vlc .mp4 all
org.videolan.vlc .mpg all
org.videolan.vlc .wmv all

duti convierte automáticamente las extensiones que se enumeran en las declaraciones de UTI a UTIs, por lo que puedes especificar los tipos como .jpg en lugar de public.jpeg. Consulta com.apple.LaunchServices.plist. Las UTIs de algunas extensiones como .mkv dependen de qué aplicaciones se instalaron primero.

Muchas aplicaciones solo enumeran UTIs (LSItemContentTypes) y no extensiones (CFBundleTypeExtensions) en el Info.plist. Esto enumeraría las UTIs e imprimiría las extensiones asociadas con ellas:

dump=$(/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -dump); plutil -convert xml1 /Applications/TextEdit.app/Contents/Info.plist -o - | sed -n '/LSItemContentTypes/,/\/array/p' | sed -En 's|.*string>(.*)

1voto

MJ Walsh Puntos 121

Como se mencionó anteriormente, un método es usar duti, aquí tienes un script que podrías poner en un crontab para que cuando una aplicación externa cambie tus extensiones, tu script las cambie de nuevo;

1.Instala duti con HomeBrew:

brew install duti

2.encuentra todos los id de bundle de tus aplicaciones con:

mdls -name kMDItemCFBundleIdentifier -r /Applications/VLC.app

por ejemplo, en este caso se mostrará: org.videolan.vlc

3.cambia la aplicación predeterminada:

duti -s org.videolan.vlc .mp4 all
  • script para automatizar esto (en el script cambia las aplicaciones y los id de bundle según tus necesidades) - fuente del script: https://www.chainsawonatireswing.com/2012/09/19/changing-default-applications-on-a-mac-using-the-command-line-then-a-shell-script/

    !/bin/bash

    ========================================================================

    ARCHIVO: set_default_apps.sh

    DESCRIPCIÓN: Cambia las aplicaciones predeterminadas para las extensiones

    AUTOR: Scott Granneman (RSG), scott@chainsawonatireswing.com

    COMPAÑÍA: Chainsaw on a Tire Swing (http://ChainsawOnATireSwing.com)

    VERSIÓN: 0.1

    CREADO: 17/09/2012 21:44:01 CDT

    REVISIÓN:

    ========================================================================

    { cat < /dev/null

    Guardar estado de salida (0=éxito y 1=falla)

    status=$?

    Si el estado de salida falla, notifícame y sal; si no, cambia la aplicación predeterminada para la extensión

    if test $status -eq 1 ; then echo "$bundle_id ¡no existe! ¡Arregla el script!"

    salir

    else echo -e "\nCambiando $extension para que se abra con $bundle_id …\n" duti -s $bundle_id .$extension all echo -e "Aquí tienes la prueba…\n" duti -x $extension echo -e "\n----------" fi done

  • puedes encontrar todas las extensiones de tus aplicaciones con este truco de @Lri mencionado arriba, y luego usar/pegar el resultado en el script anterior:

    app="VLC.app" ; \ bundleid=mdls -name kMDItemCFBundleIdentifier -r /Applications/$app ; \ dump=$(/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -dump); \ plutil -convert xml1 /Applications/$app/Contents/Info.plist -o - | \ sed -n '/LSItemContentTypes/,/\/array/p' | \ sed -En 's|.string>(.)

`

  • luego coloca el script en un crontab que se ejecute cada x minutos/horas

`

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X