ForceReboot
Ah.. more questions from me.
So.. I've got a CA that's executing that requires a reboot upon successful completion. I am calling ForceReboot immediately after the CA is working just fine. Running the MSI does prompt the user for a reboot after the CA is executed.
When I select "No" (to restart later manually), the installation completes up to the finish dialog box.
I ran the MSI again to see how it would behave, this time it ran to completion without executing the CA (the CA checks for a condition and will only run if it is true). But because I had not restarted the computer, I expected the installation to actually realize that the previous installation had not completed fully (because the restarted was put off for laters) and complain about it.
If this is the natural behavor of MSIs, how would accomplish what I'm describing? And as a side note, is there a reference for what properties are affected by calling the standard actions? As well as what are the typical values for the builtin properties (e.g. REMOVE property can = "ALL", "Complete".. etc.)?
So.. I've got a CA that's executing that requires a reboot upon successful completion. I am calling ForceReboot immediately after the CA is working just fine. Running the MSI does prompt the user for a reboot after the CA is executed.
When I select "No" (to restart later manually), the installation completes up to the finish dialog box.
I ran the MSI again to see how it would behave, this time it ran to completion without executing the CA (the CA checks for a condition and will only run if it is true). But because I had not restarted the computer, I expected the installation to actually realize that the previous installation had not completed fully (because the restarted was put off for laters) and complain about it.
If this is the natural behavor of MSIs, how would accomplish what I'm describing? And as a side note, is there a reference for what properties are affected by calling the standard actions? As well as what are the typical values for the builtin properties (e.g. REMOVE property can = "ALL", "Complete".. etc.)?
0 Comments
[ + ] Show comments
Answers (8)
Please log in to answer
Posted by:
anonymous_9363
15 years ago
As usual, there are a limited set of circumstances which actually require a reboot. Most happen because the set-up author is too lazy to work out why his/her install doesn't work without one.
As for why your MSI doesn't complain, why would it? You haven't told it that it should check for a pending reboot. If you want that behaviour, you need to build it in. I'm racking my brains trying to remember which registry key/value is used by WI to indicate that an installation is in progress, the sort where, for example, a reboot is initiated after, say, an uninstall of a previous version...
As for why your MSI doesn't complain, why would it? You haven't told it that it should check for a pending reboot. If you want that behaviour, you need to build it in. I'm racking my brains trying to remember which registry key/value is used by WI to indicate that an installation is in progress, the sort where, for example, a reboot is initiated after, say, an uninstall of a previous version...
Posted by:
AngelD
15 years ago
Posted by:
jayteeo
15 years ago
Thank you for the direction. This is a MS component that is getting installed which requires a reboot. Another component which depends on will also be installed by the MSI. So, how do I force an error condition in the MSI, i.e. assign the "Deafault" registry value in the Inprogress key to a property, if that property is not null, "fail" the installation. Is this typically done with a Terminate Installation CA?
Posted by:
anonymous_9363
15 years ago
http://itninja.com/question/help-with-msi-1311
You could simplify things enormously by checking if the component was updated. Presumably, as a reboot is required, it's an EXE or DLL and will therefore have version information in, which can be tested. Use AppSearch for that and assign a suitably-named property with a value. If the required version isn't present, the property will be empty, which you will test with a LaunchCondition.
NOTE:
If you are using Wise, you'll find that the default templates (still) have the AppSearch action appearing AFTER the LaunchCondition action. Sub-optimal...
You could simplify things enormously by checking if the component was updated. Presumably, as a reboot is required, it's an EXE or DLL and will therefore have version information in, which can be tested. Use AppSearch for that and assign a suitably-named property with a value. If the required version isn't present, the property will be empty, which you will test with a LaunchCondition.
NOTE:
If you are using Wise, you'll find that the default templates (still) have the AppSearch action appearing AFTER the LaunchCondition action. Sub-optimal...
Posted by:
jayteeo
15 years ago
I'll try the component approach which raises two more questions:
1. I ran my MSI and click "No" to on the ForceReboot prompt then run the MSI again, I don't encounter an Installer Error 1500 rather the installation completets. Why isn't the Installer Error being thrown?
2. When an install resumes, does it run from the beginning of the Installation Sequence or does it determine where in the install sequence it stopped?
1. I ran my MSI and click "No" to on the ForceReboot prompt then run the MSI again, I don't encounter an Installer Error 1500 rather the installation completets. Why isn't the Installer Error being thrown?
2. When an install resumes, does it run from the beginning of the Installation Sequence or does it determine where in the install sequence it stopped?
Posted by:
aogilmor
15 years ago
I agree. Just a for instance...Adobe Acrobat Pro had some patches. If you installed adobe, then those patches, THEN rebooted, THEN had the user logon, and use Pro it self repaired and then would prompt for ANOTHER REBOOT. Which was really totally stupid, so I changed the package so that it updated with /fomus or some sh** like that, and it only needed one reboot. So you can engineer around reboots provided the app works correctly without it.
Posted by:
anonymous_9363
15 years ago
Why isn't the Installer Error being thrown?If the reboot is at the end of the installation sequence, as far as the WI engine is concerned, the install is complete and therefore won't write the 'InProgress' key.
When an install resumes, does it run from the beginning of the Installation Sequence or does it determine where in the install sequence it stopped?Installs will always run from the beginning, because the engine cannot know what might have happened between the instances being run. For example, an install could be halfway through, does a reboot and, before the MSI is re-executed, the user might delete the target folder. If the install got to a point after InstallFiles and then only ran from there, the files may not be re-installed (let's ignore self-healing/repair for now, shall we?) This is one reason why you'll see conditions like 'If Installed' on actions.
Rating comments in this legacy AppDeploy message board thread won't reorder them,
so that the conversation will remain readable.
so that the conversation will remain readable.