I have created an installer with a bootstrapper which check for .NET presence and some other prerequisites. There's also a UI which requires users to input some initial information like connection strings, etc. These information are stored in registry. The installer installs a Windows Service (a server path) and optionally also GUI application (a client part). The client is used to monitor all the servers and also to update them on demand by sending a new installer version. I'm able to deliver a new installer version over the network to any of the connected servers.
Now to the problem. I need to be able to run the new installer silently from within the service and somehow skip the whole bootstrapper and UI part. Just update product version in registry and overwrite files. Those initial information still apply. This sound like a patch but I can also be a major update. How would I go about this? How to design my installer in order to support this requirement? Currently, it has two features containing some assemblies and configuration files. There are also custom actions which install the service and start it. The client is installed based on which dropdown choice a user picks during installation.