我在做什么
我有一个ASP.Net Web应用程序和一个WiX设置项目,它们都在Visual Studio 2010中。我可以使用以下HEAT命令显式地收集Web应用程序,并将其设置为设置项目的预构建事件:
“%WIX%\bin\heat.exe” project "$(SolutionDir)Application.WebUI\Application.WebUI.vbproj" -o "$(ProjectDir)ProjectOutputContent.wxs" -pog Content -ag -template fragment -nologo -directoryid RUNTIMEFOLDER
“%WIX%\bin\heat.exe” project "$(SolutionDir)Application.WebUI\Application.WebUI.vbproj" -o "$(ProjectDir)ProjectOutputBinariesAndSymbols.wxs" -pog Binaries -pog Symbols -ag -template fragment -nologo -directoryid BINFOLDER
请注意,RUNTIME文件夹和BINFOLDER是我在主产品WXS文件中声明设置的目录。
为什么我不喜欢它
这种方法很烦人,因为我需要在构建设置项目之前检出HEAT生成的片段WXS文件。另一个考虑因素是它是一个Web应用程序,我需要将二进制文件和符号放入与内容不同的目录(bin)中。
我的目标
我更愿意在Wix设置项目中使用项目引用,并将Harvest属性设置为True。然后,我可以收集BinariesContentSatellites以获取我在片段中需要的项目,然后设置一个单独的目录ID,我可以在主产品WXS中引用它。问题是这将把内容、二进制文件和符号放在同一个文件夹中,而我需要后两个在嵌套的bin文件夹中。我不能两次添加此项目引用,每次使用不同的收集选项。
我的问题
有没有办法做到我想要的,还是我需要继续使用预构建事件?另外,我考虑过手动收集片段一次,而不使用构建事件,然后根据需要重新收集。我更愿意避免这种方法。