use*_*862 17 windows-installer wix burn wix3.6 votive
我正在使用Burn for MSIs包.我正在使用Votive(Visual Studio)和我自己的自定义BA而不是WiXBA.我尝试使用调试自定义BA Debugger.Launch().但是当我开始调试时,会出现错误消息.
没有为任何调用堆栈帧加载符号.源代码无法显示
我意识到package.exe链接了位于的CustomBA dll C:\Documents and Settings\user\Local Settings\Temp\{GUID}\.{GUID}总是改变.因此,每当我运行package.exe时,总是会更改目录.
我认为这是发生错误的原因.
在Visual Studio中,当我使用CustomBA dll启动package.exe时,它位于绝对路径(.../Debug/bin/CustomBA.dll).但是在执行package.exe之后,它会链接到Local Settings\Temp\{GUID}目录.因此,当我们开始调试并附加到CustomBA dll时,CustomBA dll的目录会动态更改并No symbols are loaded发生错误.
C:\Documents and
Settings\user\Local Settings\Temp\{GUID}\?我们可以静态选择dll的路径吗?Rob*_*ing 26
要调试Bootstrapper应用程序,你需要你的Bundle .wixproj和BA .csproj(或.vcxproj,如果你正在使用本机.dll)在同一个解决方案中,Bundle项目应该依赖于BA项目,所以重建工作正常.以下步骤应该允许您进入代码.
注意:确保未运行Visual Studio提升.如果禁用了UAC,请重新启用它.如果Visual Studio运行提升,这些步骤将无法正常工作.
Set as StartUp Project.BA .csproj应该是大胆的.Properties.PropertiesBA .csproj上选择Debug标签.Debug选项卡中,选择标记的单选按钮Start external program现在,您可以按F5并开始调试.请记住,每次更改BA .csproj时,您还需要确保重建Bundle .wixproj.否则,Bundle将与您的旧BA一起启动,调试器将发现新建的BA的.pdbs不匹配.
额外的功劳:如果您Just My Code在调试器设置中禁用并下载pdbs.zip和sources.zip以进行WiX安装的匹配构建,您实际上可以逐步完成刻录代码以及BA,以查看所有内容如何协同工作.
我在这篇文章中遵循了Rob的建议,但遗憾的是我无法让它为我工作(Visual Studio 2015,Wix 3.10.3,使用WixWPF管理Bootstrapper应用程序).没有任何断点被击中.我注意到调试器将自己附加到错误的进程,安装程序有两个正在运行的进程(我猜测BA和Bundle).当我改变过程时,断点被击中但我的托管BA有代码我想在调试器实际连接之前进行调试
我设法找到一个解决方案,在连接调试器之前应用程序不会启动.我把这些代码放在我的构造函数代码隐藏文件(在DEBUG块中)中,用于我的托管BA ...
public MainWindow()
{
#if DEBUG
// Do not start until debugger attached
while(!System.Diagnostics.Debugger.IsAttached)
{
System.Threading.Thread.Sleep(1000);
}
#endif
InitializeComponent();
InstallData = new InstallerInfo();
}
Run Code Online (Sandbox Code Playgroud)
现在,当我编译我的托管Bootstrapper应用程序(带有Debug)和Bundle并运行它时,应用程序将无法启动,直到您连接到托管的Bootstrapper应用程序Tools > Attach to Process > Find your exe in the list.
您无法从Visual Studio以调试模式运行自定义BA.
您可以做的是运行生成的exe文件,然后将Visual Studio附加到允许您调试它的进程.(在菜单中:Tools > Attach to Process > Find your exe in the list)