We had a very similar scenario in our company, and we created the installation package using WIX . The configuration conversion occurs during installation, so now we create a single assembly, and then deploy it to each server through the MSI installation package. WIX is very flexible, but also has a steep learning curve. We modify our configs using our own action, but this can be done in other ways.
We use Team Foundation Server and MSBuild to complete our builds. This is quite straightforward, but I put some work into it to properly configure as many projects and solutions as we had.
Other options that we reviewed, and even tried:
- InstallShield is not flexible enough.
- Writing your own C # Install - WIX already thought about everything we tried to do so, why reinvent the wheel?
- I just say that all this is necessary and we set things up manually - 2 or 3 months of development on WIX and MSBuild easily paid for the hours that we spent last year on doing things manually.
I think the deployment tools built into Visual Studio were designed for a single application with multiple deployments. It looks like you need external tools as well as development efforts to speed up the deployment and eliminate the need to do everything manually. That's why we invested in the above solution, and it really paid off.
source share