¿Developers, developers, developers, developers? Cómo Microsoft alienó a los desarrolladores durante una década

“Microsoft loves Linux”, “Microsoft compra Github”. Este año Microsoft está haciendo una campaña bastante fuerte para atraer desarrolladores. Hablamos de una compañía que, en el año 2000 era de facto la empresa que dictaba las normas del desarrollo, ¿qué pasó?

El célrebre momento de Balmer gritando "Developers, developers!"
A principios de los 90 Microsoft se convirtió en el estándar del usuario medio: los críos de aquella época sabíamos que Apple existía y fabricaba unos equipos estupendos, pero eran caros y elitistas, algo que sólo los veíamos en las redacciones de los periódicos y en algunos laboratorios de universidades: el resto de los mortales usábamos MS-DOS y un tiempo después Windows. Todos los equipos, salvo algunas rarezas que empleaban Solaris, se programaban según dictase la compañía de Redmond, con Visual Basic sustituyendo a Basic en las aulas, si es que se podía acceder a la asignatura de informática en el colegio y se tenía la fortuna de tener un profesor competente, no alguien empeñado en que un ordenador era la nueva versión de la máquina de escribir y únicamente sometía a los alumnos a insufribles cursos de mecanografía y uso de procesador de texto. Si la cosa se ponía interesante se tocaba incluso algo de C.

Al llegar a la universidad y empezar a programar, los alumnos se dividían entre los que usaban Visual Studio 6.0 o los que usaban Turbo C y Borland, pero el principal era el primero por el soporte, una vez más, a Visual Basic… y entonces pasaron 2 cosas:

  • Microsoft decidió apostar por .NET en lugar de Visual Basic.
  • Microsoft empezó a cobrar un precio por las licencias de Visual Studio bastante draconiano, además de licencias por su .NET privativo.

Tengamos en cuenta que aquella época era un tanto diferente a la actual: no todo el mundo tenía acceso a Internet desde su casa, el software era muy escaso y consecuentemente a un precio de lujo, y la piratería era algo habitual, hasta el punto de que cuando comprabas un ordenado era bastante común que en la propia tienda te diesen el disco de sistema operativo pirata. Sin embargo en el sistema de educación de aquel entonces ya habían oído hablar del software libre y el código abierto, por lo que en vez de mantener su plan a base de copias ilegales decidieron hacer un cambio de paradigma bastante fuerte: se comenzó a cambiar el temario de las asignaturas de introducción a la programación a Java, usándose al principio Kawa (un IDE aberrante donde los hubiese, que no seguía bien las normas de codificación de Java y que era una verdadera pesadilla para instalar) y después eclipse que nos cambió la vida a todos para mejor. Los drivers, que seguían codificándose en C, se picarían en KDevelop, y empezamos a tener equipos con Debian y un primerizo Ubuntu.

Este cambio significó que las siguientes generaciones académicas de programadores estudiaron y se desarrollaron lejos de Microsoft, y 10 años después esa empresa se encontró con que carecía de nicho de programadores. Confiaron en que “las empresas serias seguirían usando su software” y así fue en ofimática, pero se perdieron un evento muy importante: la revolución web. El software libre y el código abierto abierto siguieron proliferando y aparecieron ECMAscript (especificaciones de JavaScript), PHP, Ruby… que fueron reinando en los servidores y navegadores, mientras que .NET solo se encontraba en el mundo empresarial mas rancio e inamovible. Progresivamente en las noticias cuando se hablaba de las grandes empresas tecnológicas, se ha pasado a hablar de la GAFA, que son Google, Apple, Facebook y Amazon. El gigante perdió su tren.

Con el cambio en la directiva y el fin de la etapa Balmer, Microsoft replantea su estrategia: cambió la licencia de .NET a una más abierta, se invierte esfuerzo en crear un IDE también abierto (Visual Studio Code, que está basado en Atom de Github) y se aumenta el esfuerzo en el nicho universitario, pero el daño ya está hecho: tienen una década de desarrolladores mayormente alienados, que han crecido académica y profesionalmente lejos de ellos, y que ahora que es su momento de escribir los programas actuales le están pasando factura por su codicia, siendo reacios a utilizar cualquier software que venga de ellos por miedo a que vuelva a cambiar las licencias. Esa misma generación también ha visto como las empresas que ha ido absorbiendo en el pasado han ido degradándose en cuanto a innovación, tales como Skype (que solía ser ligera y tener una conectividad magnífica: cuando en el campus universitario Internet se saturaba por exceso de usuarios, podía usar Skype para pedir a algún amigo que no estuviese en el campus que se descargase la página y me la mandase por Skype, que iba por un puerto distinto, de manera que me salvó en múltiples ocasiones compilando código y escribiendo documentación mientras me comunicaba por él. Ahora abrirlo en segundo plano me se come la mitad memoria de mi antiguo portátil) o LinkedIn (antes era una red donde se debía agregar a profesionales que trabajaron contigo generando una red útil y relevante, estando todos debidamente etiquetados. Ahora las etiquetas ya no existen y no hago más que recibir peticiones de agregación de recruiters para trabajos bastante alejados de mis intereses, lo que lo ha convertido en una monumental fuente de spam), por lo que desconfían de sus adquisiciones. La compra de Github tiene sentido porque con ella pasan a poseer al código en que se basa su IDE, y “obtiene” una comunidad de desarrolladores, pero para eso los estos deben decidir quedarse allí (junto a su código)

¿Podrá remontar? A nivel innovación lo veo difícil, pues ya no dicta las pautas. Su actual inversión, Azure, es conservadora: almacenamiento web y una nube basada en GNU/Linux, que es abrazar lo que su anterior CEO denominaba “un cáncer”. TypeScript es relativamente prometedor, pero su máximo uso es en Angular, cuyo desarrollo capitanea Google, dependiendo una vez mas de un tercero. Si algo podemos aprender de esto es que, como dice el refrán, “la avaricia rompe el saco”.

Installing Visual Basic 6.0 in Windows 10

Back to the past

Publicado en CodingMarkers el 28 de marzo del 2018

Installing Visual Basic 6.0 in Windows 10

I was recently requested to debug a pre-.NET application Visual Basic, so I had to set up the environment for Windows 98 development… but nowdays all that software is deprecated and has no support. This is what I learned from my experience to get it up and running, but in case you can make a choice, I’d recommend you to rewrite the code in .NET, as this kind of DLL code relies platform, and things have changed a lot in 20 years.

1.- Delete all the files from the previously failed VB6 installation attempts

Be careful to avoid deleting the recent Visual Studio versions, as they may have similar paths.

The Visual Studio 6.0 files are by default under ‘C:\Program Files (x86)’ in 64 bits systems.

C:\Program Files (x86)\Microsoft Visual Studio\Common
C:\Program Files (x86)\Microsoft Visual Studio\MSDN
C:\Program Files (x86)\Microsoft Visual Studio\MSDN98
C:\Program Files (x86)\Microsoft Visual Studio\VB98
C:\Program Files (x86)\Microsoft Visual Studio\VC98
C:\Program Files (x86)\Microsoft Visual Studio\*.HTM
C:\Program Files (x86)\Microsoft Visual Studio\*.TXT
C:\Program Files (x86)\Common Files\Microsoft Shared\MSDesigners98
C:\Program Files (x86)\Common Files\Microsoft Shared\MSDN
C:\Program Files (x86)\Common Files\Microsoft Shared\VS98
C:\Program Files (x86)\Common Files\Microsoft Shared\Wizards98

Clean up the Windows registry entrys: run ‘regedit.exe’ and delete the following keys if they exist.

HKEY_LOCAL_MACHINE\Software\Microsoft\DevStudio
HKEY_LOCAL_MACHINE\Software\Microsoft\HTML Help Collections
HKEY_LOCAL_MACHINE\Software\Microsoft\MSVSDG
HKEY_LOCAL_MACHINE\Software\Microsoft\Visual Basic\6.0
HKEY_LOCAL_MACHINE\Software\Microsoft\Visual Component Manager
HKEY_LOCAL_MACHINE\Software\Microsoft\Visual Modeler
HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\6.0
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\DevStudio
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\HTML Help Collections
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\MSVSDG
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Visual Basic\6.0
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Visual Component Manager
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Visual Modeler
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\VisualStudio\6.0
HKEY_CURRENT_USER\Software\Microsoft\DevStudio
HKEY_CURRENT_USER\Software\Microsoft\MSVSDG
HKEY_CURRENT_USER\Software\Microsoft\Visual Basic\6.0
HKEY_CURRENT_USER\Software\Microsoft\Visual Modeler
HKEY_CURRENT_USER\Software\Microsoft\VisualFoxPro
HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\6.0

2.- Modify the installation files to adapt them to current tech

First of all you will need a copy of the Visual Studio installer in your hard drive. I copied the content of an old college licensed CD into a folder, and proceeded to edit.

  • Open ‘SETUPWIZ.INI’ with a text editor (e.g. Notepad++), and replace ‘VmPath=ie4\msjavx86.exe’, which tries to install a really old Java implementation and makes the installation process fail, with an empty va. So the first part of the file should look like this:
[setup wizard]
eula = eula.txt
NTSP = NTsp3\nt4sp3_i.exe
NTSpMinVer = 3
IE4 = ie4\ie4setup.exe
CommonFilesMin = 50
IEIni=ie4check.ini
WFCClean = setup\wfcclean.exe
readme = readmevs.htm
pid = setup.ini
MSDN = setup.exe
Acme = acmboot.exe
AcmeId = vs98ecd1.inf
STF = setup\vs98ent.stf
DCOM98 = dcom98\dcom98.exe
MSDNID = msdn3?1.inf
NtSpUrl = ftp://ftp.microsoft.com/bussys/winnt/winnt-public/fixes/
IeUrl = http://www.microsoft.com/ie/ie40/download/
UsrUrl = http://msdn.microsoft.com/vstudio/register/default.htm
RegUrl = http://www.microsoft.com/isapi/redir.dll?Prd=vstudio&Pver=98&Ar=register
VmPath=
  • You must also edit the ‘SETUP.EXE’ properties. Go to the context menu of the file (right click as default), select properties, and got to the ‘compatibility’ tab. Check that you have selected:
    • Compatibility mode: execute as ‘Windows XP (Service Pack 3)’.
    • Configuration: ‘execute this program as administrator’.

3.- Execute the wizard installer

  1. Open the context menu of ‘SETUP.EXE’ and choose ‘run as administrator’.
  2. Don’t install ‘Source Safe’, as it fails.
  3. When we get to ‘choose the installation mode’ select ‘Custom’. Then follow these steps:
  • Do not install (as they fail):
    • Microsoft Visual FoxPro 6.0
    • Microsoft Visual InterDev 6.0
    • Microsoft Visual SourceDafe 6.0
    • ActiveX (obsolete version, generates conflict with the current version)
  • Install the unicode libraries: from the custom main menu, select the text ‘Microsoft Visual C++ 6.0’, and the button ‘Change option’ on the right side will be set as active. Click on it and follow a similar process for ‘VC++ MFC and Template Libraries’ and ‘MS Foundation Class Libraries’. Finally select all these options:
    • Static libraries
    • Shared libraries
    • Static libraries for Unicode
    • Shared libraries for Unicode
    • Browser database
    • Source code
  • Install the database: from the main ‘Custom’ menu, click on the ‘Data Access’ text , and the button ‘Change option’ on the right side will be set as active. Click on it and make sure that ‘ADO, RDS and OLE DB Providers’ is not selected. You will get a warning message saying that this component is esential for the application, but you should ignore it, as it will crash on Windows 10. Do select only the following options:
    • Microsoft ODBC Drivers
    • Remote Data Objects and Controls
    • Data environment
  • Install the tools: from the main ‘Custom’ menu, click on the ‘Enterprise Tools’ text, and the button ‘Change option’ on the right side will be set as active. Check that ‘Visual Studio Analyzer’ is not selected. Therefore, select only:
    • Aplication Performance Explorer
    • Repository
    • Visual Component Manager
    • Visual Basic Enterprise Components
    • VC++ Enterprise Tools
    • Microsoft Visual Modeler
  • As the last step, before pressing on ‘Finish’, do not let the program configure the environment vars.
    • If you have waited more than 5 minutes and the program is still ‘configuring the system’, you can assume something has gone wrong and the install has been frozen somewhere. Cancel it, clean up (see the first section on top of this post) and start all over again, reading carefully the steps.
    • If there is an error message about the Java machine you can ignore it. At that point you should be able by then to run ‘Visual Basic’ without the MSDN help package, so you get the bare bones yet fully functional experience.

4.- Execute the application

Run it always in administrator mode (right click on Visual Basic 6.0, and select ‘run as administrator’). Then, here it is, ready to run and debug ancient DLLs.

Visual Studio 6 on windows 10
After so many trial and errors, here it is: Visual Basic 6.0

 

❗️ If you want it the program to run using a Microsoft Office 2010 instance, you will need to load some dependencies. Go to ‘Project/References’ and select:

  • Visual Basic for Applications
  • Visual Basic runtime objects and procedures
  • Visual Basic objects and procedures
  • OLE Automation
  • Microsoft Excel 15.0 Object Library
  • Microsoft Word 15.0 Object Library

5.- References

My sources should get the credit they deserve for their help:

Cómo instalar Visual Basic 6.0 en Windows 10

La última semana he tenido que pelearme con una aplicación legado escrita en Visual Basic “pre.NET”, es decir, con literalmente 20 años y con el soporte mas que obsoleto… y como hablamos de código privativo de Microsoft, no hay manera legal de utilizar una herramienta alternativa para arreglarlo. Así que me lié la manta a la cabeza y me puse a pelearme con una copia de época universitaria para hacerla correr en Windows 10, y tras finalmente tener éxito, comparto aquí el mecanismo.

Visual Basic 6.0 en Windows 10

Conste que estoy con Microsoft en que sería mas recomendable migrarla a .NET porque a día de hoy su compatibilidad es cada vez peor. Se trata de software antiguo de 32 bits, por lo que sobre 64 bits puede hacer muchísimas cosas muy extrañas.

El proceso que se describe se basa en el método ensayo-error, puede que haga falta repetir la operación varias veces hasta ajustarlo debidamente.

Borrar los ficheros de intentos de instalación anteriores de VB6
¡Cuidado con no borrar los de Visual Studio posteriores! Las versiones de 2017 o posteriores pueden tener rutas por defecto parecidas.

  • Los ficheros de Visual Studio 6 están bajo `C:\Program Files (x86)` en sistemas de 64 bits.
C:\Program Files (x86)\Microsoft Visual Studio\Common
C:\Program Files (x86)\Microsoft Visual Studio\MSDN
C:\Program Files (x86)\Microsoft Visual Studio\MSDN98
C:\Program Files (x86)\Microsoft Visual Studio\VB98
C:\Program Files (x86)\Microsoft Visual Studio\VC98
C:\Program Files (x86)\Microsoft Visual Studio\*.HTM
C:\Program Files (x86)\Microsoft Visual Studio\*.TXT
C:\Program Files (x86)\Common Files\Microsoft Shared\MSDesigners98
C:\Program Files (x86)\Common Files\Microsoft Shared\MSDN
C:\Program Files (x86)\Common Files\Microsoft Shared\VS98
C:\Program Files (x86)\Common Files\Microsoft Shared\Wizards98
  • Limpiar restos del registro de programas de Windows: ejecutar ‘regedit.exe’ y borrar las siguientes claves si existen.
HKEY_LOCAL_MACHINE\Software\Microsoft\DevStudio
HKEY_LOCAL_MACHINE\Software\Microsoft\HTML Help Collections
HKEY_LOCAL_MACHINE\Software\Microsoft\MSVSDG
HKEY_LOCAL_MACHINE\Software\Microsoft\Visual Basic\6.0
HKEY_LOCAL_MACHINE\Software\Microsoft\Visual Component Manager
HKEY_LOCAL_MACHINE\Software\Microsoft\Visual Modeler
HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\6.0
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\DevStudio
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\HTML Help Collections
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\MSVSDG
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Visual Basic\6.0
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Visual Component Manager
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Visual Modeler
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\VisualStudio\6.0
HKEY_CURRENT_USER\Software\Microsoft\DevStudio
HKEY_CURRENT_USER\Software\Microsoft\MSVSDG
HKEY_CURRENT_USER\Software\Microsoft\Visual Basic\6.0
HKEY_CURRENT_USER\Software\Microsoft\Visual Modeler
HKEY_CURRENT_USER\Software\Microsoft\VisualFoxPro
HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\6.0

Preparar los ficheros de instalación

Lo primero es conseguir una copia del instalador de Visual Studio en el disco duro, pues vamos a necesitar editar varios de los ficheros de instalación a mano. Así que copia el contenido del CD a una carpeta.
1. Editar `SETUPWIZ.INI` (por ejemplo con Notepad++), cambiando la parte de `VmPath=ie4\msjavx86.exe`, que intenta instalar una versión muy antigua de Java y falla. La primera parte deber quedar como sigue:

[setup wizard]
eula = eula.txt
NTSP = NTsp3\nt4sp3_i.exe
NTSpMinVer = 3
IE4 = ie4\ie4setup.exe
CommonFilesMin = 50
IEIni=ie4check.ini
WFCClean = setup\wfcclean.exe
readme = readmevs.htm
pid = setup.ini
MSDN = setup.exe
Acme = acmboot.exe
AcmeId = vs98ecd1.inf
STF = setup\vs98ent.stf
DCOM98 = dcom98\dcom98.exe
MSDNID = msdn3?1.inf
NtSpUrl = ftp://ftp.microsoft.com/bussys/winnt/winnt-public/fixes/
IeUrl = http://www.microsoft.com/ie/ie40/download/
UsrUrl = http://msdn.microsoft.com/vstudio/register/default.htm
RegUrl = http://www.microsoft.com/isapi/redir.dll?Prd=vstudio&Pver=98&Ar=register
VmPath=

2. Editar las propiedades de `SETUP:EXE`. Botón secundario sobre el fichero, propiedades, e ir a la pestaña de compatibilidad. Asegurarse de que tenemos marcado:

  •  Modo compatibilidad: ejecutar en modo compatibilidad para ‘Windows XP (Service Pack 3)’.
  • Configuración: ‘ejecutar este programa como administrador’.

Ejecutar el asistente de instalación

1. Botón derecho sobre ‘SETUP.EXE’ y elegir ‘ejecutar como administrador’.
2. No instalar ‘Source Safe’, falla.
3. Cuando lleguemos a la parte de ‘seleccionar tipo de instalación’ elegir la opción ‘Custom’ (personalizada):

  • No instalar (porque fallan):
    • Microsoft Visual FoxPro 6.0
    • Microsoft Visual InterDev 6.0
    • Microsoft Visual SourceDafe 6.0
    • ActiveX (versión obsoleta que crea conflicto con componentes actuales)
  • Instalar las librerías unicode: desde el menú principal de custom, clickar sobre el texto de ‘Microsoft Visual C++ 6.0’, y en la parte de la derecha se activará el botón ‘Change option’ en el que clikamos. Repertir el proceso sobre ‘VC++ MFC and Template Libraries’, ‘MS Foundation Class Libraries’, y allí seleccionar todas las opciones:
    • Static libraries
    • Shared libraries
    • Static libraries for Unicode
    • Shared libraries for Unicode
    • Browser database
    • Source code
  • Instalar la base de datos: ir desde el menú principal de ‘Custom’ y clickar sobre el texto de ‘Data Access’, y en la parte de la derecha se activará el botón ‘Change option’ en el que clikamos. Asegurarse de que ‘ADO, RDS and OLE DB Providers’ no está seleccionado. Sale un mensaje de que este componente es esencial para la aplicación, pero lo ignoramos, pues solo necesitamos que corra Visual Basic. Dejarlo marcado hace que la instalación falle. Seleccionar solo:
    • Microsoft ODBC Drivers
    • Remote Data Objects and Controls
    • Data environment
  • Instalar las herramientas: desde el menú principal de custom, clickar sobre el texto de ‘Enterprise Tools’, y en la parte de la derecha se activará el botón ‘Change option’ en el que clikamos. Asegurarse de que ‘Visual Studio Analyzer’ no está seleccionado. Seleccionar solo:
    • Aplication Performance Explorer
    • Repository
    • Visual Component Manager
    • Visual Basic Enterprise Components
    • VC++ Enterprise Tools
    • Microsoft Visual Modeler
  • Terminar la instalación, y no dejar que configure las variables de entorno.
    • Si pasan mas de 10 minutos y sigue configurando el sistema, asumir que se ha colgado. Cancelar, limpiar (ver borrar los ficheros de intentos de instalación anteriores de VB6) y empezar de nuevo.
    • Si sale un error actualizando la máquina de Java ignorarlo. Viene de haber eliminado la variable de path en el wizard. No permitirá instalar los discos de extras de MSDN, pero si ejecutar ‘Visual Basic’ en su versión mas simple.

Ejecutar la aplicación
Ejecutarla siempre en modo administrador (botón secundario sobre Visual Basic 6.0, ejecutar como administrador).

Para hacer correr una aplicación simple las dependencias necesarias en las referencias son:

  • Visual Basic for Applications
  • Visual Basic runtime objects and procedures
  • Visual Basic objects and procedures
  • OLE Automation
  • Microsoft Excel 15.0 Object Library
  • Microsoft Word 15.0 Object Library

Referencias: