迁移桌面程序到MS Store(1)——通过Visual Studio创建Packaging工程
之前跑去做了一年多的iOS开发,被XCode恶心得不行。做人呢,最重要的是开心。所以我就炒了公司鱿鱼,挪了个窝回头去做Windows开发了。
UWP什么的很久没有正儿八经写了,国内的需求非常少。传统的桌面开发倒是因为人越来越少了,需求还在,有少量还不错的职位。现在在做WPF的项目,公司层面倒是很愿意迁移到UWP,但是迁移起来会有很多的困难和限制。同时有这方面热情,且知道怎么去做的人就更少了。
接下来会通过几个短篇来介绍如何通过Desktop Bridge来迁移桌面程序到MS Store,这块的学习我还没有深入,祈祷一下不会很快就太监了……
其实如果仅仅是要求把exe打包成appx的话,权限方面并没有什么特殊的要求。但是默认情况下,如果需要提交商店并通过审核的话,应用程序需要能够运行在Windows 10 S模式下。MSDN的原话是
All apps submitted to the Microsoft Store must be compatible with Windows 10 S. Apps that aren't compatible won't be accepted in the store.
这个就比较严格了,简单举例如下:
- APP不能要求admin权限
- APP不能包含Windows Service
- APP不能像exe程序那样直接在运行目录写文件
- APP不能直接运行另一个exe程序
以上这些在传统桌面程序中算是常见了,所以只要稍微复杂一点的exe程序,在迁移的时候就会遇到各种各样的问题。
今天的第一篇我们首先来处理一下最简单的情况,即移植一个标准的,同时符合商店权限要求的WPF程序。
第一步我们先创建一个空的WPF工程。运行起来是一个空白的窗体。工程文件结构也很简单,见Solution Explorer。

接下来我们要创建一个Packaging工程来对WPF工程进行打包,最终通过Packaging工程来生成APPX文件。可以在Windows Universal目录下找到Windows Application Packaging Project。

点击OK创建完成后,记得要在Applications中添加对WPF工程的引用。同时我们还可以看到Images文件夹下对应的图片,是转换完成后的磁贴图标。不更新的话在开始菜单里就是默认的方块叉图标。

通过Visual Studio添加Packaging工程的优点是,我们可以方便的调试原来的WPF程序。这里我们将启示项目Startup Project设置为SimpleWpfAppPackaging后,按F5运行是可以直接调试SimpleWpfApp工程的。我们可以加个断点试试,体验可以说是无缝链接必须好评了。成功运行程序后,你会在开始菜单中发现SimpleWpfAppPackaging。

再接着就是创建APPX等文件提交商店了。Packaging工程上通过右键菜单Store -> Create App Packages… 再往后的流程就是和纯的UWP工程一模一样了。

假设我们给APPX的名字也命名为SimpleWpfAppPackaging,那么我们可以得到以下APPXUPLOAD文件。这个文件就是提交到商店进行审核的最终文件。

本篇先做了一个最基本的介绍,希望能留下对迁移工程的初步印象,后面我们会接着讨论一般情况下,迁移工作可能会遇到的问题和解决方案。
本篇相关代码地址:
https://github.com/manupstairs/DesktopBridgeSamples
迁移桌面程序到MS Store(1)——通过Visual Studio创建Packaging工程的更多相关文章
- 迁移桌面程序到MS Store(5)——.NET Standard
接下来的几篇,我想讨论下迁移桌面程序到MS Store,可以采用的比较常见.通用性比较强的实施步骤和分层架构. 通常商业项目一般都是不断的迭代,不太可能突然停止更新现有的桌面版本,然后花很长时间从头来 ...
- 迁移桌面程序到MS Store(8)——通过APPX下载Win32Component
在上一篇<迁移桌面程序到MS Store(7)——APPX + Service>中,我们提到将desktop application拆分成UI Client+Service两部分.其中UI ...
- 迁移桌面程序到MS Store(9)——APPX With Desktop Extension
在<迁移桌面程序到MS Store(8)——通过APPX下载Win32Component>中我们讨论了通过APPX来下载Service部分的安装包.但是纯UWP的客户端并不能自动运行下载的 ...
- 迁移桌面程序到MS Store(10)——在Windows S Mode运行
首先简单介绍Windows 10 S Mode,Windows在该模式下,只能跑MS Store里的软件,不能通过其他方式安装.好处是安全有保障,杜绝一切国产流氓软件.就像iOS一样,APP进商店都需 ...
- 迁移桌面程序到MS Store(12)——WPF使用UWP InkToolbar和InkCanvas
我们在<迁移桌面程序到MS Store(4)——桌面程序调用Win10 API>提到了对Win10 API的调用,但仍存在无法在WPF中使用UWP控件的问题,虽然都是XAML控件,但却是两 ...
- 迁移桌面程序到MS Store(13)——动态检查Win10 API是否可用
假设我们现有一个WPF程序,需要支持1903以前的Windows 10版本.同时在1903以后的版本上,额外多出一个Ink的功能.那么我们就可以通过ApiInformation.IsApiContra ...
- 迁移桌面程序到MS Store(14)——APPX嵌入WCF Service以Admin权限运行
Windows10 1809版本开始,微软又对UWP开放了新的Capability:AllowElevation. 通过这个新的Capability,UWP APP能够在运行时向用户请求Admin权限 ...
- 迁移桌面程序到MS Store(7)——APPX + Service
本篇我们以一个Sample工程,来说明如何把一个常见结构的desktop application,转制成APPX并在MS Store提供下载. 之前的篇章中,我们已经介绍了一些内容,包括如何通过Vis ...
- 迁移桌面程序到MS Store(2)——Desktop App Converter
迁移传统桌面程序到MS Store的另一种方式是使用Desktop App Converter工具.虽然本篇标题包含了Desktop App Converter(以下简称DAC),实际上我是来劝你别用 ...
随机推荐
- python基础数据篇
1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 ? 1 names = ['Alex',"Tenglan",' ...
- kettle数据库连接使用变量
新增db连接(密码也可以设置参数) 转换中,右键空白处,选择转换设置
- leetcode72
class Solution { private: ][]; public: int minDistance(string word1, string word2) { int len1 = word ...
- js 模拟css3 动画
<html> <head> <title> javaScript缓动入门 </title> </head> <body> < ...
- springmvc转页面
@RequestMapping("/aa") public String zuan(){ return "redirect:/bb.jsp"; } 如果没有带r ...
- HttpRunnerManager使用(一)
用例: 一.request requests---headers===>headers设置 requests---type:params===>请求参数设置,URL参数(get) requ ...
- Django项目vue前端依赖框架过大,工程打开太卡的问题
前景提要:利用vue开发项目,由于依赖框架太大,导致pyCharm内存不够,项目打开太慢.步骤一:修改pyCharm的占用内存大小,按照下图操作.1.在应用程序中找到pyCharm,点击"显 ...
- springcloud-知识点总结(二):Ribbon&Feign
1.Ribbon简介 前面讲了eureka服务注册与发现,但是结合eureka集群的服务调用没讲. 这里的话 就要用到Ribbon,结合eureka,来实现服务的调用: Ribbon是Netflix发 ...
- Unity中的屏幕坐标:ComputeScreenPos/VPOS/WPOS
[Unity中的屏幕坐标:ComputeScreenPos/VPOS/WPOS] 1.通过 VPOS / WPOS 语义获取. VPOS 是 HLSL 中 对 屏幕 坐标 的 语义, 而 WPOS 是 ...
- C++字符串结束标识
用一个字符数组可以存放一个字符串中的字符.如: char str[12]={'I',' ','a','m',' ','h','a','p','p','y'}; 用一维字符数组str来存放一个字符串″I ...