I have a simple C#.net application that I have created a setup project for.The application is a single exe and uses an app.config fil.

My question is, how do I go about upgrading the application whenever I make any updates to my code?

Within the setup project, I see I can set the installer to automatically remove the old version, but I don't really want to do that since it may overlay my custom settings in my app.config.

I really want to be able to create a setup project that will simply update the binary content of my application and keep my app.config settings. I also don't want to have do uninstall first.

I guess I'm looking for something similar to install shield's 'upgrade' option.

I've been playing with several settings and have more than confused myself...How can I accomplish this?

I performed the following, but still no success:

VS recommended I change the Product id/GUID whenever I increased the version (from my setup project). When I changed the version and guiid, it did add another entry to the add/remove programs.

I tried simply changing the assembly version on my exe, then rebuilding the setup package without modifying the version and guid within the setup project and when I went to do an install I got the "setup detected a previous version of this product....you must first uninstall..." message.

Solution 2

1) For each project in your solution that is part of the setup project, increment the assembly version.
2) Increment the setup project's version
3) This will prompt you to change some guids. Say yes
4) Make sure RemovePreviousVersions is true, and keep in mind that Visual Studio 2008's update mechanism requires you to increase file versions for files that you want to update.
5) Build setup project.