Página 1 de 1

Portabilizar aplicaciones.

Publicado: 12 Ago 2012, 02:05
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.

Re: Portabilizar aplicaciones.

Publicado: 12 Ago 2012, 11:49
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

Re: Portabilizar aplicaciones.

Publicado: 13 Ago 2012, 00:50
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