【问题标题】:ClickOnce Upgrade Fails after Converting to .NET 4转换为 .NET 4 后 ClickOnce 升级失败
【发布时间】:2010-09-20 20:39:52
【问题描述】:

我们的应用程序是通过 ClickOnce 部署的 .NET 3.5。我们只是升级到 .NET 4.0 并适当地更新了先决条件。

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

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

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

【问题讨论】:

    标签: .net clickonce


    【解决方案1】:

    首先阅读this question and answer

    这是您的场景中发生的情况。

    1. “对于初次使用的用户来说,安装效果很好...”
      实际上,这适用于访问 html 页面的任何用户,而不仅仅是初次使用的用户。 html 页面有一些脚本检查 4.0 框架的用户代理字符串。如果他们没有它,它会给他们一个解释,并告诉他们从指向 Visual Studio 创建的引导程序 (setup.exe) 的链接安装它。这与 ClickOnce 完全不同; ClickOnce 什么都不做,直到他们点击指向 .application 文件的链接,或者他们运行 setup.exe,它会在完成时启动 .application 文件。

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

    此时您有几个选择...

    • 忍受它。告诉用户他们需要访问 html 页面以获取 4.0 框架。
    • 回滚到 3.5 并向您的应用添加自定义代码,以检查是否安装了 4.0、警告用户并为他们提供指向新 4.0 setup.exe 文件的链接。然后在人们有机会安装它的几周后升级到 4.0。如果您的用户只是偶尔运行该应用,这可能效果不佳。
    • 回滚到 3.5 并将 ClickOnce 更新更改为在应用程序启动之后而不是之前进行。这将使您有机会编写自定义代码来确定是否可以进行更新并告诉用户。

    【讨论】:

      【解决方案2】:

      另一种选择是回滚到 .NET 3.5 版本并添加自定义代码,以编程方式取消安装应用程序并从以 .NET 4 作为先决条件的不同 URL 重新安装它。已经拥有 .NET 4 的用户只需重新安装 ClickOnce 位;人与 . NET 3.5 将卸载他们的应用程序,安装 .NET 4 并安装他们的应用程序的新版本。

      您可以在这篇 MSDN 文章 here 中找到卸载/重新安装代码。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-08-15
        • 1970-01-01
        • 1970-01-01
        • 2017-03-16
        • 2022-06-27
        • 2014-08-12
        • 1970-01-01
        相关资源
        最近更新 更多