Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How does one stop a Windows service to do an upgrade install?

I have developed a Windows service along with a setup project using Visual Studio 2008. When I do an upgrade install I get the following warning:

The following applications are using files which the installer must update. You can either close the applications and click "Try Again", or click "Continue" so that the installer continues the installation, and replaces these files when your system restarts.

I would like to stop the Windows service during the upgrade install. I have tried creating a custom action and overriding the OnBeforeInstall methoc, however this gets called too late after the warning pop-up message has already occurred.

Is there any way to accomplish this as part of the msi installer. I would prefer to not have to do this as a separate task prior to executing the msi installer.

Update:
Based on further research I have found that the MSI database does support this, however the built-in Visual Studio installer (setup) projects do not provide a means to do this. One must either tweak the MSI database, or go with WiX or a commercial installer.

like image 667
Elan Avatar asked Jan 23 '23 04:01

Elan


2 Answers

If you want to go down the route of editing the MSI ServiceControl table, this following VBS script worked for me:

Dim installer, database, view, result
Set installer = CreateObject("WindowsInstaller.Installer")
Set database = installer.OpenDatabase ("Installer.msi", 1)
Set view = database.OpenView("INSERT INTO ServiceControl (ServiceControl,Name,Event,Arguments,Wait,Component_) VALUES ('ServiceName','ServiceName',170,null,null,'C__751A71A3822A287367770DB29839A759')") 
view.Execute
database.Commit
Set database = nothing
like image 101
Raziq York Avatar answered Jan 25 '23 16:01

Raziq York


Look at: Upgrade a Windows Service without Uninstalling

like image 28
Romhein Avatar answered Jan 25 '23 18:01

Romhein