Believe it or not, there is a saying oft repeated in the hallways at Microsoft: "Reboots are evil". The current design in Windows Installer is to request a reboot only when under no reasonable scenario can the reboot be avoided (such as an upgrade of a running program when the program won't "die" during the upgrade).
If a running program is holding a file in use, Windows Installer will move/rename that file and mark it for removal upon the next reboot (the move is into a hidden directory). If the move happens as a result of a removal attempt, the file is considered to be "safe" for the program to continue to use until it is shutdown by the user at their convenience (it is up to each program to fail gracefully if some other file they didn't hold open is suddenly missing or who's version/content suddenly changes). If, on the other hand, the developer of the program knows that the program can't safely continue to use the file(s), it is up to the developer to stop the running instances of the program(s) or force a reboot, since Windows Installer cannot possibly know who is good at defensive programming and who is not (even when the program comes from the Windows team). -----Original Message----- From: i...@roadrunner.com [mailto:i...@roadrunner.com] Sent: Wednesday, July 14, 2010 12:16 PM To: General discussion for Windows Installer XML toolset. Cc: Blair Subject: Re: [WiX-users] Restart Manager (reboot after uninstall) OK, so basically you are saying that the restart prompt is only supposed to appear during an upgrade when a file is being replaced. In my case I'm always using a major upgrade, so the old version is uninstalled first, then the new one is installed. No file is directly "overwritten". It is a bit weird that the system doesn't handle uninstalls or major upgrades, but I can live with that. I don't have a problem if I'm getting the intended behavior. My only concern is that I'm somehow breaking a feature I'm supposed to get out of the box. ---- Blair <os...@live.com> wrote: > In scenario #1, Windows Installer will not by default [prompt for] reboot. > In scenario #2, there are two possibilities: > 2.1 - RemoveExistingProducts is scheduled early and this is a major upgrade: > Removal of the old file occurs before writing of the new file: no [prompt > for] reboot (same as scenario #1). > 2.2 - all other cases (RemoveExistingProducts scheduled late or non-major > upgrade): File is overwritten (assuming that the component rules were > followed) and a prompt for reboot occurs. > > For any other possibility you have to detect the situation yourself and ask > for the reboot prompt. The simplest way is to always ask for reboot except > for clean initial installation, or ask for reboot always (I assume that the > shell has to be restarted no matter what to start using a new shell > extension). The next simplest is to change your MsiRMFilesInUse dialog such > that the ignore button is either disabled, hidden or removed (thus the user > has no choice but to use the restart manager), although that won't help with > basic or silent installations. The third option is to add an embedded UI > (assuming your minimum MSI version is 4.5) or ensure that your transactions > are always under the control of a bootstrapper (hard to do, under the best > circumstances) and capture the MsiRMFilesInUse call to always return a code > for using the restart manager without ever showing the option to the user. > Next harder is to duplicate the files-in-use logic yourself and set a > property. > > There may be some property that gets set when a file-in-use is detected, but > I have never seen it. > > -----Original Message----- > From: Ivo Beltchev [mailto:i...@roadrunner.com] > Sent: Wednesday, July 14, 2010 9:27 AM > To: General discussion for Windows Installer XML toolset. > Subject: Re: [WiX-users] Restart Manager (reboot after uninstall) > > This is a shell extension and the DLL is used by the Explorer process. > There are two scenarios: > 1) Uninstall - no file is actually "replaced", simply deleted. > 2) Upgrade - the DLL is replaced by a new version. > > The Restart Manager correctly identifies that the DLL is in use by > Explorer and offers to close it. > If I choose to close it, everything works fine - The Explorer is closed, > then restarted at the end of the install process. > If I choose not to close it at this time I expect a prompt to reboot the > machine at the end. I don't get one. So the old version of the DLL is > still loaded by Explorer, preventing the new version from showing up. > > The thing gets a bit more complicated because the shell extension gets > loaded in other processes that use the shell (pretty much every app that > has a FileOpen box). That's why I want to rely on the Restart Manager to > do its thing instead of trying to make a custom solution specifically > for Explorer.exe. > > > Blair wrote: > > If you didn't replace one of the files that were discovered to be in use, > > then no, you won't get an automatic reboot prompt. Which file did you > > replace when you uninstalled your application? > > > > -----Original Message----- > > From: Ivo Beltchev [mailto:i...@roadrunner.com] > > Sent: Wednesday, July 14, 2010 9:04 AM > > To: General discussion for Windows Installer XML toolset. > > Subject: Re: [WiX-users] Restart Manager (reboot after uninstall) > > > > But I don't want to restart unconditionally. Only when the user chooses > > to stop the Restart Manager from closing the offending applications. Is > > there a way to detect that? > > > > I'm reading the documentation for the REBOOT property here: > > http://msdn.microsoft.com/en-us/library/aa371101(VS.85).aspx > > It says "For example, the installer automatically prompts for a restart > > if it needs to replace any files in use during the installation." So I'm > > thinking that I should get a reboot prompt at the end of the uninstall > > or upgrade. But there isn't one. Am I reading the documentation correctly? > > > > Blair wrote: > > > >> If you have code that causes the application(s) detected to shutdown > >> (including using the built-in actions to stop services you install) the > >> restart manager-related detection code doesn't always acknowledge that. > As > >> > > a > > > >> result the user is often told of a need for reboots that ultimately are > >> never required. > >> > >> If files-in-use are not replaced (just moved/marked for removal on next > >> reboot) then Windows Installer doesn't ask for a reboot unless a > >> reboot-related action or property are set indicating otherwise. In > >> uninstallations, that is often the case. > >> > >> You could try setting REBOOT=Force when you detect that you will be > >> uninstalling. That should cause a reboot prompt. > >> > >> The reason for reboot instead of logoff is that the system that removes > >> marked files system boot during isn't activated during logoff or logon, > so > >> the marked files are never actually removed until an actual reboot. > >> > >> -----Original Message----- > >> From: Ivo Beltchev [mailto:i...@roadrunner.com] > >> Sent: Tuesday, July 13, 2010 8:55 PM > >> To: General discussion for Windows Installer XML toolset. > >> Subject: [WiX-users] Restart Manager (reboot after uninstall) > >> > >> Hi > >> > >> I have an uninstaller that uses the Restart Manager. When it detects > >> that files are in use it shows one of two messages: > >> > >> 1) When uninstalling in quiet mode, there is a popup saying "...... a > >> reboot will be required to complete the setup" > >> > >> 2) When uninstalling in UI mode, there is a list of processes with 2 > >> options: A) restart applications, B) Do not close applications. A reboot > >> will be required. > >> > >> I am expecting that after the uninstaller is finished there will be a > >> prompt to restart the computer, but I don't get one. > >> > >> Reading about MsiRMFilesInUse here: > >> http://wix.sourceforge.net/manual-wix3/WixUI_dialogs.htm, I see "It > >> allows the user to attempt to automatically close applications or ignore > >> the prompt and result in the setup requiring a reboot after it > >> completes." What does "result in requiring a reboot" mean? That the > >> setup will ask the user to reboot, or that the user must remember to > >> reboot manually? > >> > >> If there is no reboot prompt built in, how do I make one (basically how > >> do I detect if the user has chosen not to close the applications)? And > >> even better, if I can customize the prompt to do a log off instead of > >> reboot. > >> > >> > >> Thanks > >> Ivo > >> > >> > >> > >> > >> > > > ---------------------------------------------------------------------------- > > > >> -- > >> This SF.net email is sponsored by Sprint > >> What will you do first with EVO, the first 4G phone? > >> Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first > >> _______________________________________________ > >> WiX-users mailing list > >> WiX-users@lists.sourceforge.net > >> https://lists.sourceforge.net/lists/listinfo/wix-users > >> > >> > >> > >> > > > ---------------------------------------------------------------------------- > > -- > > > >> This SF.net email is sponsored by Sprint > >> What will you do first with EVO, the first 4G phone? > >> Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first > >> _______________________________________________ > >> WiX-users mailing list > >> WiX-users@lists.sourceforge.net > >> https://lists.sourceforge.net/lists/listinfo/wix-users > >> > >> > >> > > > > > ---------------------------------------------------------------------------- > > -- > > This SF.net email is sponsored by Sprint > > What will you do first with EVO, the first 4G phone? > > Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first > > _______________________________________________ > > WiX-users mailing list > > WiX-users@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/wix-users > > > > > > > ---------------------------------------------------------------------------- > -- > > This SF.net email is sponsored by Sprint > > What will you do first with EVO, the first 4G phone? > > Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first > > _______________________________________________ > > WiX-users mailing list > > WiX-users@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/wix-users > > > > > > ---------------------------------------------------------------------------- > -- > This SF.net email is sponsored by Sprint > What will you do first with EVO, the first 4G phone? > Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first > _______________________________________________ > WiX-users mailing list > WiX-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wix-users > > > ------------------------------------------------------------------------------ > This SF.net email is sponsored by Sprint > What will you do first with EVO, the first 4G phone? > Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first > _______________________________________________ > WiX-users mailing list > WiX-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wix-users ------------------------------------------------------------------------------ This SF.net email is sponsored by Sprint What will you do first with EVO, the first 4G phone? Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users