如何在构建到MSI中时从程序集中获取PDB(符号)

时间:2010-06-11 01:27:13

标签: visual-studio windows-installer symbols

我使用Visual Studio 2008创建了一个标准的MSI。

有什么方法可以让它复制放在MSI中的确切DLL和EXE的符号,以便我可以使用它们来远程调试来自该MSI的安装吗?

3 个答案:

答案 0 :(得分:4)

另一种方法是使用条件安装标志和公共属性。

将您的pdb文件添加到msi,但也在msi中创建一个新组件,并将pdb文件与该组件关联。

在msi中创建一个新的公共属性,称之为INSTALLDEBUGSYMBOLS。将其值设置为 false 。如果属性设置为 true ,则仅在新组件上设置条件以进行安装。这意味着在正常安装期间,将跳过包含pdb文件的组件。但是,您可以在以后重新运行msi,并覆盖INSTALLDEBUGSYMBOLS标志的值,这意味着您的组件现在已安装(公共属性可以在外部设置其值)。要覆盖该属性,您的命令行将如下所示:

MyInstaller.msi INSTALLDEBUGSYMBOLS=true

答案 1 :(得分:1)

我认为您必须为所有项目添加调试符号。

并在安装项目中添加调试版本的输出;部署应用程序时,PDB文件将与可执行文件一起复制。 This link可能有帮助。

答案 2 :(得分:1)

您可以创建一个额外的表格。等价于二进制表的东西,将字符串(如名称或文件表中的键,如果你想要那么远)映射到pdb文件。它们不会安装,但它们将位于用户系统上缓存的MSI文件中。然后,如果以后需要pdb文件,可以从缓存的数据库中提取它。