Currently I have to uninstall the old version of my service before I install the new version. I am pretty sure this has something to do with it not being smart enough to update or remove the old service entries before adding the new ones.
Is there a way to have the installer skip registering the service if it already exists? (I can assume the installation folder and service name do not change between versions.)
Also, is there a way to automatically stop the service when uninstalling?
I am using MSI packages and the Visual Studio setup project.
I've done this with WiX, which generates .MSI files using the ServiceInstall & SeviceControl commands:
<Component Id='c_WSService' Guid='*'>
<File Id='f_WSService' Name='WSService.exe' Vital='yes' Source='..\wssvr\release\wsservice.exe' KeyPath="yes" />
<ServiceInstall Id='WSService.exe' Name='WSService' DisplayName='[product name]' Type='ownProcess'
Interactive='no' Start='auto' Vital='yes' ErrorControl='normal'
Description='Provides local and remote access to [product name] search facilities.' />
<ServiceControl Id='WSService.exe' Name='WSService' Start='install' Stop='both' Remove='uninstall' Wait='yes' />
</Component>
This stops the service, installs the new version and re-starts the service.