繁体   English   中英

升级现有应用程序以包含ClickOnce

[英]Upgrade an existing application to include ClickOnce

是否可以将ClickOnce功能引入现有应用程序?

方案是:版本1.0已安装在客户端上。 我想向他们发送一个新的安装包,它将升级到1.1,它具有ClickOnce功能,从而使未来的升级“毫不费力”。

除此之外,还有其他解决方案可以解决这类问题吗?

PS:原始应用程序是使用Visual Studio 2005 (即.NET 2.0)开发的。 我现在正在使用Visual Studio 2008

不,使用标准的ClickOnce部署方案是不可能的。

ClickOnce是客户端的沙盒安装。 它不会知道已安装的1.0版本。 它只是通过ClickOnce检查其GUID是否已经安装,如果是,则更新它,但前提是通过ClickOnce部署了以前的版本。

在您的情况下,如果用户安装了1.1版,则两个版本将并排安装。 版本1.0将不会更新,因为ClickOnce不知道存在关联,因为它是通过不同的方法部署的。 如果他们不再需要1.0版,他们需要手动删除它。 一旦通过ClickOnce部署了1.1版,后续更新将正常运行。

不要将ClickOnce视为“包括”的东西,将其视为一种部署方法。

或者:

我应该澄清一下,使用标准ClickOnce部署无法实现您所需要的功能。 但是,您提到您要向他们发送初始设置文件。 在这种情况下,您可能有一个可行的解决方法:

  1. 编写安装文件脚本以自动删除1.0版安装
  2. 编写安装文件脚本以启动ClickOnce安装。

对于后续更新,只需将用户指向“纯”ClickOnce安装程序包,您的更新应该可以正常工作。

确保在客户端环境中彻底测试ClickOnce部署。 我在这里省略了细节,但ClickOnce存在许多问题。 我已经支持ClickOnce应用程序已有3。5年了,并且遇到了许多清单问题,不得不手动删除沙盒存储文件夹以便更新安装正确等等 - 如果你在线搜索ClickOnce问题,你会发现很多在MSDN论坛和其他地方很少出现问题,其中很多MS似乎都不想解决,因为它们自Visual Studio 2005以来一直处于打开状态。

另外,请注意.NET 3.5 SP1之前的ClickOnce中可能存在的问题。 如果您没有来自客户端计算机可识别的CA的自己的软件部署证书,则Visual Studio将使用“临时”证书(* .pfx),该证书将在创建后的一年内到期。 在此之后,后续更新版本可能无法安装,并将向用户显示有关证书过期的可怕消息。 Microsoft在.NET 3.5 SP1中对此进行了修复,但您必须深入了解发行说明,以查找不再需要临时或永久证书的注释。 因此 - 如果您没有公共CA证书,并且您将支持此应用程序一段时间,那么请确保您使用的是.NET 3.5 SP1。

根据您的场景的复杂性,由于您询问其他解决方案,我们最终使用“滚动您自己”的方法,就像这样。

每个更新的版本都会根据需要增加程序集版本。

Build包含一个自定义步骤,可以使用新的程序集版本自动生成文件。

部署项目使用MSI将版本文件复制到输出目录。

每次安装的应用程序运行时,它都会将自己的版本与deploy文件夹中版本文件中的版本进行比较。 如果它们不同,请退出应用程序并启动MSI,我们将其设置为自动删除较旧的应用程序版本。

对于没有任何应用程序部署工具(甚至不是AD应用程序广告)的环境,这是一个“穷人的ClickOnce”,所以我们做了。 同样,这种方法对您来说可能不够复杂,但对我们来说效果很好。

祝你好运。

我认为在这种情况下,“最简单”的解决方案是只使用1.1版本的ClickOnce部署,并且作为该应用程序新版本的一部分,有一个默认配置文件,其中包含某种类型的首次运行标志,当它用户第一次运行并看到首次运行的标志,它查找以前的版本,复制任何现有的配置设置,然后自动卸载以前的版本。

这需要您进行一些编程,但这是我在之前的工作中确定的解决方案,以执行类似的任务来升级实用程序应用程序以使用之前没有的Clickonce。

我知道的最好方法是向他们发送一个安装程序:

  1. 卸载当前版本
  2. 启动驻留在Web上的ClickOnce应用程序。

有了这个,您将获得合理的升级体验,从那以后,ClickOnce可以自行处理升级。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM