We have a very complicated process to deploy our product. We use a combination of msi and powershell and manual configuration. Talk about work of art, this belongs in MoMA
Seriously, because the software/product relies on so many technologies, SQL Server/IIS/SSIS/MongoDB, the deployment is very involved but credit to the developers, they are moving towards a simpler version that is more scripted. But it is taking a while.
This is ok but the deployment tends to be more "black box" and when things go wrong it needs more than one person to deal with it. So we have the issue of confidence in the deployment.
We also suffer from a 2 week deployment cycle which means we have very little time to test before a live release. We don't even have a environment that mirrors live..shocking I know
All these things make for quite an anxious time. But amazingly we continue to release.
I am all for a scripted approach or at least an automated process that removes decisions from the deployment engineer but can we really get there when there are many technologies and are we widening the knowledge gap between the creators of the software and those that are supposed to support it (I know this will vary company to company, but in my company we tend to keep developers away from Customer Support