ClickOnce部署应用程序的Prism体系结构注意事项

时间:2012-01-06 04:09:43

标签: c# .net wpf clickonce prism

我正在使用Prism和ClickOnce创建一个新的应用程序,但在测试ClickOnce的哈希检查仅增量更新时,我注意到我需要进行一些架构更改以充分利用ClickOnce更新。

要明确的是,我正在部署到互联网连接较差的机器上,我真的希望以最小的带宽发布小型,快速的更新。理想情况下,只有经过修改的模块才会通过网络发送。

首先,我注意到客户端应用程序项目的哈希(生成.exe的哈希)总是被改变,无论如何,并且总是重新下载。这导致我删除Shell.xaml,ShellViewModel.cs和一些ResourceDictionaries并将它们移动到新的ShellModule中。这留下了AggregateModuleCatalog,Bootstrapper,App.xaml和App.cs;每个文件都很小,所以这很好。

其次,我注意到ClickOnce的程序化更新可以进入模块,所以我在AutoUpdateModule中有这个。

最后,我最后关注的是基础设施项目。每个模块直接引用基础结构,如果修改基础结构,则所有模块都会获得新的哈希值我相信这意味着即使我在基础架构内的枚举中添加一行,也会重新下载整个应用程序。

这个问题有优雅的解决方案吗?如果您使用ClickOnce部署了Prism应用程序,那么哪些其他架构修改可以帮助或改进您的部署?

1 个答案:

答案 0 :(得分:1)

我对Prism不熟悉,但ClickOnce无法为标准应用程序应用部分更新。

我有一个类似的问题(我认为)与我在5年前工作的Windows应用程序项目有关。具体来说,我的用户经常有不稳定的数据连接(有时连接不良的蜂窝数据连接),我需要确保我的更新尽可能小。

即使我可以阻止在每次更新后重新下载完整的应用程序,但我确实发现有许多永不改变的第三方dll。因此,我创建了一个单独的安装程序,将这些模块放在Windows GAC中,并且在安装必备软件时它们只安装了一次。这使我的应用程序大小从25MB减少到2MB - 相当大的改进。

我不确定这是否适用于您的情况,但可能有所帮助。