There are a lot of questions already about this, so I will refer you to those.
One thing you want to make sure to prevent the need for uninstallation, is that you use the same upgrade code on every release, but change the product code. These values are located in the Installshield project properties.
Some references:
- Auto update .NET applications
- Auto-update library for .NET?
- Auto update for WinForms application
- Suggest a method for auto-updating my C# program
- Automatic update a Windows application