我在做什么
我在 Visual Studio 2010 中有一个 ASP.Net Web 应用程序和一个 WiX 设置项目。我可以使用以下 HEAT 命令集显式收集 Web 应用程序作为设置项目的预构建事件:
“%WIX%\bin\heat.exe” 项目 "$(SolutionDir)Application.WebUI\Application.WebUI.vbproj" -o "$(ProjectDir)ProjectOutputContent.wxs" -pog 内容 -ag -template fragment -nologo -directoryid运行时文件夹
“%WIX%\bin\heat.exe” 项目 "$(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 以在我的片段中获取我需要的项目,然后设置一个我可以在主要产品 WXS 中引用的目录 ID。问题是这会将内容、二进制文件和符号放在同一个文件夹中,我需要将后两者放在嵌套的 bin 文件夹中。我不能两次添加这个项目参考,每次都有不同的收获选项。
我的问题
有没有办法做我所追求的,或者我需要保持预构建事件?顺便说一句,我考虑过手动收集一次片段,没有构建事件,然后根据需要重新收集。我宁愿避免这种方法。