C# 升级现有应用程序以包括ClickOnce
是否可以将ClickOnce功能引入现有应用程序 场景是:1.0版已经安装在客户端上。我想向他们发送一个新的安装包,它将升级到1.1,它具有ClickOnce功能,从而使未来的升级“毫不费力” 除此之外,这类问题还有其他解决方案吗C# 升级现有应用程序以包括ClickOnce,c#,visual-studio-2008,deployment,clickonce,automated-deploy,C#,Visual Studio 2008,Deployment,Clickonce,Automated Deploy,是否可以将ClickOnce功能引入现有应用程序 场景是:1.0版已经安装在客户端上。我想向他们发送一个新的安装包,它将升级到1.1,它具有ClickOnce功能,从而使未来的升级“毫不费力” 除此之外,这类问题还有其他解决方案吗 注:最初的应用程序是用(即,.NET2.0)开发的。我现在正在使用。不,使用标准的ClickOnce部署方案是不可能的 ClickOnce是客户端的沙盒安装。它不知道已经安装的1.0版。它只需检查是否已通过ClickOnce安装了its,如果已安装,则更新它,但前提是
注:最初的应用程序是用(即,.NET2.0)开发的。我现在正在使用。不,使用标准的ClickOnce部署方案是不可能的 ClickOnce是客户端的沙盒安装。它不知道已经安装的1.0版。它只需检查是否已通过ClickOnce安装了its,如果已安装,则更新它,但前提是以前的版本是通过ClickOnce部署的 在您的情况下,如果用户安装了版本1.1,则两个版本将同时安装。版本1.0将不会更新,因为ClickOnce不知道存在关联,因为它是通过其他方法部署的。如果他们不再需要1.0版,他们需要手动删除它。一旦通过ClickOnce部署了1.1版,后续更新将正常工作 不要将ClickOnce视为您“包括”的东西,而应将其视为一种部署方法 或者: 我应该澄清一下,使用标准的ClickOnce部署是不可能的。但是,您提到要向他们发送初始设置文件。在这种情况下,您可能有一个解决方案:
这需要您进行一些编程,但这是我在以前的工作中确定的解决方案,我在以前的工作中做了类似的任务,将实用程序升级到Clickonce,在以前没有的地方使用Clickonce。我知道的最好方法是向他们发送一个安装程序,该程序:
有了这一点,您将有一个合理的升级体验,从那时起,ClickOnce可以自行处理升级。确保在客户端环境中彻底测试ClickOnce部署。我在这里省略了细节,但是ClickOnce有很多问题。我已经支持ClickOnce应用程序3.5年了,在清单方面遇到了很多问题,不得不手动删除沙盒存储文件夹以便正确安装更新,等等。如果您在线搜索ClickOnce问题,您会在MSDN论坛和其他地方发现很多问题,许多问题MS似乎不想解决,因为它们自VisualStudio2005以来一直处于开放状态 另外,请注意.NET3.5SP1之前的ClickOnce中可能存在的问题。如果您没有来自客户端计算机识别的证书的自己的软件部署证书,Visual Studio将使用“临时”证书(*.pfx),该证书将在创建后一年过期。此后,后续的更新版本可能不会安装,并将向用户显示有关证书过期的可怕消息。Microsoft在.NET3.5SP1中修复了此问题,但您必须仔细阅读发行说明,以找到不再需要临时或永久证书的注释。所以-如果您没有公共CA证书,并且您将支持此应用程序一段时间,那么请确保您使用的是.NET3.5SP1 根据场景的复杂性,由于您询问了其他解决方案,因此我们最终使用了类似于这样的“滚动您自己的”方法 每个更新版本根据需要增加程序集版本 生成包含一个自定义步骤,用于自动生成具有新程序集版本的文件 部署项目使用MSI将版本文件复制到输出目录 每次安装的应用程序运行时,它都会将自己的版本与部署文件夹中的版本文件中的版本进行比较。如果它们不同,请退出应用程序并启动MSI,我们将其设置为自动删除较旧的应用程序版本 这是一个“穷人的ClickOnce”,对于一个没有任何应用程序部署工具avl(甚至连广告应用程序广告都没有)的环境,我们就这么做了。同样,这种方法对您来说可能不够复杂,但对我们来说效果很好
祝您好运。谢谢您的详细回复。ClickOnce听起来确实比它的价值更麻烦。。。我喜欢你自己设计的解决方案。