【发布时间】:2012-01-06 04:09:43
【问题描述】:
我正在使用 Prism 和 ClickOnce 创建一个新应用程序,但在测试 ClickOnce 的哈希检查以检查仅增量更新时,我注意到我需要进行一些架构更改才能充分利用 ClickOnce 更新。
明确地说,我正在部署到互联网连接不佳的机器上,我真的想以最小的带宽发布小型、快速的更新。理想情况下,只有经过修改的模块才会通过网络发送。
首先,我注意到客户端应用程序项目的哈希(生成 .exe 的那个)无论如何总是被更改,并且总是重新下载。这导致我删除 Shell.xaml、ShellViewModel.cs 和一些 ResourceDictionaries 并将它们移动到新的 ShellModule 中。这留下了 AggregateModuleCatalog、Bootstrapper、App.xaml 和 App.cs;每个文件都很小,所以这很好。
其次,我注意到 ClickOnce 的程序化更新可以进入一个模块,所以我将它放在一个 AutoUpdateModule 中。
最后,我最关心的是基础设施项目。每个模块直接引用基础设施,如果基础设施被修改,所有模块都会获得新的哈希值。我相信这意味着即使我在基础设施内的枚举中添加一行,整个应用程序也会被重新下载。
这个问题有没有优雅的解决方案?如果您使用 ClickOnce 部署了 Prism 应用程序,还有哪些其他架构修改有助于或改进了您的部署?
【问题讨论】:
标签: c# .net wpf clickonce prism