Зачем вам нужно аннулировать манифест при каждом развертывании? Является ли CloudFront чем-то вроде CDN, где вам нужно указать пограничным серверам, чтобы они извлекали новую версию из источника при ее изменении?
Приложение ClickOnce всегда загружает файлы из того же места, что и манифест развертывания. И если я прав, а CF - это что-то вроде CDN, то проблема не в файлах, а в самом развертывании.
Кроме того, URL-адрес, который ClickOnce использует для установки и обновления, является частью идентификатора развертывания и не может быть изменен произвольно. В большинстве случаев ваши пользователи должны будут удалить и переустановить, чтобы получить доступ к развертыванию с другого URL.
С другой стороны, вы можете избежать всей этой проблемы и размещать свое развертывание в хранилище больших двоичных объектов Azure за копейки в месяц (http://robindotnet.wordpress.com/2011/07/18/host-your-clickonce-deployment-in-azure-for-pennies-per-month/) вместо этого ... Вы могли бы даже использовать Azure CDN, чтобы обеспечить максимальную производительность для ваших клиентов. Azure, я думаю, вы можете установить Time-To-Live на 0 в манифесте развертывания, чтобы он проверял каждый раз, когда к нему обращаются за обновлением.