Cambiar de Windows a Windows es una gran aventura, sobre todo por que cuando cambiamos de versión de Windows a uno "Mejor", muchas de las cosas que ya funcionaban bien antes, ya no funcionan tan bien o de plano, dejan de funcionar.

Eso pasa cuando trabajas con Visual Basic 6.0. Cuando pasas de Windows XP a Windows Vista o 7 resulta que tu programa para hacer programas ya no funciona o es un PEDO hacerlo funcionar. Y es que para proseguir con la evolución esperada se tendría también que pensar en una plataforma de desarrollo y eso fue lo que pasó con el producto. Para empezar Visual Basic fue integrado a una plataforma integral de desarrollo, es decir, el producto fue integrado a una plataforma llamada Visual Studio formado por un entorno de desarrollo integrado por el propio Visual Basic, Visual C++ y Visual FoxPro (Y algunas otras herramientas de desarrollo de aplicaciones). Hasta ahí vamos bien por que podemos seguir trabajando con nuestras aplicaciones desarrolladas para Visual Basic y poder ingresar al fabuloso entorno de desarrollo de C++ y la posibilidad de portar nuestras aplicaciones de Foxpro al entorno gráfico de Windows. 

Pero después nos pasaron de nuestro Visual Studio 6.0 a Visual Studio 2002 donde nos cambiaron de golpe el enfoque a Visual Basic que es nuestra arma de batalla. Al integrarla a la plataforma NET, cambia de tajo todo... mientras los nuestros códigos fueron evolucionando junto con las versiones de Visual Basic con pequeños cambios, migrar de Visual Basic 6.0 a Visual Basic 2002 o Visual Basic.NET. Portar una aplicación que teníamos codificada en Visual Basic 6 a Visual Basic NET pasó a ser una labor titánica ya que aunque el nuevo entorno de trabajo nos facilitaba un proceso de migración, este no siempre podía lidiar bien con las diferencias en codificación que, nos dejaba a veces en tantos aprietos que terminábamos por recodificar nuestras aplicaciones desde cero. 

Y es que la codificación de Visual Basic 6 a Visual Basic.NET varia bastante, además de que las propiedades y los procedimientos de los componentes varian también bastante. El manejo de los procedimientos como funciones se vuelve un pequeño quebradero de cabeza (Y digo, pequeño, por que después de agarrarle el 20 es relativamente sencillo). El problema que veo en el cambio de VB a NET es la conversión de nuestros códigos ya que a veces no son muy pequeños y a veces tenemos que revisar miles de lineas de código lo que hace que la tarea se vuelva engorrosa y tediosa lo que nos hace considerar mejor la reescritura de un código ya existente, por lo que el uso de una máquina virtual se vuelve prácticamente impresindible si es que queremos seguir trabajando con nuestras aplicaciones desarrolladas con un Visual Basic 6.0 (o menor) dado que, nuestro Visual Basic ya no es compatible con las nuevas versiones de Windows.

Instalar Visual Basic 6 o Visual Studio 6 en Windows 7 es toda una aventura (Y supongo que es aún más instalarlo en Windows 10+). 

Según alguna información que he consultado en el internet, el proceso para instalar VB 6 en Windows 7 (aún no probado en el Windows 10) se realiza de la siguiente forma:

Se copia el contenido del CD a una carpeta del disco duro, posteriormente se copia el contenido de una carpeta llamada SETUP a la parte superior del directorio, posteriormente se renombra un archivo llamado vb98ent.stf o en algunos casos el archivo vs98pro.stf por acmsetup.stf, y se procede a ejecutar el programa llamado ACMSETUP.EXE con privilegios elevados de administrador. Aunque realicé este proceso en un Windows 7 y funcionó correctamente, aunque con algunas advertencias pero no en otro Windows 7. La instalación que no funcionó marca un error indicando que debo de ejecutar el programa SETUP para proceder a la instalación la cual se ejecutó correctamente sin advertencias. En ambas instalaciones, me indicaba un error que cancelaba la instalación, se resolvió desactivando en las opciones de instalación la instalación del explorador de objetos OLE (en la opción TOOLS). 

Después de terminar la instalación, se deben de cambiar algunas opciones del ejecutable de visual basic. En la ubicación C:\Program Files (x86)\Microsoft Visual Studio\VB98 se encuentra un archivo ejecutable llamado VB6, hay que abrir las propiedades de la aplicación (Boton derecho - Propiedades - Compatibilidad) y activar el modo de compatibilidad con Windows XP y marcar las opciones de "Deshabilitar efectos visuales, Deshabilitar composición de escritorio, Deshabilitar el ajuste de escala de la pantalla si se usa la configuración elevada de ppp y por último marcar que se ejecute con nivel de administrador.

Solamente existen algunas pequeñas cosas que hay que corregir, ya que al parecer, algunos componentes no se registran correctamente (Los que se encuentran ubicados en la carpeta de \Windows\SysWow64\). de esto nos enteramos en el momento en que intentamos usar componentes extras que no se encuentran en la plantilla estandar y que se activan en las opciones Project - Components. Al momento de activar algún componente, nos indicará un mensaje de error indicandonos que dicho componente no está registrado. Para hacer eso, debemos usar una ventana de CMD (en modo administrador) y registrar el componente correspondiente usando el comando regsvr32 componente.OCX. Si el problema persiste es que hay que hacer un paso extra. Algunas de los componentes que no suelen funcionar a pesar de registrar los OCX, son los componentes extras que se instalan junto con VB, me refiero a los common-controls 6.0 (Microsoft Windows Common Controls 6.0) que son 3 componentes adicionales. Para hacerlos funcionar se usa la instrucción regtlib, pero el problema es que este no se encuentra disponible en la versión de Windows 7 por lo que la alternativa es usar regtlibv12.exe, en mi caso lo encontré en esta carpeta:   C:\Windows\Microsoft.NET\Framework\v4.0.30319 si en tu caso, no lo encuentras, puedes buscarlo en la unidad donde tengas instalado Windows, yo lo hice con un simple DIR regt*.exe /s. Para facilitar el proceso (Y en caso de requerirlo más adelante) procedí a copiar el archivo a la carpeta de Windows\SysWow64\ y ejecutar desde ahí la instrucción regtlibv12 msdatsrc.tlb con lo que después de intentar activar los componentes que me causaban problemas, esos se activaron y usaron sin producir más errores.


Leave a Reply