I have an Advanced Installer project (latest version, 14.5.2) that installs a service and a shell extension (among other things). I've noticed that upgrades can be quite slow, and in looking at the MSI log, I found that there are two InstallValidate stages, each having a pause, where the service executable and a helper dll are found to be in use by the service, and the old version of the shell extension is in use by explorer:
...MSI (s) (3C:20) [09:28:00:441]: Note: 1: 2727 2:
Info 1603. The file C:\Program Files\Box\Box\Box.Desktop.UpdateService.exe is being held in use by the following process: Name: Box.Desktop.UpdateService, Id: 5496, Window Title: '(not determined yet)'. Close that application and retry.
Info 1603. The file C:\Program Files\Box\Box\MetricsCollector.dll is being held in use by the following process: Name: Box.Desktop.UpdateService, Id: 5496, Window Title: '(not determined yet)'. Close that application and retry.
MSI (s) (3C:20) [09:28:05:597]: 1 application(s) had been reported to have files in use.
MSI (c) (A4:60) [09:28:05:597]: File In Use: -Box.Desktop.UpdateService- Window could not be found. Process ID: 5496
MSI (c) (A4:60) [09:28:05:597]: No window with title could be found for FilesInUse
MSI (s) (3C:20) [09:28:05:597]: Note: 1: 2727 2:
Action ended 9:28:05: InstallValidate. Return value 1.
On a clean system where this log was taken, these pauses are ~5 seconds, but on other systems the pauses are longer (~40 seconds).MSI (s) (3C:B4) [09:28:10:863]: Note: 1: 2727 2:
Info 1603. The file C:\Program Files\Box\Box\BoxShellExt-1.0.5.dll is being held in use by the following process: Name: explorer, Id: 6752, Window Title: '(not determined yet)'. Close that application and retry.
MSI (s) (3C:B4) [09:28:15:035]: Note: 1: 2727 2:
Action ended 9:28:15: InstallValidate. Return value 1.
Later in the upgrade, during the InstallExecute stage, the service is successfully stopped and updated, and the new version of the shell extension with a different file name (BoxShellExt-1.0.6.dll) is successfully installed.
Are these pauses expected? Do I need to stop the service separately prior to the InstallValidate stage? And how do I prevent the installer from pausing when seeing if the shell extension is in use? (I am ok with marking it for delete on reboot).
Thanks!