使用ClickOnce部署启动缓慢的应用程序

时间:2016-02-11 09:12:55

标签: c# .net clickonce

我们正在使用ClickOnce部署我们的应用程序,我们注意到当我们通过单击ClickOnce桌面图标启动应用程序时,应用程序启动速度较慢(至少需要30-60秒),而不是直接从.exe启动。 我已经看到它不是一个未知的问题(Slow startup of Clickonce winforms application after update),但它似乎仍然没有得到解决。 我想知道为什么会发生这种情况以及如何解决这个问题。

我只使用一台机器,所以我猜它与机器无关,与防病毒无关。

我在启动期间注意到不同的内存管理模式:ClickOnce部署需要更多时间,一段时间后它会释放一些内存。 我们仍然在谈论12 MB的差异(67MB通过ClickOnce,50通过直接.exe)。

这让我疯了......

由于

2 个答案:

答案 0 :(得分:3)

  

我猜它与机器无关,与防病毒无关。

您需要通过在开发虚拟机上安装客户端所使用的相同防病毒来证明该假设。如果无法重现慢启动比较机器之间的ProcMon跟踪。

我认为汉斯是有钱的,反病毒是最可能的罪魁祸首,根据你在问题中提到的QA中的正确答案:

  

对于新部署的首次运行,我看到非常糟糕的性能(分钟与几秒).Net应用程序是用户正在运行防病毒软件,因为防病毒工具检查新的Jitted程序集不是恶意的。

确保您使用.NET Framework 3.5 SP1或更高版本作为"在启动方面有显着的性能改进。特别是WPF应用程序"和3.5 SP1包括启动画面。

启动画面可以是一个快速(临时)修复。唉,不是一个理想的解决方案。

ClickOnce现在已经很老了,并且在这个领域已经取得了很多进步,所以为什么不采用另一种具有不同部署机制的策略,例如应用程序中的Windows Installer和Update Menu。我详细介绍了将MSI安装程序设置为Install to same path when upgrading application的步骤。

如果你想严格要求每个人都使用最新版本而不是ClickOnce,最好有一个网络服务,应用程序在启动时下载并下载并在新版本发布时执行更新。

此外,请在此区域提供Google提示。你还记得Jeff Atwood的文章:http://blog.codinghorror.com/the-infinite-version/

enter image description here

如果您不使用ClickOnce,您可以使用NGEN和bsdiff之类的内容,甚至可能使用Google courgette

还有一些其他方法可以加速ClickOnce应用程序discussed here的启动。

虽然这可能无法直接回答您的问题,但希望它可以让您考虑如何识别根本原因和/或使用其他更新的最新方法来推出更新。

答案 1 :(得分:0)

发布构建时,请选择在离线模式下运行应用程序的选项。否则,clickonce安装程序将尝试从您的服务器而不是本地exe启动应用程序。

如果有任何其他情况需要调查或有帮助,请告诉我。

谢谢,