<p>I have several .NET <a href="http://en.wikipedia.org/wiki/Windows_Forms" rel="nofollow noreferrer">Windows Forms</a> applications that I'm preparing to convert into a <a href="http://en.wikipedia.org/wiki/ClickOnce" rel="nofollow noreferrer">ClickOnce</a>/smart-client deployment scenario. I've read the isn't-this-great tutorials, but are there pitfalls or "gotchas" that I should be aware of?</p>

<p>There are several minor applications used off and on, but the main application is in C#, runs 24/7, is quite large, but only changes every few weeks. It also writes to a log file locallly and talks to local hardware devices.</p>

Here are a few that I am aware of.
Can't put an icon on the desktop.
You can now.
I can't install for all users.
I need to jump through hoops to move the deployment to a different server. It is not a problem if you are developing internally, and the users can see the server that you are publishing to or if you are deploying to the public web, but it is not great if you need to roll out to multiple customer sites independently.
Since
.NET
3.5 SP1 you do not need to sign the deployment manifest anymore which makes it much easier to move deployments to new servers.
I can't install assemblies in the
GAC
. You can get around this by creating regular install packages that are pre-requisites of the ClickOnce application.