An Avanade Blogging Community

Welcome to An Avanade Blogging Community Sign in | Join | Help
in Search

JuanLu, ElGuerre

"El Truco del Almendruco" en la depuración con "vsjitdebugger.exe"

En más de una ocasión hemos tenido que depurar de una forma un tanto compleja, o al menos no de la forma habitual, es decir ni depurando directamente desde Visual Studio ni atachando procesos, ¡seguro que si!  Más concretamente, y para el caso que nos ocupa pondré un para de ejemplos muy prácticos.

Durante estas semanas junto con un compañero de trabajo hemos estado realizando Setups "más o menos complejos" y, bueno, así es como uno se da cuenta de los problemas y de como surgen las necesidades, jejeje...

Durante estos Setups las "Customs Acctions", clases específicas para el tratamiento de acciones durante la instalación/desinstalación, surge la necesidad de depurarlas, y la pregunta es ¿cómo?. Alguno dirá; pues con MessageBox.Show(....), Console.WriteLine(...), etc.. si este mecanismo siempre funciona, pero es bastante más tedioso.

Pues nada de eso, a partir de ahora ¡y claro, para aquel que no conozca este truquito!, será mucho más fácil.

Pasos:

  • Abre el registro de windows: regedit.exe
  • Localiza la ruta "\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Image File Execution Options\"
  • Crear una nueva key "MsiExec.exe"
  • Para la Key creada, crear un nuevo valor alfanumérico/String value (REG_SZ) y asígnale el nombre "Debugger"
  • Ahora, asignale el valor "vsjitdebugger.exe"

Debería quedar así:

Esta configuración hará que nuestro depurador; "Visual Studio Just-In-Time Debugger" se inicie cada vez que se ejecute el comando Msiexec.exe

Si ahora sobre nuestro proyecto de Setup de Visual Studio, hacemos "click" con el botón derecho de ratón y pulsamos "Install",  "Tachaaaaannnnnn" ¡a depurar!, claro, previamente estableceremos los puntos de ruptura (Break Points) adecuados, :-D.

De la misma forma, si queremos instalar un Servicio Windows en la consola de servicios y utilizamos "InstallUtil" repetiremos los pasos sustituyendo MsiExec.exe por "InstallUtil.exe".

Una vez que hayamos finalizado la depuración, Modificar la key "MsiExed.exe" para que no se ejecute siempre, de manera que quede algo como; " _***_MsiExec.exe". De forma similar para InstallUtil.exe, por ejemplo _***_InstallUtil.exe.

Tambíen podríamos sustituir  nuestro depurador "vsjitdebugger.exe" por cualquier otro disponible en nuestra máquina.

 

Por supuesto, gracias a Javier,(si, el de las cervecitas, jejeje...) por tal descubrimiento.

 

¡Buscando la fácil senda en el desarrollo!
Juanlu

Published Saturday, June 28, 2008 1:35 PM by ElGuerre
Filed Under:

Comments

No Comments
Anonymous comments are disabled

About ElGuerre

Soy Juan Luis Guerrero, conocido como "Juanlu, El Guerre". Actualmente trabajo como Consultor Informático en Avanade Spain S.L, en Madrid y también publico en "Blogspot" y en "El Bruno".

This Blog

Post Calendar

<June 2008>
SuMoTuWeThFrSa
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

Syndication

©2006 Avanade Inc. All Rights Reserved.