A little while ago I was having some problems when uninstalling our
application.  I managed to get round this by defining the
MSIRESTARTMANAGERCONTROL property as "disable" to revert back to the
FilesInUse dialog.  This works perfectly fine in Server 2008.  However I have
encountered an issue when uninstalling under Server 2008 R2.

If our application is open while uninstalling, the FilesInUse dialog will
appear.  On Server 2008, if I press the retry button the behaviour is correct
(i.e. if the application is still open the dialog will be displayed once
again; if it has been closed then the uninstall continues.)  Under Server
2008 R2, pressing Retry proceeds with the uninstall whether or not the
application has been closed.

One of the obvious differences is that Server 2008 uses Windows Installer 4.5
and Server 2008 R2 uses Windows Installer 5.0.  Whether this is making the
difference or whether it is some difference at the OS level I cannot say.

In light of this I decided to have another look at the Restart Manager
behaviour.  It seems to me that if I could somehow register the fact that
EdgeTransport.exe is a dependency of a service I could eliminate the reboot
warning.  I've been experimenting with a custom action that registers the
path to the EdgeTransport executable using the Restart Manager API (using
RmJoinSession, RmRegisterResources and RmEndSession).  As far as I can tell,
the calls register correctly but has no effect (I still get the reboot
warning).

So to summarize:

The Restart Manager method seems to erroneously warn of a reboot.
The FilesInUse method works correctly on Server 2008 but not on Server 2008
R2 in a Retry scenario.

I'm presuming that this is Windows Installer behaviour rather than Wix
behaviour but hopefully someone might have some insights into this.

Thanks in advance,

Nick Hall

-----Original Message-----
From: Nick Hall 
Sent: 26 June 2009 18:44
To: 'wix-users@lists.sourceforge.net'
Subject: Uninstall and the Restart Manager

Our application installs a Microsoft Exchange agent (Exchange 2007, Windows
Server 2008).  The dll gets loaded by the Exchange Transport Service.  I've
added a ServiceControl element to stop and start the service which seems to
work OK.  The problem is that when the application is being uninstalled I get
a dialog telling me that a reboot will be required.  If I OK this, the
uninstall functions correctly without the reboot (as by the time the files
are uninstalled the service has been stopped).

I believe that the problem is due to the way that the Exchange service is
implemented.  The service executable is called MSExchangeTransport.exe which
then uses a process called EdgeTransport.exe to host our dll.  Because the
dll is not being hosted directly by the service, Restart Manager is not
correctly recognizing that there is not a problem.

This is the contents of the uninstall log pertaining to the reboot request: -

MSI (s) (78:0C) [18:28:22:904]: RESTART MANAGER: Did detect that a critical
application holds file[s] in use, so a reboot will be necessary.
MSI (s) (78:0C) [18:28:22:904]: Note: 1: 1610 
MSI (s) (78:0C) [18:29:08:864]: RESTART MANAGER: The user chose to go on with
the installation, although a reboot will be required.

How can I handle this situation?

Thanks,

Nick Hall
------------------------------------------------------------------------------
Return on Information:
Google Enterprise Search pays you back
Get the facts.
http://p.sf.net/sfu/google-dev2dev
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to