接下来的几篇,我想讨论下迁移桌面程序到MS Store,可以采用的比较常见.通用性比较强的实施步骤和分层架构. 通常商业项目一般都是不断的迭代,不太可能突然停止更新现有的桌面版本,然后花很长时间从头来写UWP版本,所以我建议将迁移的过程分阶段,通过几个版本的迭代,慢慢地从传统桌面程序,转变成一个可以通过MS Store审核的APPX程序.至于之后要不要变成真·UWP可以视市场反馈决定. 假设现有的桌面程序包含一个MainUI的WPF工程,多个.NET Framework 4.5的类库,以及一个C…
之前跑去做了一年多的iOS开发,被XCode恶心得不行.做人呢,最重要的是开心.所以我就炒了公司鱿鱼,挪了个窝回头去做Windows开发了.        UWP什么的很久没有正儿八经写了,国内的需求非常少.传统的桌面开发倒是因为人越来越少了,需求还在,有少量还不错的职位.现在在做WPF的项目,公司层面倒是很愿意迁移到UWP,但是迁移起来会有很多的困难和限制.同时有这方面热情,且知道怎么去做的人就更少了.        接下来会通过几个短篇来介绍如何通过Desktop Bridge来迁移桌面程序…
在上一篇<迁移桌面程序到MS Store(7)——APPX + Service>中,我们提到将desktop application拆分成UI Client+Service两部分.其中UI Client可以通过Desktop Bridge技术Pacakage成APPX,上传到MS Store以供下载,而Service则仍以传统的desktop application安装包形式提供.这样势必造成用户安装时的割裂感.本篇将就这个问题进行一些讨论. 首先我们参照上图的架构创建Sample Solut…
在<迁移桌面程序到MS Store(8)——通过APPX下载Win32Component>中我们讨论了通过APPX来下载Service部分的安装包.但是纯UWP的客户端并不能自动运行下载的exe或者msi文件.本篇将着手解决这个问题.假设我们有如下结构的application,蓝色APPX中包含UWP及.NET Standard Libraries.而Service部分以WCF的形式Host在Windows Service上,这其中包含了诸如Win32 API等无法迁移到UWP的内容. 因为用…
首先简单介绍Windows 10 S Mode,Windows在该模式下,只能跑MS Store里的软件,不能通过其他方式安装.好处是安全有保障,杜绝一切国产流氓软件.就像iOS一样,APP进商店都需审核,同时APP在沙盒环境下,以普通用户权限运行,不能偷偷摸摸地干坏事,抢占资源的情况也不会发生,自然体验流畅,系统性能提升.一切都是那么的美好,但Windows S Mode就是没有人用…… 这个悲剧真是不好说,也许是用户习惯,也许是违背人性,同时侵犯了厂商(要审核,要分成)和用户的利益(很多软件…
我们在<迁移桌面程序到MS Store(4)——桌面程序调用Win10 API>提到了对Win10 API的调用,但仍存在无法在WPF中使用UWP控件的问题,虽然都是XAML控件,但却是两套命名空间下的同名类型,无法混用.人总会被现实打败,强大如某软也得向生活低头,UWP一直没有起色,某软的老大又一心去搞Azure.Windows平台的重振,似乎想走回头路,从1903版本开始,支持在.NET Framwork的WPF和WinForm工程中,直接使用部分的UWP控件了.首当其冲的,就是有点骚包的…
假设我们现有一个WPF程序,需要支持1903以前的Windows 10版本.同时在1903以后的版本上,额外多出一个Ink的功能.那么我们就可以通过ApiInformation.IsApiContractPresent方法来判断1903的API是否可用,决定要不要开放Ink功能给当前用户.新来的同学如果不知道如何使用“ApiInformation.IsApiContractPresent”,请参考<迁移桌面程序到MS Store(4)——桌面程序调用Win10 API>.Sample Code…
Windows10 1809版本开始,微软又对UWP开放了新的Capability:AllowElevation. 通过这个新的Capability,UWP APP能够在运行时向用户请求Admin权限,配合Windows 1607版本就引入的RunFullTrust Capability(参考<迁移桌面程序到MS Store(9)——APPX With Desktop Extension >),我们可以让MS Store中的APP拥有无限接近传统桌面程序的能力.本篇提到的Sample工程位于全…
本篇我们以一个Sample工程,来说明如何把一个常见结构的desktop application,转制成APPX并在MS Store提供下载. 之前的篇章中,我们已经介绍了一些内容,包括如何通过Visual Studio创建Packaging工程, 如何将Class Libraries转换到.NET Standard版本.至此,UI界面,以及部分DLL的迁移问题得到解决.但有时候我们的desktop application还包括一个本地的Background Service.那么目前微软推荐的策…
迁移传统桌面程序到MS Store的另一种方式是使用Desktop App Converter工具.虽然本篇标题包含了Desktop App Converter(以下简称DAC),实际上我是来劝你别用DAC的…… 首先我简单介绍下DAC,DAC可以转换传统桌面程序,将其打包成APPX文件.虽然名字里有Converter字样,实际这是一个打包程序,并不会真正去修改用来打包的源程序. 为了使用DAC,你需要1607版本以上的Windows 10 Pro.我想也没有人会闲的蛋疼用Win7去打包APP进…