Monday, June 22, 2009

Pioneer Trek

This past week I participated in a church activity known as a Pioneer Trek. It is where we gather the youth, dress in pioneer clothes, and pull handcarts on the Wyoming prairie. It gives our youth (and those adults who go along) a chance to get in touch with the early members of our church and some of the things they went through.

It was great! I had a lot of fun.

Here is a picture of me with my Pioneer gear on complete with a mid-nineteenth century beard (yes, it is real and yes it is natural).



We take the youth and divide them into families. Each family has a Ma and a Pa and 6-7 children. My wife and I were a Ma and Pa (I was a Pa...).



The family was issued a handcart and we pulled it on trails with our belongings in it. Our job was to help the kids get the most out of the whole experience and make sure they were where they needed to be.



My wife and I enjoy working with the youth. I don't know if it makes me feel young or they are just a ton of fun. Once again, I was impressed at just how amazing these kids are. I realize they were on their best behavior, but they were all helpful and happy. Everyone pitched in to get things done and I think we all had a good time.

Thursday, June 11, 2009

InstallShield and MsiGetProperty

For a long time I have had a problem with MsiGetProperty in that sometimes it would work and sometimes it wouldn't. I posted about it on the InstallShield forums and got this great piece of information:

MSI properties set during the pre-file transfer events (OnBegin, OnFirstUIBefore, etc.) or set during immediate custom actions will lose their values in post-file transfer events (OnFirstUIAfter, OnEnd, etc.). This is an unintended side-effect due to how InstallScript MSI projects are implemented.

The basic reason for this is the InstallScript engine acts as an external UI handler for the MSI package being installed. In order to interact with Windows Installer, the InstallScript engine opens an installation session through the MsiOpenPackage API. All properties set during pre-file transfer events are backed by this installer session. Just before file-transfer is started, this installer session needs to be closed, otherwise, Windows Installer would be unable to read the MSI package and the install would fail. A consequence of closing the session is any properties set during that session are essentially lost. Properties that are Directory table entries, such as INSTALLDIR, are reinitialized after file-transfer by running the Windows Installer costing actions.

If you need to maintain property values between pre and post file transfer events in InstallScript, global variables should be used in addition to or instead of MSI properties. Properties set during custom actions in the execute sequence would need to be written to a file or registry entries on the machine as there is no way to pass global variables from InstallScript custom actions to InstallScript events.
__________________
Josh Stechnij - Software Engineer - Acresso Software: InstallShield Team