Ejemplo

Tomemos el ejemplo de la Aplicación cualquiera AppGenerica.cuarzo
Esta tiene las siguientes características:

  • Contiene un HASH único, identificador de aplicación, no puede ser cambiado.
  • Es una imagen ISO, montable y solo de lectura (Read-Only).
  • Contiene un zync-curl que permite la actualización por medio de Deltas que permiten descargar sólo el contenido actualizado de la App sin descargarla toda de nuevo.

Ahora, esta aplicación posee la siguiente estructura interna:

  • libs/
    • libAlgo-1.2.so
    • libAlgo-1.3.so
    • libOtraCosa-5.7.so
  • bin/
    • binarios
  • other/
    • Lo que sea que necesite esa app
  • AppRun
  • zync-curl
  • default.desktop
  • default.png

Explicación

La carpeta libs contiene las librerias necesarias de la aplicación (obviando las que se incluyen en el sistema), estas librerias tiene un HASH único designado a cada archivo, al momento de correr la Aplicación por primera vez, todas estas librerias se mueven a la carpeta física /usr/share/crzlibs/ donde se almacenarán las librerias externas al sistema, al comprobar que una librería ya existe, se comprueba que el HASH corresponde, de ser así se utiliza y de no ser así se reemplaza con otro nombre (Ej: libAlgo-1.2-good.so)

La carpeta bin contiene los binarios de la aplicación

La carpeta other puede contener lo que sea que esa app utilice

El script AppRun es el encargado de correr el binario al montar la ISO, a la vez, cada vez que la aplicación es abierta, comprueba el HASH único de esta, si algun archivo ha sido modificado (por un externo o usuario) o está corrupto, avisa al usuario que “Esta aplicación puede estar corrupta o modificada, lo que es peligroso para su equipo”. De ser este el caso se presentarán 4 opciones en pantalla:

  • Eliminar aplicación.
  • Autoarreglar (por medio de zync-curl se descarga el archivo corrupto de nuevo y se arregla a si misma)
  • Abrir de todos modos (inseguro)
  • Cancelar

Preferencias y archivos residuales

Cada aplicación está en la obligación de seguir las especificaciones respecto a archivos residuales. Todos los archivos que la aplicación quiera escribir en el disco, deberán escribirse en:

~/.prefs/cuarzo/APP/*

Desinstalación o eliminación

El script AppRun además tiene la facultad de detectar cuando una aplicación se mueve se su correspondiente ubicación a la papelera, de ser así se considera eliminación y por ende elimina automáticamente todos los archivos residuales ubicados en el path mencionado posteriormente; NO así las librerias, que se mantendrán en su lugar a pesar de la eliminación de la aplicación.