Você está na página 1de 3

Haciendo aplicaciones portables en VFP 3/3

Posted by: admin in: FoxPro General

(No Ratings Yet)

Y por ultimo, llegamos a Windows Vista y sus consecuencias de automatizar el proceso de instalacion
de los contoles ActiveX. Despues de probarlo en un sistema Vista, el programa seguia sin funcionar; asi
que me dedique a buscar en Internet todo lo que pude relacionado al tema de instalacion. Para resumir,
he aqui 3 puntos:

1) Instalacion de los controles desactivado la UAC de Windows Vista mediante el panel de control.
(Dificil).

2) Instalacion de los controles usando archivos Manifest (como indica su blog Calvin Hsia (Medio)

3) Instalacion de los controles con derechos de administrador (Facilismo tan a la vista que no me lo
creo!).

Bien. La cuestion es que Windows Vista y su segurida no permiten el registro automatico. El primer
punto, seria necesario que la PC donde trabajemos tuviera desactivado esto, pero lo menciono como
dificil porque yo dare mi aplicacion a un usuario y no creo que el quiera esta apagando el UAC si se
encuentra con una maquina Vista.

El segundo metodo, me llevo a leer en el blog de Calvin su metodo para crear archivos Manifest que se
pegan al EXE para que se autoregistren los controles. Ademas, en la propia ayuda de DBITech,
informan sobre lo que se tiene que hacer para registrar sus controles. En este explica como se debe
ejecutar el programa REGSVR32 como administrador y en otro tema como hacer los archivos
MANIFIEST para los controles DBI.

Utilizando las herramientas de Markus Winhard quien creo Manifest Tools, pude crear mi archivo
Manifest y anexarlo a mi .EXE.

La idea es crear un archivo aplicacion.exe.manifest (xml) con las instrucciones de


registro. Luego, “agregar” este archivo al ejecutable.

En la aplicacion ejemplo que utilice uso dos controles DBI: ctDropDate que es un
control para desplegar un calendario y poner fechas y el ctToolBar que es una
barra de herramientas con iconos.
<?xml version=”1.0″ encoding=”utf-8″?>
<assembly xsi:schemaLocation=”urn:schemas-microsoft-com:asm.v1
assembly.adaptive.xsd” manifestVersion=”1.0″ xmlns:asmv1=”urn:schemas-
microsoft-com:asm.v1″ xmlns:asmv2=”urn:schemas-microsoft-com:asm.v2″
xmlns:dsig=”http://www.w3.org/2000/09/xmldsig#” xmlns=”urn:schemas-
microsoft-com:asm.v1″ xmlns:xsi=”http://www.w3.org/2001/XMLSchema-
instance“>
<assemblyIdentity
name=”monitortc2.exe”
version=”1.0.0.0″
type=”win32″
/>
<file name=”ctDropDate.ocx” asmv2:size=”139264″>
<typelib tlbid=”{29F50288-212F-11D5-A85D-0080C8DFC881}”
version=”2.0″
helpdir=”"
resourceid=”0″
flags=”HASDISKIMAGE”
/>
<comClass clsid=”{29F50288-212F-11D5-A85D-0080C8DFC881}”
threadingModel=”Apartment”
tlbid=”{29F50288-212F-11D5-A85D-0080C8DFC881}”
progid=”ctDropDate.ctDropDateCtrl.2″
description=”ctDropDate Control”
/>
</file>

<file name=”ctToolbar.ocx” asmv2:size=”167936″>


<typelib tlbid=”{83A59732-3096-4711-A41B-8CF8FF98326E}”
version=”3.0″
helpdir=”"
resourceid=”0″
flags=”HASDISKIMAGE”
/>
<comClass clsid=”{43A5A355-2366-438A-AA33-1C30DA9E3686}”
threadingModel=”Apartment”
tlbid=”{83A59732-3096-4711-A41B-8CF8FF98326E}”
progid=”ctTOOLBAR.ctToolBarCtrl.3″
description=”ctToolBar Control 3”
/>
</file>

</assembly>
Como se puede apreciar, tengo 2 controles que registrar para este ejecutable. Los
datos de typelib y Class ID fueron tomados usando la herramienta OLEVIEW (que
esta en Microsoft pero tambien en Download.com).

Luego, usando la herramienta de Importar Manifest al EXE como mencione antes,


queda listo mi ejecutable. Lo probamos y … wala! Registrado.

Ahora bien, como tercer punto, creo que es mucho mas sencillo el ultimo. Porque
sin crear ningun Manifest, cuando ponemos nuestro USB y le damos a ejecutar
nuestro programa, en lugar de usar el doble click con el boton izquierdo damos
click al boton derecho. En el menu, le damos click en EJECUTAR COMO
ADMINISTRADOR. Y listo! El programa registra los controles igual que en XP sin
crear ningun archivo ni paso extra (porque, oiga usted, esta medio engorroso
andar buscando los archivos OCX con sus clases y demas del registro para hacer el
dichoso archivo XML).

Si le digo a mi usuario, dale doble click para usar el programa desde el usb
portable y si ves que usas Vista, dale un click derecho y ejecutalo como
administrador, pues hasta aqui llegamos.

Estoy buscando crear una rutina para identificar el OS que se trate y lanzar un mensaje de advertencia. O
simplemente dejar el manifest y listo. Dependera del tiempo que tenga en preparar mi aplicacion para
ser portable.

RESUMEN

Hasta aqui, creo que hacer portable una aplicacion VFP no lleva mas que copiar todos los archivos
necesarios a una carpeta junto con su RUNTIME. En el caso de controles extra, implica el problema de
registrarlos debidamente. No probe esto con versiones anteriores de Windows y por supuesto en otros
ambientes.

Otra desventaja es que la aplicacion portable siempre estara del orden de 5 a 10MB. Por que? Porque los
runtimes casi ocupan unos 5MB (o un poquito mas) mas el EXE y los archivos necesarios (ico, bmp,
log, mem, ini, etc, etc).

La ultima cosa es trabajar con los datos. Tener nuestras rutinas claras para la conexion con los datos, ya
sea de manera local (sistemas sencillos) o de manera remota (para LAN, WAN o internet).

Seguire probando este metodo para ver que tan bien trabaja. Deseeme suerte.

Você também pode gostar