"So I was not satisfied with all of the options for auto-deploying .NET apps in version 1.1, and rather than waiting for ClickOnce, which only works in v2.0 anyway, I sat down and designed and developed a simple and effective solution. Launcher is a VB.NET project called you can copy to a new dev directory and modify for each application you want to auto-deploy. Change four variables, rebuild, create a deployment project for Launcher and distribute it.
When your user runs Launcher, everything happens automatically. Launcher prompts the user for downloading a newer version if one is available, downloads, unzips, and runs the app. If offline, Launcher simply runs the current version. The logic here is easy to modify to suit your needs. The zip file is downloaded in chunks using the asynchronous model, and unzipped asynchronously as well.
Note that this application works well with small projects but not so well with large projects. Because a new zip file is downloaded whenever there are any changes, if the zip file is too large your user may get impatient. Also, make sure that your application generates any settings files itself. That way, you don't run the risk of overwriting your settings whenever you update the application.
This is definitely something I should check out. I've been fighting with auto deployment for a while now. It pretty much sucks until you get to version 2.0 with ClickOnce. Then it sucks a little less.