Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to debug custom bootstrap application?

I am using Burn for MSIs package. I am using Votive (Visual Studio) & my own custom BA instead of WiXBA. I tried to debug custom BA using Debugger.Launch(). But when I start debugging, error messages occur.

No symbols are loaded for any call stack frame. The source code cannot be displayed

I realized that package.exe links CustomBA dll which located at C:\Documents and Settings\user\Local Settings\Temp\{GUID}\. {GUID} is always changed. So, whenever I run package.exe, always directory is changed.

I think that is the reason to occur errors.

In Visual Studio, When I started package.exe with CustomBA dll which located at absolute path (.../Debug/bin/CustomBA.dll). But after execute the package.exe, it links to Local Settings\Temp\{GUID} directory. So, when we start debugging and attached to CustomBA dll, CustomBA dll's directory is dynamically changed and No symbols are loaded error occurs.

  • Why package.exe links dll which located at C:\Documents and Settings\user\Local Settings\Temp\{GUID}\? Can we choose the path for dll statically?
  • If we can't choose the dll path statically, how can I use debugging functions for CustomBA?
like image 680
user1356862 Avatar asked Jun 12 '12 17:06

user1356862


1 Answers

To debug a Bootstrapper Application, you'll want both your Bundle .wixproj and BA .csproj (or .vcxproj if you're doing a native .dll) in the same solution and the Bundle project should be dependent on the BA project so rebuilds work correctly. The following steps should allow you to step into your code.

Note: Ensure you are not running Visual Studio elevated. If you have UAC disabled, re-enable it. These steps will not work correctly if Visual Studio is running elevated.

  1. Rebuild the project. This ensures you have a Bundle created with an updated BA.dll inside it.
  2. Right click on the BA .csproj in Solution explorer and select Set as StartUp Project. The BA .csproj should be bold.
  3. Right click on the BA .csproj and choose Properties.
  4. On the Properties for the BA .csproj select the Debug tab.
  5. In the Debug tab, choose the radio button labeled Start external program
  6. Browse to the path where your Bundle is built.

Now, you can press F5 and start debugging. Remember that any time you change the BA .csproj, you also need to ensure the Bundle .wixproj is rebuilt. Otherwise, the Bundle will launch with your old BA in it and the debugger will find the newly built BA's .pdbs don't match.

Extra credit: if you disable Just My Code in the debugger settings and download the pdbs.zip and sources.zip for the matching build of your WiX install, you can actually step through the Burn code as well as your BA to see how everything works together.

like image 128
Rob Mensching Avatar answered Sep 22 '22 21:09

Rob Mensching