项目中用到了ClickOnce部署和升级项目,刚开始在测试的过程中发现,ClickOnce并不能如MS文档中所说的进行增量更新,而是在更新的时候下载了全部文件(查看安装目录的文件修改时间)。
在网上查阅了很多资料,都没有这方面的解答,而MSDN等微软的技术网站都说可以增量下载。
经过使用mage.exe命令行工具 进行一系列的案例测试,还是无果。走投无路之后发现,是不是一开始对全量下载的判定有问题呢,也就是说,是不是安装目录的文件修改时间更新了,并不能说明执行了全量下载呢?
产生这个想法后马上使用 流量监控工具进行测试,发现在第二次更新的时候果然是只下载了有改动的文件!(更新对话框可能还是显示所有文件的大小)。也就是说没有更新的文件是从上一个版本copy过来的,copy的过程中所有的文件修改时间改为了升级的时间(这也是为什么一开始认为clickonce是全量更新的原因)。
下面是mage.exe执行的测试命令:
mage -n Application -ToFile bin1000\a.exe.manifest -Name "a" -v 1.0.0.0 -fd bin1000 -cf TestForm_TemporaryKey.pfx
mage -n Deployment -ToFile a.application -Name "a" -v 1.0.0.0 -appm bin1000\a.exe.manifest -i true -cf TestForm_TemporaryKey.pfx -pu http://localhost/a.application
mage -n Application -ToFile bin1001\a.exe.manifest -Name "a" -v 1.0.0.1 -fd bin1001 -cf TestForm_TemporaryKey.pfx
mage -u a.application -v 1.0.0.1 -appm bin1001\a.exe.manifest -cf TestForm_TemporaryKey.pfx
流量监控工具使用360自带的就可以,注意dfsvc.exe这个进程,是clickonce用来更新和下载程序的。可以在每次更新下载完毕后结束进程,下次会被重新启动,这样监控流量比较方便。
分享到:
相关推荐
Click-Once采用增量更新,只下载自上次安装以来改变的部分,节省了网络带宽。更新策略可以设置为“每次启动时检查更新”、“在启动时询问用户”或“从不检查更新”。 6. Click-Once的局限性 虽然Click-Once带来了...
开发者可以通过 Visual Studio 集成 ClickOnce 部署,但其更新策略有限,例如不支持增量更新。 3. **自定义自动更新流程**: - 当 ClickOnce 不能满足需求时,开发者通常会编写自定义的更新逻辑。这通常涉及以下...
Squirrel支持全量更新和增量更新,还能处理文件锁定等问题。 实现自动更新时,还需要考虑以下关键点: - **安全性**:确保更新过程中数据的完整性,使用HTTPS进行安全传输,防止中间人攻击。 - **用户体验**:在...
本文将详细介绍 C# WinForm 自动更新方案,涵盖了整个自动更新流程,从发布设置到版本控制,包括 IIS 配置和 ClickOnce 问题解决方法。 自动更新方案概述 自动更新方案是指在 C# WinForm 项目中实现自动检查和更新...
4. **下载更新**:用户确认更新后,WinForm应用会从服务器下载新的安装包或增量更新包。为了优化用户体验,通常会使用多线程下载,并提供进度条显示。 5. **安装更新**:下载完成后,应用会自动或引导用户安装更新...
另外,使用专门的更新框架,如ClickOnce或者第三方库,可以简化这个过程,使自动更新更加可靠和高效。 为了进一步理解这个DEMO,你可以查看名为"AutoUpdate"的压缩包文件,它可能包含源代码、XML文件和其他相关资源...
- **增量更新**:只下载自上次更新以来发生变化的部分,减少下载量和更新时间。 - **多线程下载**:提高下载速度,尤其是在网络条件不稳定时。 - **后台更新**:在不影响用户正常使用应用的情况下进行更新操作。 ...
- **ClickOnce部署**:这是.NET Framework提供的一种简单自动更新方案,但可能会限制自定义需求。 - **自定义安装逻辑**:对于更复杂的需求,可以编写自己的安装逻辑,例如创建安装包、使用安装向导等。 在实际...
4. **更新执行器**:根据更新类型(如增量更新或完整更新)更新本地文件,可能需要使用`File`类的`Move`或`Copy`方法。 5. **应用管理者**:负责控制应用的重启或启动新版本,可能涉及使用`Process.Start`方法。 ...
- **库与框架**:许多语言有现成的库或框架支持自动更新,例如.NET Framework的ClickOnce,Java的JUpdate,JavaScript的electron-builder等。 - **API**:开发者可以利用云服务提供商如Amazon S3、Google Cloud ...
1. **增量更新**:一种常见的更新策略是增量更新,即只发送自上一版本以来更改过的文件。这可以通过比较两个版本的文件差异来实现,例如使用Microsoft的WiX工具集或ClickOnce部署技术。WiX可以生成 MSI 安装包,而...
在实现自动更新功能时,可以利用各种库和工具,例如ClickOnce部署技术,它内置了自动更新功能,可以简化上述过程。另一种方法是使用专门的自动更新框架,如NAudio的UpdateManager或Squirrel.Windows,它们提供了丰富...
1. **版本更新**:.NET Framework 4.5是.NET Framework 4的增量更新,而不是一个全新的版本。它包含了许多性能改进、新的APIs和对.NET Framework 4的兼容性。 2. **WCF/WPF/WCF增强**:4.5版本增强了Windows ...
- 可以使用开源库,如`ClickOnce`或自定义的更新机制。一旦检测到新版本,更新代码会从服务器下载更新文件,并在后台静默安装或提示用户确认更新。确保在更新过程中处理可能的网络问题和异常。 4. **数据库监控**...
2. **下载更新**:如果发现有可用更新,客户端将下载更新包,这可能是一个完整的新版本文件,也可能是一个增量更新文件,只包含与旧版本不同的部分。 3. **验证更新**:下载完成后,客户端会校验更新包的完整性,...
开发者可以通过WiX编写XML脚本来定义安装包的组件、文件、注册表项等,并设置升级规则,比如增量更新、全量更新等。 **ClickOnce** 是.NET Framework提供的一种发布和更新应用程序的方法,特别适合桌面应用。它允许...
在实际开发中,可以使用如ClickOnce这样的内置解决方案,或者自定义一个符合项目需求的自动升级组件。对于大型项目,可能需要考虑更复杂的更新策略,例如分步更新、增量更新以减少下载量。总的来说,C# WinForm自动...
4. **文件分发策略**:为了提高下载效率和用户体验,开发包可能会采用增量更新的方式,只下载自上次升级以来改变的部分文件。这需要在服务器端保存每个版本的文件清单,并能够计算文件的差异。 5. **安装过程**:...
7. **安装部署**:更新器可能还需要处理安装和卸载的逻辑,可能使用到安装部署技术,如ClickOnce,它可以自动处理应用程序的部署和更新。 8. **UI设计**:用户界面的设计和交互是更新器的重要组成部分。C#与Windows...
Visual Studio提供了多种打包工具和方法,如Web Deploy、ClickOnce等,其中Web Deploy是推荐的部署方式,因为它支持增量部署,能有效减少上传的数据量,提高部署速度。在VS中,你可以通过项目属性的发布选项,选择...