Nick Hall
2010-02-02 11:09:01 UTC
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'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.
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
Server 2008) using a Wix-authored MSI. 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.
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