Приложение ClickOnce пропускает запрос на обновление (или не запускается, если выбран параметр пропустить)
Я обновил свое приложение ClickOnce, а затем, когда пользователь запускает, его спрашивают, хотят ли они установить новую версию.
Я работаю в строго контролируемой среде. Когда доступно обновление, оно должно быть установлено (обратная совместимость с базой данных не гарантируется старыми версиями).
Другим вариантом является сбой прогона, если пропустить нажатие (это тоже работает нормально).
Мне нужен какой-то способ, чтобы не дать им запустить старую версию приложения.
5 ответов
Эта статья отвечает на ваш вопрос. Я указываю вам на статью вместо того, чтобы просто публиковать ответ, потому что все в статье стоит знать.
http://www.sayedhashimi.com/CategoryView,category,ClickOnce.aspx
Ниже приводится соответствующая выдержка из статьи:
Принудительное обновление ClickOnce
Одним из главных преимуществ ClickOnce является автоматическое обновление. Один из распространенных вопросов, которые я получаю в отношении обновлений: "Как я могу принудительно обновить обновление для пользователя?"
Есть три вещи, которые необходимо знать в отношении принудительного обновления пользователей:
1) Если ваше приложение является онлайн-приложением, ваши пользователи всегда будут запускать последнюю версию; онлайн-приложения загружаются при каждом доступе к приложению. Таким образом, с онлайн-приложениями вы получаете принудительные обновления по умолчанию.
2) Если ваше приложение является установленным приложением, вы можете принудительно установить обновления с помощью атрибута MinimumRequiredVersion. Если вы публикуете свое приложение с помощью Visual Studio, вы можете установить это свойство в диалоге обновлений.
3) Последнее, что следует отметить, это то, что если ваше приложение является установленным приложением (и вы не установили атрибут MinimumRequiredVersion), ClickOnce предложит пользователю только диалоговое окно "Доступно обновление", если пользователь запускает приложение из ярлыка "Пуск", То есть, если приложение является установленным приложением и пользователь запускает приложение с URL-адреса, ClickOnce принудительно производит обновление.
Я также нашел другую хорошую статью:
Это аккуратно сработало для меня. Добавьте следующее в файл проекта:
<UpdateRequired>true</UpdateRequired>
<MinimumRequiredVersion>$(ApplicationVersion)</MinimumRequiredVersion>
Обратите внимание, что ApplicationVersion
не может иметь значение как 1.0.0.*
в файле проекта, и он должен быть увеличен во время сборки для автоматического обновления для работы.
Если вы используете TeamCity, для увеличения номера версии перейдите на страницу конфигурации сборки для вашего проекта и установите следующее свойство системы:
system.ApplicationVersion = %build.number%
Вы также можете заставить MSBuild увеличивать версию со временем примерно так:
<UpdateRequired>true</UpdateRequired>
<BuildNumber>$([System.DateTime]::Now.ToString(yyyyMMdd))</BuildNumber>
<RevisionNumber>$([System.DateTime]::Now.ToString(mmss))</RevisionNumber>
<ApplicationVersion>1.0.$(BuildNumber).$(RevisionNumber)</ApplicationVersion>
<MinimumRequiredVersion>$(ApplicationVersion)</MinimumRequiredVersion>
Это сработало, сняв флажок. Приложение должно проверять наличие обновлений, и приложение начало обновляться, не запрашивая пользователя после двух версий.
В дополнение к ответу Дэвида просто установите в свой проект https://www.nuget.org/packages/AutoUpdateProjectsMinimumRequiredClickOnceVersion. После того, как ваш проект настроен на проверку обновлений и использование минимально необходимой версии, это обеспечит проверку того, что минимально требуемая версия всегда соответствует вашей текущей версии (т. Е. Пользователь всегда будет вынужден обновиться до последней версии).
Для принудительного обновления на клиентах вы должны установить поле минимальной версии, равное текущей развертываемой версии, это приведет к обновлению без параметра "Пропустить".