0 votos

¿Se puede hacer que macOS olvide un tipo de archivo?

Hace mucho tiempo hice una aplicación simple basada en CoreData y usa Xcode para crear un tipo/extensión de archivo para acompañarla. Ahora, estoy siguiendo los videos de la WWDC del año pasado para intentar actualizar a SwiftData. Las instrucciones muestran que el Identificador de Tipo Exportado en la información del objetivo debería "conformarse" a com.apple.package. No incluí esa conformidad en el proyecto original de CoreData. Cuando intento compilar el proyecto parcialmente remade para pruebas iniciales, se bloquea inmediatamente con: "_SwiftData_SwiftUI/Documents.swift:282: Error fatal: El tipo de documento es *** que no se conforma a com.apple.package. Este inicializador espera que el tipo de documento sea un paquete."

Si solo cambio la extensión de archivo en el Identificador de Tipo Exportado (y el código de extensión de la clase UTType) a algo diferente a la extensión original de hace años, la aplicación se cargará, por lo que el resto de la configuración de tipo debe ser correcta. Mi suposición fue que el problema es que macOS reconoce el tipo de archivo de mi programa más antiguo, y sabe que no solía conformarse a com.apple.package, por lo que no permitirá que se ejecute la nueva versión de SwiftData, ya que se requiere conformidad.

Intenté abrir el proyecto original de CoreData en Xcode, agregar com.apple.package a "conforma a" en el Identificador de Tipo Exportado y ejecutarlo, y confirmé que aún puedo abrir mis archivos antiguos. Esperaba que eso "actualizara" al sistema que ahora se está conformando. Sin embargo, volviendo al proyecto SwiftData, sigue sin cargarse y da el mismo error fatal.

Luego intenté ejecutar mi proyecto SwiftData en otra computadora que nunca ha ejecutado la versión de CoreData, y se compiló sin problemas, lo que parece confirmar que el problema es el conocimiento previo de mi computadora portátil sobre ese tipo de archivo.

Intenté hacer esta pregunta en StackOverflow, pero hay debate sobre si es resoluble mediante programación o si solo se puede resolver a nivel del sistema operativo, por lo que la pregunta fue cerrada. ¿Hay alguna manera de hacer que macOS actualice el tipo de archivo (ya sea a través de la programación o un ajuste del SO) para que sepa que se ha añadido la conformidad a com.apple.package? O, ¿puedo hacer que macOS olvide que alguna vez ha visto ese tipo de archivo/extensión, para que cuando el programa se abra la próxima vez registre el tipo con la nueva conformidad?

2voto

David Anderson Puntos 2189

No estoy seguro si mi problema pasado era exactamente igual que el tuyo. Lo que hice para hacer que macOS olvide fue ingresar el siguiente comando.

% # Haz lo siguiente con y sin sudo
% /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -r -domain local -domain system -domain user
% # Siguiente: Reinicia Finder

Para propósitos de documentación, aquí está la salida de lsregister -h en Ventura.

lsregister: [OPTIONS] [ ... ]
                      [ -apps [,domain]... ]
                      [ -libs [,domain]... ]
                      [ -all  [,domain]... ]

Se buscan rutas para aplicaciones registrarse en la base de datos del Servicio de Lanzamiento.
Los dominios válidos son "system", "local", "network" y "user". Los dominios también pueden ser especificados usando solo la primera letra.

  -delete       Elimina el archivo de la base de datos de Lanzamiento. ¡Debes reiniciar después!
  -kill         Restablece la base de datos de Lanzamiento antes de hacer cualquier cosa
  -seed         Si la base de datos no está sembrada, busca en ubicaciones predeterminadas las aplicaciones y librerías a registrar
  -lint         Imprime información sobre errores en plist al registrar paquetes
  -lazy n       Duerme n segundos antes de registrar/escanear
  -r            Escaneo de directorio recursivo, no recursión en paquetes o directorios invisibles
  -R            Escaneo de directorio recursivo, descendiendo en paquetes y directorios invisibles
  -f            Actualización forzada del registro incluso si la fecha de modificación no ha cambiado
  -u            desregistrar en lugar de registrar
  -v            Mostrar información de progreso
  -gc           Recoge datos antiguos y compacta la base de datos
  -dump [table] Mostrar contenido completo de la base de datos después del registro
  -h            Mostrar esta ayuda

Referencias

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