Моя компания использует ClickOnce более трех лет, и у нас есть тысячи клиентов, устанавливающих несколько продуктов (как для настольных компьютеров, так и для Office), без особых проблем. У нас есть подписанный сертификат, потому что все наши клиенты являются внешними, и это гарантирует им, что установка происходит из надежного источника.
Кроме того, проблема с изменением сертификата подписи была исправлена в .NET 3.5 при использовании автоматических обновлений и настольного приложения (не для VSTO), и исправлена во всех случаях в .NET 4. И для этих случаев есть обходные пути где это все еще проблема.
Огромным преимуществом ClickOnce является возможность публиковать обновления и автоматически подбирать их пользователями, а также то, что обновления являются инкрементными. Это особенно важно, если ваше приложение обращается к базе данных, и вам необходимо убедиться, что пользователь обновляет приложение при развертывании изменений в вашей базе данных.
Если у вас есть приложение ClickOnce и у вас возникают ошибки при запуске, вам нужно попробовать запустить [exe] из кэша ClickOnce и определить, есть ли проблема в вашем приложении или при развертывании.
Я не уверен, что вы имеете в виду, когда скачиваете ClickOnce с сервера и сохраняете файлы локально. Если вы имеете в виду само развертывание, оно делает это. Если вы имеете в виду, может ли он загружать файлы из другого места и сохранять их локально, уверен, что может. Наше приложение использует WebClient для загрузки и скачивания файлов.
Обратите внимание, что приложение ClickOnce устанавливается не для всех пользователей, и вы не можете писать в Program Files. Если вы используете дополнительные файлы, вам нужно поместить их в LocalApplicationData. Наше приложение создает кэш в папке LAD и сохраняет там информацию, и это прекрасно работает для нас.