Portabilizar aplicaciones.

Tus preguntas. Algoritmos o Grupos de Comandos formando Programas Escripts.
Responder
DeGiorgi
Mensajes: 4
Registrado: 03 Ago 2012, 00:32
Ubicación: Argentina - Buenos Aires

Portabilizar aplicaciones.

Mensaje por DeGiorgi »

Con un collage de ejemplos encontrados en la web pude armar un script que sirve para portabilizar aplicaciones es decir hacerlas ejecutables desde un pendrive, o una partición del disco, y no dejar rastros al salir.
Pero antes de publicarlo en el foro, con el correspondiente instructivo, necesito solucionar un problema.

RunWait("Init.exe") (ver detalle mas abajo)
RunWait("regedit.exe /s HCU.reg", @ScriptDir) (carga el registro)
RunWait("regedit.exe /s HLM.reg", @ScriptDir) (carga el registro)
RunWait("App\App.exe") (corre la aplicación)
RunWait('regedit.exe /s /e "' & @ScriptDir & '\HCU.reg" "HKEY_CURRENT_USER\Software\aplicación"') (*)
RunWait('regedit.exe /s /e "' & @ScriptDir & '\HLM.reg" "HKEY_LOCAL_MACHINE\Software\aplicación"') (*)
RunWait("regedit.exe /s H00.reg", @ScriptDir) (borra trazas del registro)
RunWait("Exit.exe") (ver detalle mas abajo)
(*) hace un backup de las claves en el registro.

Funciona bien pero tiene como punto débil, las líneas ("Init.exe") y ("Exit.exe")
Al no saber programar en AutoIt lo hice en DOS. La limitación aparece cuando la carpeta aplicación tiene un nombre que incluye un espacio (por ejemplo Mi aplicación) En ese caso el DOS no la reconoce.

Init.exe es el compilado (con Bat_To_Exe_Converter) del DOS Batch:
rd /s /q C:\...\AppData\Roaming\aplicación
xcopy U:\PATH\aplicación C:\...\AppData\Roaming\aplicación\ /S /E

Borra eventuales rastros antiguos de aplicación en AppData\Roaming, luego lo actualiza desde el
backup en U:\PATH\aplicación. (Las líneas se repiten para AppData\Local si la aplicación lo requiere)

Exit.exe es el compilado (con Bat_To_Exe_Converter) del DOS Batch:
rd /s /q U:\Path\aplicación
xcopy C:\...\AppData\Roaming\aplicación U:\PATH\aplicación\ /S /E
rd /s /q C:\...\AppData\Roaming\aplicación

Borra el antiguo respaldo en U:\PATH\aplicación, crea uno actualizado , y elimina
C:\...\AppData\Roaming\aplicación, no dejando trazas. (Idem para Local)

Pido ayuda para reemplazar las líneas en DOS por las equivalentes en AutoIt.
En breve, cómo borrar una carpeta, y cómo copiar una carpeta (con todo su contenido) de un lugar a otro.
Gracias.
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Portabilizar aplicaciones.

Mensaje por Chefito »

Mmmmmm....para hacer lo que has hecho casi mejor lo hacer completamente en batch :smt005 .

Lo transformaría todo el código batch a autoit que es muy fácil.

Te pongo las funciones equivalentes y tu las buscas en la ayuda y lo intentas montar:

- Para trabajar con el registro, tienes las funciones que empiezan por reg...... , como regwrite (escribe en el registro), regread (lee en el registro), regdelete (borra). Con esas te sobran.
- Para copiar archivos (y además puede crear el directorio si no existe) mira la función filecopy. También tienes otras que te pueden interesar como dircreate (crea un directorio), dircopy (funciona como el xcopy), dirremove (borra directorio y ficheros), filedelete (borra ficheros), fileexists (si existe un fichero) y muchas muchas más. Mira esa sección de la ayuda que están todas.

Por cierto, si quieres pillar los espacios sin problemas con los comandos batch, pon sus parámetros entre comillas. Ejemplo:

Código: Seleccionar todo

rd /s /q "c:\mi aplicacion\aplicacion"
xcopy "d:\mis programas\mi aplicacion\aplicacion" "c:\mi aplicacion\aplicacion" /S /E
Saludos
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
DeGiorgi
Mensajes: 4
Registrado: 03 Ago 2012, 00:32
Ubicación: Argentina - Buenos Aires

Re: Portabilizar aplicaciones.

Mensaje por DeGiorgi »

Gracias a Chefito por la ayuda. Si entendí bien, lo primero a probar es agregar comillas al batch. Con esto estaría funcionando bien, aunque es una mezcla de códigos. Luego con un poco de estudio y pruebas, intentaré reemplazar los batch por los equivalentes en autoit.
Saludos. Angel
Responder