Asked By Nick Hall
02-Feb-10 06:09 AM

Our application installs a Microsoft Exchange agent (Exchange 2007, Windows
Server 2008) using a Wix-authored MSI. The dll gets loaded by the Exchange
Transport Service. I have 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.
Is there any way, using a custom action or via another method that I can
somehow let Restart Manager know the dlls held by EdgeTransport should not
prevent uninstall (as the process will be terminated when its parent service
shuts down)?
Thanks,
Nick Hall