jueves, diciembre 18, 2008

Wine + Hg = Freeze Time

Ultimamente me vi en la necesidad de convertir archivos de Autocad (DWG/DWF) a raster/bitmap.
El problema es que las aplicaciones son para window$ y casi siempre trials, con tiempo de expiración.
Para saltarme esta limitación de tiempo se me ocurrió utillizar el sistema de versiones que suelo usar para los proyectos de software, Mercurial. La idea era freezar el conjunto de directorios que genera wine y cada vez que se agota el tiempo, volver a una versión anterior de este conjunto de directorios.
Primero, instalo la aplicación en un "prefix" de wine, que es como una botella, o un contenedor de una "instalación asilada" de Window$. Para esto:
$ WINEPREFIX=~/.wine_freezado_1 wine setup.exe
o
$ WINEPREFIX=~/.wine_freezado_1 wine msiexec /i setup.msi
Inmediatamente después generamos un repositorio en el directorio, añadiamos todos los archivos y generamos un commit.
$ cd ~/.wine_freezado_1; hg init; hg add; hg ci -m "Estado inicial"

Y listo, una vez que se vence el tiempo, simplemente, hg revert --all.
Quizás por comodidad sea interesante generar un nuevo commit después de haber dejado la aplicación preseteada.

Algo interesante de ver es que es lo que la aplicación modifica para tener conciencia del tiempo. Generalmente es el registro, y si la cuestión es bastante tonta, hasta podemos hacer nuestro propio "crack".

Lamentablemente no todas las aplicaciones funcionan bien con wine. Pero como en general hay bastante redundancia con el soft, que siempre algo se encuentra.

Espero que les sirva.