最近因公司業務需要,需要將現有 Win32 軟體遷移至 UWP 平臺。因爲是硬體公司,其軟體涉及多個設備,不同設備均有其特定的界面。
若發佈的軟體包直接包含所有設備,則會導致軟體包過大。因此,產品 PM 提出要能做到當識別到用戶相關設備時,才通過下載或額外安裝的方式,使主體軟體框架可以支援操作對應設備。
從目前找到的資料看,這種方式有點類似 UWP 的可選包。但實際實驗發現,只能支持將後端邏輯代碼分離,而無法將 XAML 界面分離至可選包。
因此,在此請教各位大佬,是否有實現過類似功能,協助給予一些方向。感謝!
问题已解决,最后发现可选包是可行的。整理了做法文章:
https://my.hancel.org/2021/03/08/uwp-optional-package.html
1
encro 2021-02-25 13:48:02 +08:00
xaml 界面能有多大呢?
一般来说是 res 资源图片之类比较大。 正确做法:将图片等资源放在网络上下载。 |
2
goobai 2021-02-25 14:18:45 +08:00 via Android
没学过反射吗?
|
3
janus77 2021-02-25 15:13:24 +08:00
支持 uwp 的系统应该不多吧,全部界面穷举出来能有多少?你的包体积真的会影响很大吗
另一个思路是直接打多个包,按需下载使用 |
4
ly841000 2021-02-25 15:18:24 +08:00
做成不同的 dll, 按需加载
|
5
imlinhanchao OP |
6
ysc3839 2021-02-25 18:17:54 +08:00 via Android
用 Windows::UI::Xaml::Markup::XamlReader::Load 可以动态载入纯文本的 XAML 代码。不过代价是界面未经过编译,容易被复制。
或者考虑用 HTML 做界面?印象中 UWP 支持 HTML 界面。 |
7
cjw1115 2021-02-25 19:13:48 +08:00
看描述你们是要搞 DCHU, app 要做成 HSA....
主页面放一个 frame, 根据不同的设备型号 new 不同的 xaml page 作为 content 放进去, 就这思路。XAML+CS 很小的。 至于你的各种类型的资源比如 video,可以做成 optional package, 单独打包上传商店。 其次 XAML page 也是可以放在 universal DLL 里面的,实测过。 |
8
imlinhanchao OP @cjw1115 有辦法引用可選包内的資源嗎?有沒有實例或文檔可以參考?我找到的基本上都是引用 Class 。
|