UPDATE: Please note that very often unwanted reboot requirements can be caused by:
- Service installations that don't properly stop the existing service installation before trying to overwrite binaries with a higher version. Add service stop to the installation sequence to prevent this problem.
- The service overwrite problem and all other file-in-use problems that trigger reboot prompts can be compounded if you use unnecessary force overwrite of files using
REINSTALLMODE=amus
or similar. This will try to force-overwrite files of the same version - and this can increase the number of reboot prompts.
- You fail to implement measures in your application to take advantage of the RestartManager feature of Windows: Windows Installer-Avoid FileinUse dialog box when Installing a package. Essentially this feature allows applications to be closed and re-opened in a predictable way eliminating reboot needs.
ScheduleReboot, Standard Action: ScheduleReboot
is not a custom action, but a standard action. This means it is built in to Windows Installer itself, and not custom made by Installshield
or yourself or whoever built the setup. I do not like this ScheduleReboot action, because if you condition it incorrectly it can indeed trigger unwanted reboots as I explain here: Reboot on install, Don't reboot on uninstall (recommended read).
MSI SDK Documentation: The documentation for this standard action is here: ScheduleReboot Action
. As you will see the crucial section is this: "If the installer determines that a restart is necessary it automatically prompts the user to restart at the end of the installation, whether or not there are any ForceReboot or ScheduleReboot actions in the sequence. For example, the installer automatically prompts for a restart if it needs to replace any files that are in use during installation.
"
Conclusion: In other words you can safely remove the ScheduleReboot
standard action from your setup, but the setup can still reboot even without it. However, as I answered in another question of yours, you can set the REBOOT=ReallySuppress
flag on the command line to prevent all "normal reboot mechanisms" from rebooting your PC. The only other thing that I can think of that can then reboot the PC, would be custom actions designed to do so - by yourself generally (unless you are modifying someone else's package and there are unknown custom actions in there).
I think there are a few obscure cases where the OS might trigger a forced reboot, but I can't recall what the cases would be at this point. They should be unimportant for normal deployment - just be aware of the issue. And on that topic (I link to this because I want to say that I would not use any of the crazy methods mentioned here).
msiexec.exe: The command line to suppress normal reboot prompts:
msiexec.exe /i "setup.msi" /QN /L*V "msilog.log" REBOOT=ReallySuppress
Note that only the first letter of the REBOOT
. property is relevant, so you can also write REBOOT=R
.