转换为.NET 4后,ClickOnce升级失败

Gre*_*nis 6 .net clickonce

我们的应用程序是通过ClickOnce部署的.NET 3.5.我们只是升级到.NET 4.0并适当地更新了pre-requisities.

对于首次通过设置HTML页面安装的用户或用户,安装仍然可以正常运行.它将自动为它们安装.NET 4框架.但是,已安装应用程序并尝试通过开始菜单运行它的用户会收到提示:

"无法安装或运行此应用程序.此应用程序需要将您的系统更新为Microsoft公共语言运行时版本4.0.30319.0.可在此处找到更多信息"(链接到MS网站)

为什么它不会像从html页面运行时那样自动安装.NET 4.0?它甚至没有提供下载更新的选项.我们需要一个无缝的解决方案,让我们的客户无需手动重新安装即可升级到新应用程序.

cod*_*ion 5

首先阅读这个问题并回答.

以下是您的方案中发生的情况.

  1. "安装适用于初次使用的用户......"
    实际上,这适用于任何访问html页面的用户,而不仅仅是首次使用的用户.html页面有一些脚本,用于检查4.0框架的用户代理字符串.如果他们没有它,它会给他们一个解释并告诉他们从Visual Studio创建的引导程序(setup.exe)的链接安装它.这与ClickOnce分开; ClickOnce在点击指向.application文件的链接之前不执行任何操作,或者运行setup.exe,该文件在完成后启动.application文件.

  2. "已经安装了应用程序并尝试通过开始菜单运行它的用户......"
    这里发生的是应用程序正确更新.他们得到了最新版本.只有他们无法运行最新版本,因为它是.Net 4.0可执行文件,并且它们没有4.0框架.

此时你有几个选择......

  • 和它一起生活.告诉用户他们需要访问html页面才能获得4.0 Framework.
  • 回滚到3.5并向应用程序添加自定义代码以检查是否安装了4.0,警告用户,并为他们提供指向新4.0 setup.exe文件的链接.一旦人们有机会安装它,几周后升级到4.0.如果您的用户偶尔只运行应用程序,这可能无法正常工作.
  • 回滚到3.5并将ClickOnce更新更改为在应用程序启动后而不是之前发生.这将使您有机会编写自定义代码以确定更新是否可以发生并告诉用户.