2012-03-02 7 views
6

¿Cuál sería la lógica del mecanismo de actualización para la aplicación AIR con tiempo de ejecución cautivo? La aplicación se debe distribuir para Windows y Mac.¿Cómo crear el actualizador para la aplicación AIR incluida con el tiempo de ejecución cautivo?

me quedé atrapado aquí:

Tenga en cuenta que esto no significa necesariamente que usted necesita para implementar su propio mecanismo de actualización automática. Si utiliza una herramienta comercial para crear su instalador, puede incluir mecanismos de actualización automática que puede aprovechar. Por otro lado, si necesita escribir su propio mecanismo de actualización, debe encontrar las API URLStream, File y NativeProcess a mano en la implementación.

después de leerlo en: http://www.adobe.com/devnet/air/articles/air3-install-and-deployment-options.html

¿Es algo así como (para Windows, después de la aplicación se instala con algunos .exe o .msi instalador):

  1. al iniciar la aplicación, comprobar si hay nueva versión
  2. si hay una nueva versión, puede descargarlo
  3. sobrescribir archivos de aplicaciones y archivos de tiempo de ejecución de aire existente

Se debe forzar la actualización, antes de iniciar la aplicación.

¿Cómo sobrescribir la aplicación en ejecución? ¿O hacer otra aplicación (actualizador) para reemplazar archivos y luego iniciar la aplicación principal con NativeProcess?

Respuesta

0

No es necesario sobrescribir. Haga que el usuario descargue su nuevo paquete y ejecútelo. AIR sabrá que el paquete ya está instalado como una versión anterior e indicará al usuario si desea actualizar. Así que el flujo de trabajo es: compruebe si hay un paquete más nuevo, avise al usuario de que hay uno, haga que lo descargue y lo ejecute. Air administrará la actualización.

+0

En este momento no puse : Debería ser una actualización forzada, antes de iniciar la aplicación. No sé si entiendo tu respuesta ... es tiempo de ejecución cautivo, no puedo usar el marco de actualización de AIR. – Nemi

2

Básicamente, usted debe tener su punto de aplicación de algún archivo XML en el servidor que contendrá cosas como más reciente número de versión, ruta de acceso a nuevos archivos en el servidor, etc.

Se puede utilizar una aplicación separada para hacer el reinicio pero tenga en cuenta que, dado que está utilizando Captive Runtime, esto significará otros 40-60 MB solo para el actualizador (a menos que use algunos hacks no recomendados).

Probablemente sea mejor pedirle al usuario que reinicie después de descargar la actualización.

El truco no es sobrescribir el EXE, sino sobrescribir el archivo SWF (y cualquier otro archivo que necesite actualizarse). Por lo que puedo decir, el EXE es simplemente un puntero al manifiesto XML y al SWF.

No debe actualizar el archivo de ejecución de AIR siempre, solo para actualizaciones críticas (ya que son archivos de gran tamaño).

+0

gracias, entonces no hay forma de reiniciar la aplicación automáticamente? – Nemi

+0

@ Nemi: Como dije, puede usar otra aplicación de tiempo de ejecución cautivo para realizar el reinicio, pero dependiendo de su situación, puede que no valga la pena los 40-60 MB adicionales. Alternativamente, puedes probar [esto] (http://snipplr.com/view/58457/) pero recuerdo haber tenido problemas para hacer que funcione (estoy bastante seguro de que nunca lo hice funcionar correctamente). –

+0

Estoy de acuerdo con otro cautivo, con mucho MBs. Ese método de reinicio vinculado no funcionaba para .exe, pero funciona para los archivos .air, por lo que no se puede usar para lo que intento hacer. – Nemi

3

Para Windows utilizo el actualizador aplicación nativa

http://code.google.com/p/nativeapplicationupdater/

y archivo WinRAR SFX (.exe) para actualización automática de mis aplicaciones en tiempo de ejecución en cautiverio.

Native Application Updater verificará la versión, descargará su nuevo exe, cerrará su aplicación y ejecutará ese nuevo exe.

En las Opciones SFX:

utilizo ruta absoluta, algo así como:% USERPROFILE% \ AppData \ Local \ com \ thenewkid \ nombreaplic \

punto "Modos" puede seleccionar "Ocultar todo" en modo silencioso. En "Configuración" obtienes ejecutar tu application.exe después de la extracción.

se puede mantener el tamaño de la actualización de baja mediante la eliminación de la carpeta de Adobe AIR hasta que una nueva versión del SDK esté disponible (es decir, sólo tenía que empujar una actualización mayor a cabo recientemente para 3.3)

Para MAC utilizo instalador. No es tan silencioso como el Windows Updater, ya que el usuario tendrá que hacer clic en un par de instaladores, pero le permite colocarlo en su directorio de inicio para que no se requieran privilegios administrativos, que es lo que me parece el aspecto más útil de tiempo de ejecución cautivo

1

Para la reanudación del aire en tiempo de ejecución cautivo esto funciona para mí en Mac (no he comprobado para Windows aún) (Nota: UpdateAutoTest era el nombre de mi aplicación):

var appLauncher:File; 
       appLauncher = new File(File.applicationDirectory.nativePath).parent.parent.resolvePath("Contents").resolvePath("MacOS").resolvePath("AutoUpdateTest"); 

      var npInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo; 
      npInfo.executable = appLauncher; 
      var _args:Vector.<String> = new Vector.<String>; 
      //_args.push("-a"); 

      //_args.push(); 
      npInfo.arguments = _args; 
      var np:NativeProcess = new NativeProcess; 
      np.addEventListener(NativeProcessExitEvent.EXIT, npExitHandler); 
      np.start(npInfo); 
      exit(); 
Cuestiones relacionadas