title: Automated Deployment using CI server
body: <p>In our project, deployment is always a pain, mostly because of the mistakes done by the release management team. Either they screw up the configuration or get the wrong version installed somehow. We use teamcity as our CI server, and it produces the artifacts as zip files(dll's and exe) which is usually passed on to the release team. My question is, is there a way to automate the whole deployment process?</p>
  
  <p>Is there a commercial tool, which supports this?</p>
  
  <p>We will want to do the following:</p>
  
  <ul>
  <li><p>Update the config files with environment specific values.</p></li>
  <li><p>Install windows services to the server.</p></li>
  <li><p>Upload the UI(WPF) bundle to the centralized location(which is pulled down by another application, sort of a launcher).</p></li>
  <li><p>Change the DB connection strings.</p></li>
  </ul>
  
  <p>Do all the above for various environments(like int,uat and prod)</p>
  
  <p>DB deployment since is a separate beast as such, need not be covered in this.</p>
  
  <p>Any best practices, tools or solutions will be highly helpful.</p>
  
  <p>Thanks,
  -Mike</p>