Проблема с ClickOnce заключается в том, что когда что-то идет не так, предыдущие версии не хранятся рядом.Если новая версия содержит ошибки, ваше приложение перестает работать, пока вы не выпустите другую версию, которую затем необходимо загрузить.
Вместо этого я рекомендую вам создать свой собственный загрузчик.Небольшая программа, которая запускается и автоматически связывается с вашим сервером для проверки и загрузки любой новой версии.Не отличается от процесса ClickOnce, за исключением того, что ваши последние версии будут храниться рядом.Таким образом, ваш сервер может вернуть значение, указывающее, какую версию запустить, и поэтому все клиенты могут быть очень быстро возвращены к последней версии, не загружая ее снова.
Поскольку это ваш собственный загрузчик, вы также можете расширить его.,Добавьте возможность сказать приложению, чтобы оно отказывалось запускаться, пока сервер не сообщит об этом.Вы можете сделать это для каждой установки или глобально для всех клиентов.(Удобно, если ваш клиент не оплачивает счет!)