2012-01-06 94 views
3

我使用Prism和ClickOnce創建了一個新應用程序,但是在測試ClickOnce的哈希檢查以更新僅更新時,我注意到我需要進行一些體系結構更改以充分利用ClickOnce更新。ClickOnce部署應用程序的棱鏡體系結構考慮

爲了清楚起見,我將部署到具有較差互聯網連接的機器,並且我真的希望以最小帶寬發佈小型,快速更新。理想情況下,只有已修改的模塊才能通過線路發送。

首先,我注意到客戶端應用程序項目的散列(使.exe生成的散列)總是被更改,而且總是被重新下載。這導致我刪除Shell.xaml,ShellViewModel.cs和一些ResourceDictionaries並將它們移動到一個新的ShellModule中。這留下了AggregateModuleCatalog,Bootstrapper,App.xaml和App.cs;每個文件都是仙女,所以這很好。

其次,我注意到ClickOnce的編程更新可以進入一個模塊,所以我在AutoUpdateModule中有這個。

最後,我最後關心的是基礎設施項目。每個模塊直接引用基礎架構,如果基礎架構被修改,所有模塊都會獲得新的散列值我相信這意味着即使我向基礎架構內的枚舉添加一行,整個應用程序也會重新下載。

有沒有一個優雅的解決方案來解決這個問題?如果您已經使用ClickOnce部署了Prism應用程序,那麼可以幫助或改進您的部署的其他架構修改是什麼?

回答

1

我不熟悉Prism,但是,ClickOnce沒有辦法爲標準應用程序應用部分更新。

我有一個類似的問題(我認爲)與我在大約5年前開發的Windows應用程序項目有關。具體來說,我的用戶經常有不明確的數據連接(有時連接不好的蜂窩數據連接),我需要確保我的更新儘可能小。

儘管我可以防止在每次更新後重新下載完整的應用程序,但我確實發現有很多第三方dll從未更改過。因此,我創建了一個單獨的安裝程序,將這些模塊放置在Windows GAC中,並且在安裝必備組件時僅安裝一次。這將我的應用程序大小從25MB降低到2MB--這是一個很大的改進。

我不確定這是否適用於您的情況,但可能有所幫助。