Migrando el XP Mode a VirtualBox con miras al Windows 8

Bueno, ya son poco mas de 3 años usando Windows 7, así que como esencialmente me dedico a trabajar con tecnologías Microsoft el migrar a Windows 8 es un paso que eventualmente tendré que dar, por lo que faltando dos días para el vencimiento de la oferta decidí comprar el Windows 8 Pro a 40$, si no lo hiciste hasta el 31 de Enero, lastima, ahora toca desembolsar 160$.
Siendo que la disponibilidad del software ya no es un problema, toca hacer un planeamiento de los pasos necesarios antes de hacer la migración, saltando dos esencialmente:
– ¿Mi equipo actual aguantara Windows 8? Como comente la última vez (el 2009) que hice un gran cambio de hardware actualmente tengo la Asus P5E WS Pro, con un procesador Core2Duo de 2.13, siendo que a poco de regresar a Perú (si! Estoy usando la misma compu que tenía en España!) le puse 8GB de RAM en vez de los 4 que ya tenía. Oficialmente esta configuración sobrepasa los requisitos mínimos para la instalación de Windows 8 (*) por lo que no debería tener problemas, pero lamentablemente las pruebas de upgrade sobre Core2Duo se han hecho sobre chip de 2.6Ghz, por lo que los datos de performance no aplican totalmente para mi.
En ese sentido (con un procesador de mas de 6 años) se impone un upgrade de hardware, siendo la duda el si lo hare antes o después de instalar Windows 8, se supone que no debería haber diferencia, excepto a que no se si luego de cambiar la placa tendré que Activar Windows nuevamente, y de ser así, si estaré permitido de hacerlo o no, queda para la reflexión.
En todo caso una duda que tenía desde que se anunciaron las primeras versiones de prueba de Windows 8 era sobre el destino del Windows XP Mode (en simple: una máquina Virtual de XP muy integrada con Windows 7), siendo que el soporte de Windows XP acaba el 2014 y que W8 retira a MS Virtual PC para adoptar la tecnología Hyper-V (existente desde Windows 2008 Server) Microsoft decidió descontinuar Windows XP Mode ofreciendo como única alternativa el poder recuperar los datos que hubiera en las Maquina Virtual existentes, y es aquí lo que me plantea el reto de tener algo listo para poder seguir corriendo mi Máquina Virtual y sus aplicaciones (y no solo acceder a sus archivos) cuando tenga Windows 8 instalado, y es en esto en lo que me enfocare en este post.
Repasemos el escenario, tengo un disco duro virtual VHD de 30GB Gigabytes+/-, el cual actualmente corre sin problemas en mi instalación de Virtual PC, este disco duro no podrá ser “levantado” por Hyper-V por lo que la alternativa es intentar correrlo en otro motor de virtualización, en mi caso particular he optado por VirtualBox, el cual debe instalarse previamente si es que no lo has hecho ya..

Al investigar en Internet me he enterado con dos problemas bloqueantes para lograr dicho propósito (que luego pude corroborar):
– Al intentar levantar el disco VHD desde Virtual Box se me informa que falta un disco maestro, upss
– Si de alguna manera se logra levantar la máquina virtual en Virtual Box, nomás iniciar sesión se requiere Activar la máquina virtual, esto debido a que ese Windows XP detecta que el BIOS de VirtualBox es diferente de Virtual PC, por lo que las alternativas en teoría son dos: usar una clave de Windows XP (hay una que viene con la instalación de XP Mode) para intentar la activación o hacer que la máquina virtual crea que el BIOS es el mismo, en concreto la única alternativa es la segunda, así que ni se esfuercen en intentarlo y vayamos a lo seguro, que es de lo que trata esta guía.

Advertencia: Llegados a este punto debo indicar que en algunos foros se comenta que bajo Windows 8 ya no tenemos la licencia para ejecutar XP Mode, que esta solo es válida bajo Windows 7, así que habrá que estar atentos a lo que diga Microsoft de manera oficial al respecto, pero en ese sentido lo que mas me preocupa es que para el 2014 ya se acaba oficialmente el ciclo de vida de Windows XP.


clip_image001Como medida de seguridad es imprescindible copiar el archivo del disco duro virtual ( .vhd) a un lugar seguro por si por a o b algo nos sale mal; hecho esto nuestro primer paso es crear un nuevo disco duro virtual que si pueda ser levantado por VirtualBox, para lograr esto debemos iniciar nuestro XP Mode y una vez dentro instalar y ejecutar el Disk2VHD, este programa nos permitirá crear un disco duro virtual “sin problemas”, como se ve en el gráfico.

Nótese que el nuevo archivo lo estamos creando en una ruta tsclientd… que es la ruta mediante la cual podemos acceder desde nuestra maquina a los archivos y unidades alojados dentro de la maquina anfitriona (nuestro Windows 7) , en esta etapa sugeriría que antes de iniciar el proceso se desinstale los componentes de integración (Virtual PC Integration Components) pues harán algo complicado el proceso de inicio en su nuevo sistema anfitrión, en mi caso no lo hice aunque al final todo quedo bien como comentare luego.

Este proceso puede tomar como 20 minutos o mas, no hay problema, podemos esperar.
Ya con el nuevo disco duro virtual (oh sorpresa, pesa solo 15GB en comparacion de los 30 del original!) procedemos a crear la máquina virtual desde VirtualBox, nótese que debemos indicarle que vamos a hacer uso de un disco duro ya existente.

 IMPORTANTE: una vez creada la máquina virtual no iniciarla aun.
clip_image003
Bueno, ya tenemos la máquina virtual creada, ahora lo que toca es preparar nuestro VirtualBox para que provea a nuestra Maquina Virtual con un Bios compatible con Virtual PC, para esto debemos bajar este archivo, desempaquetarlo y ejecutar esto en una línea de comandos con privilegios administrativos:
VBoxManage.exe setextradata el-nombre-de-tu-mv “VBoxInternal/Devices/pcbios/0/Config/BiosRom” “c:vmlite-biospcbios.bin” (en lugar de C:vmlite-bios… usar la ruta donde se haya desempaquetado el archivo pcbios.bin)

Y listo… ahora si podemos iniciar nuestra máquina virtual, en este punto deberemos (si no lo hicimos desde Virtual PC) desinstalar las extensiones de integración de Microsoft para poder instalar las que nos provee VirtualBox, esto podrá requerir algunos reinicios hasta que quede estable, pero como ven ya tengo básicamente bajo VirtualBox la misma Maquina Virtual que tenia bajo Virtual PC.
clip_image005
Espero que esto haya sido de utilidad para poder seguir trabajando con nuestras máquinas virtuales de Windows XP Mode bajo VirtualBox y por ende luego bajo Windows 8.
Referencias:
TOPIC: VMLite XP Mode Plugin for VirtualBox and Virtutal Box 4.0
Windows XP Mode for VirtualBox 4
(*) se supone que si una maquina corre W7 deberia correr Windows 8 igual o ligeramente mejor.

Integrando Continuamente Visual Studio 2012 con Hudson

Quienes me conocen personalmente saben que me encanta Team Foundation Service como herramienta ALM y de Integración Continua, pero a veces toca que por diversas razones no podamos contar con esta solución que out of the box nos ofrece muchas cosas, en este caso el stack con el que teníamos que trabajar era Subversion y Hudson, por las referencias que tenia ya varios proyectos habían utilizado el plugin de Hudson con MSBuild (y no estaba dispuesto a experimentar con Nant 😉 ), pero nuestro caso era diferente, iba a ser en Visual Studio 2012, por lo que se configuro de manera habitual (conexión de Hudson con SVN y configuración del MSBuild), nada fuera de lo habitual excepto que los builds fallaban.
clip_image001
Bueno, el primer error que pude ver en el log era que de alguna manera el MSBuild instalado “no entendia” la nueva versión de archivos .sln de Visual Studio 2012, investigando pude encontrar un caso similar, concretamente cómo hacer para que un Agent de TFS 2008 pudiera ser capaz de compilar soluciones de Visual Studio 2012, la solución que se planteaba era instalar los Agents de Visual Studio 2010, así que por analogía supuse que había que instalar los Agents de Visual Studio 2012 sobre nuestro servidor de integración, y si, eso era… el formato de VS 2012 ahora sí que era entendido por el MSBuil de nuestro Hudson.

Pero a pesar de eso la build seguía fallando, y al revisar nuevamente el log descubrí que era porque no se encontraba el Assembly System.Web.Mvc y otros mas , upss, asi que toco volver a Visual Studio y comprobé que a pesar de que había hecho un “update-package” para actualizar todas las referencias del Nuget (si no sabes de que estoy hablando revisa este interesante articulo) por ahí se me habían colado unas referencias a las librerías instaladas en mi sistema y no a las que estaban en la carpeta “packages” (que como recordaran es gestionada por Nuget), en este caso fue mas

clip_image003

sencillo, borrar las referencias e instalar las referencias en los proyectos respectivos:
En todo caso, la moraleja de esta etapa es “NuGet es tu amigo, si NuGet puede manejarlo, no lo hagas tu a menos de que estés seguro que no puede hacerlo (como puede ser una librería comercial”).
A estas alturas ya estábamos mas confiados en que saldríamos de esta, la build seguía fallando, pero esta vez el mensaje de error se encontraba al final del log:

error MSB4019: The imported project "C:Program Files (x86)MSBuildMicrosoftVisualStudiov11.0WebApplicationsMicrosoft.WebApplication.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.

La búsqueda me derivo a este artículo, que si bien era enfocado a TFS nos daba una sugerencia totalmente valida: copiar esa carpeta de una máquina que tenga una instalación completa de Visual Studio 2012 (recordemos que la idea es nunca tener que instalar todo el VS en el servidor de Integración Continua, solo lo mínimo necesario), se hizo eso y.. listo!

Build succeeded.
    0 Warning(s)
    0 Error(s)
Time Elapsed 00:00:01.41
[DEBUG] Skipping watched dependency update; build not configured with trigger: xxxxxxx #16
Finished: SUCCESS

clip_image004

Bueno problema resuelto, ahora tocara ver que se puede hacer para que compile en el .Net Framework 4.5 ya que cuando coloco uno de los proyectos como 4.5 obtengo este hermoso error…

C:WindowsMicrosoft.NETFrameworkv4.0.30319Microsoft.Common.targets(983,5): warning MSB3644: The reference assemblies for framework ".NETFramework,Version=v4.5" were not found. To resolve this, install the SDK or Targeting Pack for this framework version or retarget your application to a version of the framework for which you have the SDK or Targeting Pack installed. Note that assemblies will be resolved from the Global Assembly Cache (GAC) and will be used in place of reference assemblies. Therefore your assembly may not be correctly targeted for the framework you intend.

Espero que les sea de utilidad si por a o b tienen que usar un servidor de IC no hecho en .Net 😉

Team Foundation Service, tu mejor opción en ALM :)

Si algo se me ha pasado es compartir esta presentación con la que introduje Team Foundation Service en el ultimo Agile Open Lima, así como a algunos compañeros de trabajo

En este tiempo lo que ha cambiado es que TFS ya es RTM, por lo cual ahora si que se tienen los planes de licenciamiento, y algo muy interesante, ahora esta integrado con GIT. No queda sino animarlos a probar Team Foundation Service, el cual es gratis para equipos de hasta 5 personas y por supuesto seguir los blogs de El Bruno y Jersson, que siempre nos estan informando novedades sobre esta potente herramienta.