Después de romperme la cabeza haciendo un gestor de descargas para una aplicación para kioscos interactivos, mi aplicación era capaz de descargar, filtrar y gestionar archivos XML, verificar la licencia de uso, hacer descargas inteligentes de archivos multimedia desde un servidor ASP y guardarlas en el disco duro local en una carpeta personalizada para ese fin.
Pero dónde me tope un muro casi impenetrable de desesperación, es cuando intente que mi aplicación hiciera comandos del sistema operativo para realizar algunas tareas sencillas
¿Ejemplo? Borrar los archivos temporales de internet. Y es que Flash Player e incluso AIR utilizan este servicio de Internet Explorer aún cuando se ejecutan fuera del mismo. Para que mi gestor de descarga estuviera completo necesitaba borrar estos archivos de forma transparente al usuario.
Después de leer muchas cosas raras caí en cuenta que nadie en todo el maldito internet sabía cómo hacerlo. Tuve que resolver el problema yo solito, por eso decidí compartir la solución con ustedes.
No uses versiones beta de Flash CS5 para AIR 2.0
En primer lugar debemos estar muy seguros que nuestra versión de CS5 no es un Beta. Ka versión Beta de CS5 no soporta AIR 2.0. AIR no nos permitirá instalar nuestra aplicación y nos dará un error como éste:
Código :
“Error de instalación, AIR no es capaz de instalar <Nombre de la aplicación > Debido a que no cumple con los requisitos del sistema y no hay una actualización disponible”
Lo que este error nos dice es que la versión Beta (2.beta2) de AIR disponible en CS5 Beta no es compatible (y nunca lo será) con versiones de AIR actualizadas (La 2.6 me parece). Desafortunadamente muchos tienen instalado esta versión de CS5 por que fue la que se utilizó en versiones pirata que circulan por internet.
Si tienes este problema instala una copia legal o una demo desde Adobe y te quitarás muchos dolores de cabeza.
Código en actionscript 3
Siguiendo con el tema, necesitas importar la siguiente clase a tu código:
Código :
import flash.filesystem.File;
Para ser capaces de utilizar las funcionalidades de esta clase debemos importarla también al panel preferencias de ActionScript 3.0 ( File-> ActionScript Setings 3.0 ) y dar click en Library Path.
Debemos añadir las librerías: aircore.swc y airGlobal.swc ambas deben tener Merged into code activado.
Dale click a Browse to SWC File y ve a la siguiente carpeta:
Código :
C:\Program Files\Adobe\Adobe Flash CS5\AIK2.0\frameworks\libs\airTeniendo esto listo, crea una aplicación (EXE) que ejecute tu archivo BAT y es más sencillo de lo que suena,
Crear una aplicación .EXE de AIR que ejecute archivos .BAT
- Abre el block de notas y escribe tu comando en DOS:
Código :
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8
- Salva tu archivo como una extensión Bat
- Crea un acceso directo a tu Bach file y ponle en propiedades “iniciar miminizado”
eso evitará la fea ventana de DOS. - Comprime ambos archivos usando WinRar y crea un ejecutable con icono propio incluso si quieres y haz que ejecute automáticamente el acceso directo a tu Bach file.
- Prueba que funcione y guárdala en una carpeta no bloqueada por el sistema operativo.
- En Flash debes tener las siguientes precauciones:
- En AIR settings el profile EXTENDED DESKTOP debe ser el único seleccionado
- y Windows Installer debe estar activado.
- En AIR settings el profile EXTENDED DESKTOP debe ser el único seleccionado
- El código para que esto funcione es simple:
Código :
if(NativeProcess.isSupported) { trace("NativeProcess es soportado."); var file:File = AP.resolvePath("borrarCache.exe");//Este debe ser un directorio válido var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo(); nativeProcessStartupInfo.executable = file; var process:NativeProcess = new NativeProcess(); process.start(nativeProcessStartupInfo); }else{trace("NativeProcess no es soportado.");};//NativeProcess.isSupported
Eso es todo, espero haberles ayudado.
Hasta la próxima.
¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.
Por Andosonson el 02 de Abril de 2011
Por rickzac el 03 de Abril de 2011
Saludos.
Por Freddie el 05 de Abril de 2011
También, usa puntos seguidos y añade por lo menos uno o dos screenshots, eso mejorará mucho tus tutos. Por ahora, acabo de pasar este a portada.
Por rickzac el 05 de Abril de 2011
Saludos.
Por Otaku RzO el 06 de Abril de 2011
Otra alternativa sería crear este proceso desde .NET, como es solo una línea, y ya la tenemos gracias a este tuto, estoy seguro que sería sencillo de crear y quedaría mejor empaquetado.
Gracias por el tip .
Por rickzac el 07 de Abril de 2011
Otaku RzO :
Gracias por la sugerencia, estaría super que complementaras este tuto
detallando más tu tip.
1000 GRACIAS
Por Otaku RzO el 07 de Abril de 2011
rickzac :
Otaku RzO :
Gracias por la sugerencia, estaría super que complementaras este tuto
detallando más tu tip.
1000 GRACIAS
Código :
Encontré el código googleando, se puede mejorar aplicándole el modo silencioso.
Saludos.
Por Maria el 07 de Abril de 2011
Por rickzac el 08 de Abril de 2011
Otaku RzO :
Encontré el código googleando, se puede mejorar aplicándole el modo silencioso.
Saludos.
Mi Buen Otaku RzO MIl gracias por ampliar el tip, explica para nuestros lectores
cómo aplicamos el modo Silencioso...
Maria:No sé se leeas esto, pero aqui estamos para ayudarte, hogala te hagas miembro de Cristallab y puedas ayudar a otros en sus proyectos.
Saludos.
Por Otaku RzO el 08 de Abril de 2011
Al inicio del tip dices que no encontraste la solución en Internet. Pues yo la encontré aquí:
http://stackoverflow.com/questions/2763139/flex3-air-2-nativeprocess-doesnt-accepts-standard-input-data-error-2044
Entonces me pregunto si se pudiese usar el metodo que proponen ahí usando de intermediario a cmd.exe o si se puediese hacer directamente con rundll32.exe con el siguiente código:
Código :
No he probado el código y no se si haya algún tipo de restricción por ejecutar esos archivos de sistema.Por rickzac el 08 de Abril de 2011
Otaku RzO :
http://stackoverflow.com/questions/2763139/flex3-air-2-nativeprocess-doesnt-accepts-standard-input-data-error-2044
Antes que nada, el tema era ejecutar una bach file desde una aplicación AIR 2.0, la documentación de ADOBE es clara al decir que por razones de seguridad NO SE PERMITE EJECUTAR UNA BACH FILE DIRECTAMENTE he aqui el meollo del asunto, si tienes la necesidad de ejecutar una bach file ¿como hacerlo?, de que si es mejor hacerlo en .NET ya es otro tema, y es verdad, no encontré en internet algo CLARO como un tuturial de cómo hacerlo y a que dificultades te vas a enfrentar, es decir, como decimos en México CON PELOS Y SEÑALES.
El link que me diste no es claro al respecto, de hecho si me encontre blogs y ayuda
sobre NativeProcess, y creéme ninguno de los que probé en su momento funcionó, intenté por supuesto un código muy similar al que propones pero en WINDOWS VISTA y WINDOWS 7 necesitas acceso como administrador total para acceder a ciertas carpetas y ejecutar ciertos comandos, y en su modo de debug Flash Professional CS5 no me permitió el acceso a RunDll32.exe directamente.
Pero no encontré en internet como ejecutar una bach file, y es que las BAT funcionan bien
para algunas cosas sencillas, y creeme ningún antivirus me ha saltado por que la línea
Código :
No es identificada como una amenaza.
La finalidad de mi tutorial era hacer algo práctico tipò ABC que ayudara a los demás
y les ahorrara muchas horas de frustación.
Antes de escribir una sola línea me cercioré de que todo lo escrito funcionara en la práctica.
Creo que a nuestros lectores les intersaría muchísimo que escribas un tuto sobre NET y NativeProcess del tipo ABC. voy a empesar a ampaparme en NET por que todavía no me queda claro esto que dijiste:
Otaku RzO :
Te pido por favor me lo expliques CON MAS DETENIMIENTO.
Te mando un saludo y mi más sincera admiración.
GRACIAS.
Por rickzac el 08 de Abril de 2011
PARA ESTE TUTORIAL, SI NO LA APLICACIÓN GERERARÁ UN ERROR AL MOMENTO
DE EJECUTAR LA BACH FILE.
Por Otaku RzO el 08 de Abril de 2011
Hace años que no programo en .NET. No tengo el Visual Studio o alguna versión Express instalada para ponerte una captura.
Por Diana Solis el 05 de Julio de 2014
Por rickzac el 08 de Julio de 2014
No pierdes nada con intentarlo, ya que si lo logras aprenderás muchísimo de como programar aplicaciones con el motor gráfico de flash, que hagan cosas que Flash e incluso AIR no pueden hacer por si mismas.
Los archivos BAT son ideales para hacer cosas sencillas, pero están un poco desfasados con la tecnología actual y no funcionan para aplicaciones de plataforma cruzada.
Así mismo Flash desde que lo tomo Adobe ha venido presentando problemas con la gestión de memoria, lo que le ha dado la oportunidad a otras tecnologías alternativas y más eficientes con los recursos.
Sin embargo si tu aplicación es sólo para PC y no quieres complicarte la vida, las BAT files pueden sacarte de más de un atolladero, para escribir BAT files no necesitas nada mas que un block de notas sencillo como el notepad de Windows.
Si tienes algunas dudas relacionadas con este Tuto no dudes en contestarme el post.
Saludos.
Por bERSERk el 28 de Julio de 2015
que podra ser este error?