This is basically Assaf's answer with different emphasis.
Having been on both sides of deployments, there are two major items to ENSURE a good deployment.
- Few moving parts
This means, if you have an option of giving a few files and having the deployer put them in certain folders on the production environment, or you could pre-place the files in the folder structure, and have the deployer just copy it into the root. Or even easier, a batch file. Or an MSI. If they have to run SQL scripts, then clearly show where they are.
Basically, this step boils down to allowing the developer to create scripts and batch files, and automate as much as humanly (heh) possible. That way, the deployer (who does not know the app as well as you do) isn't expected to mind-read what they are supposed to do with the three files left over. (Duh, you're supposed to place them in folders A, B, D and ZZ)
- DEPLOYMENT GUIDE
That's all in caps because it trumps step one. I am talking about a VERY thorough guide.
It shouldn't say
"move the Map-related files into the Map-App-Data folder."
It should say
"*Move files x,y,z (located in folder X in your deployment package) to the Map-App-Data folder (located D:\AppName\Map-App-Data)*".
Go through the motions of even saying "Remote in to X server, then do y" because you might think it's clear which server the deployer should be on, but for multi-server setups, it's can get pretty sticky as to what should be done where. Given a document this thorough means that anyone can deploy, even someone who you haven't had the chance to train as to what is happening.
2.1 Rollback plan
Put the rollback plan right into the deployment guide. If a deployment goes wrong, and they occasionally will, you don't want to leave the server offline until the deployer is able to wake someone up who knows what's going on. It should be there right in front of them. Even if it seems obvious and simple to you, remember that you've just spent the last four weeks engrossed in this project, and this person has spent the last 20 minutes. They simply can't be exptected to know what you don't tell them.
2.2 Test the deployment guide
Go through the steps yourself. Or better yet, get a colleague who is NOT on the project to try deploying to UAT with your guide, and you sitting next to them. Anywhere they get it wrong, change the guide. Anywhere the deployment goes wrong (situations you've seen before) add a footnote in the guide that explains why this situation occurs, and how to fix it if possible. It is critically important that your deployment guide not have errors, because when you write the deployment guide, then you are essentially doing to the deployment (because you know how) AND you get the bonus of sleeping through it. But, it also means that any mistakes are on you.
Please add comments for anything I've missed, and I'll toss it in.