Archive: Intercepting/Replacing Reboot action from "Finish" page


Intercepting/Replacing Reboot action from "Finish" page
I have an NSIS installer that is invoked by a Vendor .DLL called from an OEMSETUP.INF PnP installer.

The PnP wizard waits for the NSIS program to complete and if the NSIS installer requires a reboot and the user selects to do so then the PnP wizard doesn't get to complete and concludes there was an error, which it reports to the user.

If I could intercept the reboot action (presuming that it was selected on the "Finish" page by the user) and replace it with another action (thinking of running a separate .EXE in another thread which will do the reboot shortly after the NSIS installer closes) then the PnP Wizard would be happy (because it would have regained control after the NSIS installer finishes and before the reboot occurs) and the reboot would still occur.

Only way I've thought of doing it ATM is to force SetRebootFlag=FALSE while noting it was TRUE in a user variable and then tailor the none rebooting "Finish" page so that it looks like a Rebooting page to the user but the options are processed by my script (in a leave function for the finish page) so it can launch the separate rebooting .EXE - but if there's a way to catch the normal NSIS reboot action and redirect it that might be easier.

Hope I've managed to explain that reasonably clearly!

Thanks in advance for any suggestions.

Tim


If you have access to the script, SetRebootFlag would be the simplest method. If you don't, you can deny the reboot by handling WM_QUERYENDSESSION. In this case, the script will execute .onRebootFailed and exit cleanly.


Thanks kichik, I have the script so I'll use SetRebootFlag.

Tim