One note about the 'RunOnce' registry key...
Be careful with its usage... It is a little known fact that if a Software INF install performs any actions... the RunOnce key is also run automatically (as a method for the INF file to start applications...).
It is also a little known fact that the RunOnce key only runs "each" item at a time before continuing to the next item.
This was causing an interesting problem for us in that we installed some system services DURING the installation using an INF file... However, in the OLD 1.1 ISWI engine, if it asked for reboot (after updating the MSI engine at the begining of Setup), the ISWI Setup.exe put its entry in the RunOnce section before the system restarted...
When the system restarted, the ISWI setup ran perfectly... But, when the INF file during the install needed to do it's job... the INF installer would hang because the MSI installer was still waiting to be completed!
Installshield fixed this in 1.5 (it still adds the run-time after reboot to RunOnce, but the setup completes asychronously with the rest of the MSI package, leaving RunOnce empty!)...