what is the best way to deploy a winforms app if you know you are going to be doing frequent releases
I recommend an NANT build script, using NSIS for your setup script. Both are freely available and allow you to have a one-click build process that is fully expandable.
Click Once is great if you know the customer base will always have access to an internet connection and they only ever need a single version installed. This is probably true for the majority of apps.
But if that is not the case then I recommend you ensure that people can install different versions of your application side-by-side. Do not place your assemblies in the GAC or have them share a common resource. This way the customer can have multiple versions installed and they all continue to work. Xcopy deployment would be even better but hard to achieve in practice for non-trivial apps.
In a corporate network I do the following:
- create a strong name key
- have all machines 'full trust' any assembly with that key - this can be automated with group policy.
- sign the app with the strong name key
- put the application on a network share and push shortcuts to the user’s desktops via a script or group policy.
Note: It's given that you've already pushed out the .NET framework. This also can be automated. If you've other resources that need to installed on the client the something like Click once is going to be needed.