Explicamos en este artículo cómo ejecutar aplicaciones desarrolladas para los sistemas operativos Microsoft Windows en GNU Linux, usando la herramienta Wine. Explicamos cómo instalar Wine en GNU Linux Ubuntu 10.04 y cómo configurarlo para ejecutar una de nuestras aplicaciones (que incluso usa librerías dll).

Wine

Wine (Wine Is Not an Emulator ó Wine no es un emulador) es una reimplementación del API de Win16 y Win32 para sistemas operativos basados en Unix. Permite la ejecución de programas para MS-DOS, Windows 3.11, 95, 98, ME, XP, Vista, Windows 7, NT, Windows Server 2000, 2003, 2008 en sistemas Unix.

Wine es un software para sistemas operativos Unix y GNU Linux que provee a estos de:

  • Un conjunto de herramientas de desarrollo para portar código fuente de aplicaciones Microsoft Windows a Unix.
  • Un cargador de programas, el cual permite que muchas aplicaciones para todos los sistemas operativos Windows se ejecuten sin modificarse en varios sistemas operativos similares a Linux como el propio GNU Linux, BSD, Solaris y Mac OS X.

La razón por la cual Wine no es un emulador es que los emuladores tienden a duplicar el entorno completo en el que un programa vive, incluyendo la simulación de una arquitectura de procesador determinada. Wine, por el contrario, implementa lo que podría ser llamado una capa de compatibilidad, la cual provee alternativas a las bibliotecas de Windows.

A continuación exponemos las características más significativas de Wine:

  • Compatibilidad binaria:
    • Soporte para programas de la familia MS-DOS y Windows 3.x/9x/NT/2000/XP/2003/Vista/2008/7.
    • Soporte para llamadas de funciones de Windows de 64, 32 y 16 bits.
    • Código x86 de 64, 32 y 16 bits.
    • Extensas bibliotecas de interrupciones para programas utilizando llamadas de modo real INTxx.
    • Capacidades avanzadas de trunking.
    • Posibilidad de añadirle más bibliotecas dinámicas (DLL), incluso las nativas de Windows, las cuales están ubicadas en la carpeta C:/Windows/System32, y pueden ser instaladas en wine copiando dichas librerías en la carpeta ~/.wine/drive_c/windows/system32.
    • Diseño de ingeniería inversa para mejorar la solución frente a errores.
    • Ejecución sobre otras arquitecturas no Intel bajo emulación, con QEMU (Darwine era una bifurcación de Wine hecha para Mac OS X PowerPC, pero el proyecto quedó abandonado).
  • Gráficos:
    • Puede dibujar en entornos gráficos basados en X11, SDL texto/ttydrv.
    • Pantalla remota para cualquier terminal X.
    • Soporte total de GDI y parcial GDI32.
    • Soporte de DirectX para juegos.
    • Puede utilizar impresoras para sistemas Windows de 16 bits de forma nativa.
    • Interfaz interna de impresión PostScript.
    • Capacidad de meta-archivo.
    • Capacidad de ejecución en una o varias ventanas.
    • Posibilidad de instalar temas visuales de formato msstyle, los nativos de Windows.
  • Otras características:
    • Soporte de sonido y entradas alternativas.
    • Soporte de modems o dispositivos por puerto serie.
    • Trabajo en red con Winsock TCP/IP.
    • Soporte de escáneres ASPI.
    • Soporte de controles avanzados típicos de programas Windows de 32 bits.

Instalar y configurar Wine en GNU Linux Ubuntu 10.04

Instalar Wine con apt-get en GNU Linux Ubuntu 10.04

Para instalar Wine podremos hacerlo desde el modo gráfico, desde «Sistema» – «Administración» – «Gestor de paquetes Sinaptic» o desde la consola o shell de comandos, desde «Aplicaciones» – «Accesorios» – «Terminal»:

Instalar Wine en GNU Linux Ubuntu 10.04

Introduciremos el siguiente comando GNU Linux:

sudo apt-get install wine

Pulsando el tabulador, nos mostrará todas las aplicaciones con Wine disponibles:

Escribiremos el comando GNU Linux:

sudo apt-get install wine1.2

Instalar Wine en GNU Linux Ubuntu 10.04

Nos pedirá si deseamos continuar (se requiere conexión a Internet), pulsaremos «s» e INTRO para continuar:

Instalar Wine en GNU Linux Ubuntu 10.04

Se iniciará la descarga de todos los paquetes necesarios para el funcionamiento de Wine:

Instalar Wine en GNU Linux Ubuntu 10.04

Si todo es correcto, las últimas líneas de la instalación de Wine en GNU Linux Ubuntu serán:

extracting fontinst.inf
extracting Verdanab.TTF
extracting Verdanai.TTF
extracting Verdanaz.TTF
extracting Verdana.TTF
All done, no errors.
webdin32.exe: La suma coincide
Extracting cabinet: webdin32.exe
extracting fontinst.exe
extracting Webdings.TTF
extracting fontinst.inf
extracting Licen.TXT
All done, no errors.
All fonts downloaded and installed.
Updating fontconfig cache for /usr/share/fonts/truetype/msttcorefonts
No CIDSupplement specified for Dotum-Bold, defaulting to 0.
No CIDSupplement specified for Batang-Regular, defaulting to 0.
No CIDSupplement specified for Batang-Bold, defaulting to 0.
No CIDSupplement specified for Dotum-Regular, defaulting to 0.
Updating fontconfig cache for /usr/share/fonts/truetype/msttcorefonts
Configurando winbind (2:3.4.7~dfsg-1ubuntu3.2) …
* Starting the Winbind daemon winbind                                   [ OK ]
Procesando disparadores para libc-bin …
ldconfig deferred processing now taking place

Configurar Wine en GNU Linux Ubuntu 10.04

Una vez instalado Wine prodremos configurarlo desde el menú «Aplicaciones» – «Wine» – «Configurar Wine»:

Configurar Wine en GNU Linux Ubuntu 10.04

Wine nos mostrará la ventana de Configuración con el mismo aspecto que las ventanas de Microsoft Windows, desde aquí podremos configurar algunos parámetros: versión de Microsoft Windows a imitar por aplicación, librerías, gráficos, integración de escritorio, audio, unidades, etc:

Configurar Wine en GNU Linux Ubuntu 10.04

Ejecutar aplicación Windows en GNU Linux con Wine

Una vez instalado Wine, descargaremos cualquier aplicación para Microsoft Windows (lógicamente no todas funcionan), en nuestro caso probaremos AjpdSoft Gestión Integral, una aplicación desarrollada en Borland Delphi 6 para los sistemas operativos de Microsoft Windows (desde Windows 98 hasta Windows 7). Dicha aplicación requiere de la librería libmysql41.dll para el acceso al motor de base de datos MySQL Server.

En este caso vamos a probar una aplicación Windows que no requiere de instalación, como es AjpdSoft Gestión Integral.

Para ejecutar una aplicación Microsoft Windows en Linux con Wine pulsaremos con el botón derecho del ratón sobre el ejecutable, en el menú emergente seleccionaremos «Abrir con Wine Cargador de programas de Windows»:

Ejecutar aplicación Windows en GNU Linux con Wine

Si no hemos establecido el permiso de ejecución para el fichero ejecutable Windows (gestionInfo.exe), nos mostrará este error:

Ejecutar aplicación Windows en GNU Linux con Wine

Con el texto: The file ‘/home/ajpdsoft/Escritorio/AjpdSoft Gestión Integral/gestionInfo.exe’ is not marked as executable. If this was downloaded or copied form an untrusted source, it may be dangerous to run. For more detalis, read about the executable bit.

Para solucionar este problema pulsaremos con el botón derecho del ratón sobre el ejecutable Windows, seleccionaremos «Propiedades»:

Ejecutar aplicación Windows en GNU Linux con Wine

En la pestaña «Permisos», marcaremos la opción «Permitir ejecutar el archivo como un programa»:

Ejecutar aplicación Windows en GNU Linux con Wine

También es posible cambiar los permisos del fichero y hacerlo ejecutable desde la línea de comandos, con el comando GNU Linux:

chmod 777 /home/ajpdsoft/Escritorio/AjpdSoft/Gestión Integral/gestionInfo.exe

Volveremos a ejecutar el fichero con Wine:

Ejecutar aplicación Windows en GNU Linux con Wine

Y ahora, si tenemos la DLL (en nuestro caso libmysql41.dll) en la misma carpeta que el fichero ejecutable, la aplicación Windows funcionará perfectamente en GNU Linux:

Ejecutar aplicación Windows en GNU Linux con Wine

Esta aplicación, completamente desarrollada para Microsoft Windows, con acceso a base de datos MySQL Server, aplicación completa de facturación, albaranes, materiales, control de stock, cobros, pagos, cheques, pagarés, notas, tareas, contactos que, además, permite adjuntar ficheros y guardarlos en la BD funciona perfectamente en GNU Linux mediante Wine, todo un logro por parte de los desarrolladores de Wine, sin duda nos ha sorprendido.

En el ejemplo, abrimos las facturas y accede a los datos del servidor MySQL Server ubicado en un equipo con Microsoft Windows 7 perfectamente, muestra las ventanas de Windows como si estuviéramos en Windows:

Ejecutar aplicación Windows en GNU Linux con Wine

Pulsando en «Modificar» podremos ver el detalle de la factura:

Ejecutar aplicación Windows en GNU Linux con Wine

Incluso funcionan perfectamente los métodos de arrastrar y soltar (drag & drop), la exportación a Excel, al guardar el archivo, nos mostrará la ventana de selección de ubicación de archivo (como la de Windows), incluso simula las carpetas al estilo Windows:

Ejecutar aplicación Windows en GNU Linux con Wine

El fichero Excel exportado podrá abrirse perfectamente con OpenOffice:

Ejecutar aplicación Windows en GNU Linux con Wine

Nos mostrará el fichero Excel exportado con la aplicación para Windows AjpdSoft Gestión Integral:

Ejecutar aplicación Windows en GNU Linux con Wine

Como decimos, Wine 1.2 nos ha sorprendido muy gratamente, una aplicación 100% Windows, con uso de librerías, que escribe en el Registro de configuraciones de Windows (también simulado por Wine), que escribe y lee en ficheros INI (Wine también proporciona métodos de acceso a ficheros perfectamente compatibles), funcionando sin problemas, sin hacer absolutamente ningún cambio en GNU Linux con Wine. Se integra perfectamente en el escritorio de GNU Linux, como una aplicación más. Sin duda, Wine, se hace imprescindible para aquellos desarrolladores y usuarios que tengan aplicaciones Windows imposibles de migrar a GNU Linux, con Wine sí será posible. Estos usuarios podrán disfrutar del sistema operativo GNU Linux y, además, de sus aplicaciones Windows.

Instalar aplicación AjpdSoft Control de Campo con instalador de Windows en GNU Linux con Wine

A continuación, para «rizar el rizo», vamos a instalar una aplicación Windows que requiere de instalador (installshield) en GNU Linux usando Wine. Se trata, en este caso, de una de nuestras aplicaciones open source desarrollada en Delphi para Windows que requiere del motor de base de datos BDE (Borland Database Engine) para acceso a tablas Paradox, esta aplicación es AjpdSoft Control de Campo. Utilizaremos como ejemplo esta aplicación porque, como decimos, requiere de instalador para instalar el BDE.

Para iniciar la instalación de la aplicación, en primer lugar la descargaremos desde: AjpdSoft Control de Campo, descomprimiremos el fichero «cdc.zip» pulsando con el botón derecho sobre él y seleccionado «Extraer aquí»:

Ejecutar aplicación Windows en GNU Linux con Wine

Realizaremos la misma operación para el fichero SETUP.EXE que en el ejemplo anterior (cambiando los permisos para hacerlo ejecutable), pulsaremos con el botón derecho sobre SETUP.EXE y seleccionaremos «Abrir con Wine Cargador de programas de Windows»:

Ejecutar aplicación Windows en GNU Linux con Wine

Se iniciará el asistente de instalación de la aplicación Windows, como si de Windows se tratase, pulsaremos «Siguiente»:

Ejecutar aplicación Windows en GNU Linux con Wine

Pulsaremos «Sí» en el contrato de licencia (si estamos de acuerdo):

Ejecutar aplicación Windows en GNU Linux con Wine

Pulsaremos «Siguiente», la carpeta de instalación por defecto será:

C:/Archivos de programa/AjpdSoft/Control de Campo

Wine simulará esta ruta, por lo que dejaremos la de defecto, pulsaremos «Siguiente»:

Ejecutar aplicación Windows en GNU Linux con Wine

Pulsaremos «Siguiente»:

Ejecutar aplicación Windows en GNU Linux con Wine

Pulsaremos «Siguiente», se iniciará la instalación de la aplicación y del BDE (Borland Database Engine) en el entorno Wine:

Ejecutar aplicación Windows en GNU Linux con Wine

Si queremos que la aplicación se ejecute marcaremos «Sí, iniciar el archivo del programa» y pulsaremos «Finalizar»:

Ejecutar aplicación Windows en GNU Linux con Wine

Y, otra vez sorprendiéndonos gratamente, la aplicación desarrollada para Windows, con acceso a tablas Paradox y con el uso del BDE funciona perfectamente en GNU Linux Ubuntu, gracias a Wine:

Ejecutar aplicación Windows en GNU Linux con Wine

Podremos acceder a cualquier parte de la aplicación: cuadrillas, terceros, partes, vales de fruta, ingresos, etc. Funciona perfectamente y accede perfectamente a tablas Paradox usando el BDE simulado en Wine:

Ejecutar aplicación Windows en GNU Linux con Wine

Podremos ejecutar la aplicación AjpdSoft Control de Campo en nuestro equipo con GNU Linux Ubuntu 10.04 cada vez que queramos desde «Aplicaciones» – «Wine» – «Programas» – «Control de Campo»:

Ejecutar aplicación Windows en GNU Linux con Wine

Además, desde «Aplicaciones» – «Wine» – «Explorar la unidad C:»

Ejecutar aplicación Windows en GNU Linux con Wine

Podremos ver una estructura similar a la de Windows, simulada por Wine, con la uniad C, la carpeta «Archivos de programa» y la carpeta «Control de Campo»:

Ejecutar aplicación Windows en GNU Linux con Wine