我们的应用程序是通过ClickOnce部署的.NET 3.5。我们只是升级到.NET 4.0并适当更新了预先安排。
对于通过设置HTML页面安装的首次用户或用户,安装仍然可以正常运行。它将自动为它们安装.NET 4框架。但是,已经安装了应用程序并尝试通过开始菜单运行它的用户会收到提示:
“无法安装或运行此应用程序。此应用程序要求您的系统更新为Microsoft公共语言运行时版本4.0.30319.0。可在此处找到更多信息”(链接到MS网站)
为什么它不会像从html页面运行时那样自动安装.NET 4.0?它甚至没有提供下载更新的选项。我们需要一个无缝的解决方案,让客户无需手动重新安装即可升级到新应用程序。
答案 0 :(得分:5)
以下是您的方案中发生的情况。
“安装适用于初次使用的用户......”
实际上,这适用于任何访问html页面的用户,而不仅仅是首次使用的用户。 html页面有一些脚本,用于检查4.0框架的用户代理字符串。如果他们没有它,它会给他们一个解释并告诉他们从Visual Studio创建的引导程序(setup.exe)的链接安装它。这与ClickOnce分开; ClickOnce nothing 直到他们点击指向.application文件的链接,或者他们运行setup.exe,它会在完成后启动.application文件。
“已安装该应用程序并尝试通过开始菜单运行它的用户......”
这里发生的是应用程序正确更新。他们得到了最新版本。只有他们无法运行最新版本,因为它是.Net 4.0可执行文件,并且没有4.0框架。
此时你有几个选择......
答案 1 :(得分:2)
另一种选择是回滚到.NET 3.5版本并添加自定义代码,以编程方式unisntalls应用程序并从具有.NET 4作为先决条件的其他URL重新安装它。已经拥有.NET 4的人只需要新安装ClickOnce位;有人的。 NET 3.5将卸载他们的应用程序,安装.NET 4,并安装新版本的应用程序。
您可以在此MSDN文章here中找到卸载/重新安装代码。