So, for whatever reason, Windows Installer service doesn’t just install crap. Instead, it runs through all of the steps to an installation in some kind of imaginary sandbox thing and then it runs everything again on the live system.
Sure, all of this is probably well and good. You don’t want to be halfway to rearranging some filesystem only to decide that you need to roll back. If only it worked that way. When it does its practice install, it doesn’t actually write files or twiddle IIS or any of those fun sorts of things. Nope. It just pretends. Except for when it doesn’t.
Because if you want to schedule features or components for install, this needs to be decided in the practice stage. Also, if you want to set properties to be used in a later custom action, you need to do this here.
But then, explicitly, you cannot reference these properties in the second, live run. Why? Because it’s Microsoft?!
No, in order to get a reference, you need to dump them into a for-special place and then use a different, for-special mechanism for retrieving them.
It just doesn’t get much stupider.