Acabo de descubrir algo sobre las actualizaciones de la versión y la App Store. Justo ahora, estoy sufriendo problemas y bloqueos de usuarios debido a un comportamiento del sistema iOS que no puedo entender antes. Y, muy importante, iTunes, AppStore e iOS han modificado algunas reglas de actualización e instalación en las últimas versiones. Ahora, funciona de esta manera: - Cuando el usuario instala una nueva versión, todos los archivos del paquete se descargan y se copian en el paquete existente anterior, pero LOS ARCHIVOS O COMPONENTES ANTERIORES NO SE ELIMINAN (o no se eliminan todos). Entonces, el paquete final NO ES igual al conjunto de una nueva instalación de la nueva versión. - Por ejemplo, si un archivo xib/nib está localizado en diferentes idiomas para la nueva versión, el paquete actualizado incluirá ambas versiones: la que está en la carpeta raíz y la otra en cada carpeta localizada. El sistema, obviamente, usará el primero y solo una instalación nueva mostrará localizaciones para ese archivo. Una de mis aplicaciones muestra ese problema con MainWindow.xib y como hay algunas modificaciones en las referencias y las clases, las aplicaciones actualizadas fallan cada vez que intentas ejecutarlas, ya que está utilizando un objeto obsolet. Creé una nueva versión cambiando el nombre de los archivos xib/nib que se han localizado. Como MainWindow es uno de ellos, tengo que modificar la referencia en info.plist, por supuesto.
OK, sabiendo que puede crear una nueva versión con componentes completamente diferentes en el paquete que, si existen archivos de la versión anterior, la aplicación ofrece al usuario la opción de usarlos. Es decir, dos versiones de la aplicación en un solo icono y paquete. No es muy difícil de hacer.
PERO, lo más extraño es que creo que la nueva versión de iOS e iTunes no permiten las degradaciones. Intenté hacerlo pero no lo hice. Es decir, si instala una versión, por ejemplo 1.2, es imposible que AFAIK instale la última versión v1.1 en el dispositivo ni en iTunes -> "Aplicaciones". Por lo tanto, el paquete de versión doble continuará hasta la reinstalación de la aplicación.
respuesta muy informativa Gaberiel :) ¿Podrías decirme la parte de sqlite? ¿Qué pasó exactamente si la versión anterior y la nueva tenían el mismo archivo sqlite llamado (digamos abc.sqlite1.0)? ¿Cómo se comportará mi nueva versión de la aplicación? ¿Anulará el viejo sqlite? O obtendré datos de ambos sqlite. –
Sí. Todo lo que he dicho es sobre los elementos en el paquete de la aplicación. Si ambos tienen el mismo nombre en el paquete, el antiguo se reemplaza por el nuevo como se esperaba. – Gabriel
@Gabriel: ¿Hay alguna forma de copiar datos de una base de datos anterior más nueva a otra antes de que se sustituya? – Mrunal