What am I doing
I have an ASP.Net web application and a WiX installation project in Visual Studio 2010. I can explicitly build a web application with the following set of HEAT commands as a pre-build event for the installation project:
"% 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
Keep in mind that the RUNTIME and BINFOLDER folders are directories that I declaratively install in my main WXS product file.
Why i don't like it
This approach is annoying because I need the HEX files of the generated WXS fragments to be extracted before I can create an installation project. Another consideration is that this is a web application, and I need to drop the binaries and characters to a different directory (bin) than the content.
What am I looking for
I would rather use the project link in the Wix installation project and just set the Harvest property to True. Then I could collect BinariesContentSatellites to get the elements I need in my fragment, and then set one directory identifier that I can reference in the main WXS product. The problem is that this will put the contents, binaries and characters in the same folder where I need the last two in the bin folder. I cannot add this project link twice, each with different crop options.
My question
Is there a way to do what I need or do I need to save the pre-build event? As an aside, I considered manually harvesting a fragment once, without a build event, and then re-harvesting if necessary. I would rather avoid this approach.
source share