Einige kennen vielleicht folgendes Scenario. Man hat in seiner VS Solution ein WebProjekt mit einer Installer-Klasse und ein WebSetup-Projekt. Das Setup-Projekt wird mit Hilfe benutzerdefinierter Aktionen (custom actions) erweitert. Z.B. damit der Benutzer während der Installation diverse Daten angeben kann. In der Installer Klasse wird daraufhin die Install-Methode Überschrieben, um die eingegebenen Daten dort zu verarbeiten.
Das sieht in etwa so aus:
1. [RunInstaller(
true)]
2. public class Installer1 : System.Configuration.Install.Installer{
3. public override void Install(IDictionary stateSaver) {
4. string serverName = this.Context.Parameters["ServerName"];
5. // hier irgendwas mit den Parametern machen.
6. base.Install (stateSaver);
7. }
8. }
Dann wird die Setup.exe generiert und ausgeführt. Doch wie kann ich nun meinen Code zur Laufzeit debuggen?
Man muss dazu folgende Dinge beachten:
1) Der Debugmodus des Web-Projektes muss in den Zustand: "Wartet auf das Anhängen an einen externen Prozess" gebracht werden.

2) Der Debugger funktioniert nur, wenn vorher ein managed Code aufgerufen wurde. Zusätzlich sollte während der Installation Zeit bleiben den Debugger zu aktivieren. Daher ist es am besten, wenn man eine Messagebox in der InstallMethode aufruft. Also einfach zwischen Zeile 3 und 4 ein MessageBox.Show("DebugMe"); eintragen.
3) Wenn dann während der Installation die MessageBox erscheint, kann in aller Ruhe dem Debugger der Installationsprozess übergeben werden. Das geht über das Menu "Debuggen" --> "Prozesse". In der dortigen Liste sucht man sich den richtigen InstallProzess (msiexec.exe) heraus. Aufpassen, daß man auch den richtigen erwischt, denn unglücklicherweise ist es nicht der, in dem der Titel erscheint, sondern der vom Typ .Net.

Wenn alles geklappt hat, kann man nun den eigenen Code debuggen. Ach nochwas, der BreakPoint muss hinter die MessageBox.Show() Methode gesetzt werden
thats was it.