The topic of automating Heat has come up several times on the Users list.  I
haven't seen anyone post an implementation.  At work I'm about to write such
an extension but /only/ concerning harvesting specific COM visible DLLs. 
I'm reading about Wix Extensions and brushing up on the Component Rules. 
Our goal is that when COM-registration-information changes for any
assemblies, we won't have to change anything by hand.  We have a plan,
further below if you're interested, but really I just had some questions for
the community.

*Questions for the community:*

- Has this already been done?
- Are there any special considerations I should know about beyond keeping
Id's, guids, and certain xml attributes the same from build to build?  We're
doing this all by hand right now, and it seems to work.  I'd just be
automating the process.
- Does this sound generic enough to be useful to the community?  For details
see our plan is below.  Let me know if you have any better ideas or tips for
keeping it generic/extensible.

Wisdom and input are welcomed.  Thanks :)

*Our plan:*

We'll write an extension that reads the product's Wix code, selectively runs
heat, "doctors up" the output, and adds references to import the
Heat-fragments at build time (the product's Wix code is not modified on
disk).  Here's more detail if that didn't make sense:

1. The product's Wix code would have a component and file element for each
COM visible DLL, except we would embellish them to mark for COM
registration.
2. The extension would run heat on the DLL if it has changed from the last
run (we'd preserve heat output and compare date stamps).
3. From the component and file elements, the extension would get component
Id, component guid, a properly parameterized source path, and other file
attributes which would then be be filled-in inside the fragment that Heat
produced.
4. The original component/file element would be removed and a reference to
the fragment file added.  This is only during the build process, not a
change in the product's actual WXS file.  I think we would also need to add,
as a file link, the Heat-produced-fragment to the visual studio project.
5. I think that should do it.  Each time the project is compiled, any COM
registration changes will be detected and Heat will be re-run as
appropriate. We should also try to clean up old, no-longer-referenced Heat
fragments.

- John Burak

--
View this message in context: 
http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/I-m-automating-heat-could-use-some-input-tp7548043.html
Sent from the wix-users mailing list archive at Nabble.com.

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to