Deploying .NET applications is very easy compared to the old days. Now xcopy deployment is possible. However, a simple xcopy deployment is limited. It doesn't account for layered application deployment, configuration settings, fine-tuning, and so on. Integrating application layers in a distributed framework with a custom configuration requires a professional, customizable deployment tool. Microsoft Windows Installer (MSI) based deployment does all this and more. However, making it work requires some effort. Fortunately, Visual Studio .NET's Setup and Deployment Projects make it pretty straightforward.
A good article digging deep into installing an application as well as installing a database.