09、win32 转换为 store app
1、机制:
微软的 Project Centernial ( Project C) 项目的就是把传统的 windows桌面应用程序
转换为 windows10 store app (appx)。
目的:
1) 传统桌面应用会导致系统注册表体积越来越大,导致系统运行变慢、不稳定。大多数软
件在安装的时候会获得 administrator 权限,可能导致其它应用程序被破坏,甚至系统被破坏。
2) 当卸载桌面应用的时候,往往并不安全,因为一个 Win32 应用可能依赖于早期安装的应用。
Project C 使用两个现有的技术来修复这个问题,一个是 App-V (百度百科App-V),一个企业级
的产品使app把它们的依赖项打包到一起,所以它们各自保持独立,并且与 System隔绝。应用
虚拟化(Application virtualization)就是应用程序可以读、写注册表,并且向 System路径中
(比如 System32文件夹)添加类库,但这些添加的内容会被放到应用程序自己的沙盒内(虚拟映射)。


另一个就是 Windows Store,它会提供一种一键安装和卸载的机制,自动更新,
应用内支付等。从而不用担心会破坏 System和拖慢 Windows。
3) Project C 就是为一个已有的 Win32(或 Win64)应用程序提供转换。工作原理
就是使用 App-V 做一个称作“排序”(sequencing)的转换过程。通过 App-V 的“排序”
来捕获程序对系统的更改。然后你运行应用程序的 installer。App-V记录所有的更改,
然后输出虚拟化(virtualised)后的应用程序包。在 Project C 还有更近一步的操作,
就是把这个包(pachage)捆绑成一个 Appx 包 ( Windows store app)。

虽然使用相同的技术,但是Sheehan 强调,Project C 和 App-V 并不一样。
App-V 必须做“反常的事情”,因为它必须与现有的类库一起协作。而 Project C
让程序员,在打包前可能必须调整他们的代码。另一个不同的是, Project C app
可以使用 Windows 10 Universal app 相同的API,比如 Live Tile,动态更新开始
菜单,和其它的 Store app 进行通信等等。
4)Project C app 跟 Universal App 不同的是,它并不是运行在沙盒(sandboxed)中
的,但它们比传统 Win32 应用多一些限制。一个 Project C app 运行在 full user-level trust,
所以它不允许获得管理员权限。所以它们不能显示UAC(User Access Control)对话框来
获取更改系统的权限。不过他们可以使用 Windows 的特性,比如 COM 和 WMI(Windows
Management Instrumentation)、获取用户的硬件。
Project C app 的一个限制是它不能从另外的 Project C app 中加载类库。
5)A Project C app 将只会运行在 PC 上,不会运行在 Phone、Xbox 或者 HoloLens 上。
2、 进度:
目前 Project C 项目并未提供公测,我注册了一下我的个人信息,当这个项目有进展的时候,
会给邮箱发邮件。(https://dev.windows.com/zh-cn/uwp-bridges)

总结参考:
1)Project Centennial": Converting your Classic Windows App (Win32, .Net, COM) to a Universal Windows App for Distribution in the Windows Store :
https://channel9.msdn.com/Events/Build/2015/2-692
2)How Project Centennial brings potentially millions of desktop apps to the Windows 10 Store:http://www.theregister.co.uk/2015/05/06/windows_10_project_centennial/
3)Application Virtualization:https://technet.microsoft.com/en-us/windows/hh826068.aspx
4)百度百科App-V : http://baike.baidu.com/view/3770203.htm
09、win32 转换为 store app的更多相关文章
- Windows 8.1 store app 开发笔记
原文:Windows 8.1 store app 开发笔记 零.简介 一切都要从博彦之星比赛说起.今年比赛的主题是使用Bing API(主要提到的有Bing Map API.Bing Translat ...
- Windows store app[Part 4]:深入WinRT的异步机制
接上篇Windows store app[Part 3]:认识WinRT的异步机制 WinRT异步机制回顾: IAsyncInfo接口:WinRT下异步功能的核心,该接口提供所有异步操作的基本功能,如 ...
- Windows store app[Part 1]:读取U盘数据
Windows 8系统下开发App程序,对于.NET程序员来说,需要重新熟悉下类库. 关于WinRT,引用一张网上传的很多的结构图: 图1 针对App的开发,App工作在系统划定的安全沙箱内,所以通过 ...
- 在桌面程序上和Metro/Modern/Windows store app的交互(相互打开,配置读取)
这个标题真是取得我都觉得蛋疼..微软改名狂魔搞得我都不知道要叫哪个好.. 这边记录一下自己的桌面程序跟windows store app交互的过程. 由于某些原因,微软的商店应用的安全沙箱导致很多事情 ...
- 吐槽坑爹的微软win store app审核
从学习win store app 开发到做出第一个应用 博客园cnblogs 花了一个多月的全部业余和上班空闲时间, 上周在端午节放假期间终于完成了计划的全部开发和测试, 6月10号怀着无比激动的心情 ...
- Windows Store App 过渡动画
Windows Store App 过渡动画 在开发Windows应用商店应用程序时,如果希望界面元素进入或者离开屏幕时显得自然和流畅,可以为其添加过渡动画.过渡动画能够及时地提示用户屏幕所发 ...
- 05、Windows Store app 的图片裁切(更新)
在 Win Phone Silverlight api 中,有一个 PhotoChooserTask 选择器,指定宽.高属性,在选择图片的时候, 可以进行裁切,代码: PhotoChooserTask ...
- 01、Windows Store APP 设置页面横竖屏的方法
在 windows phone store app 中,判断和设置页面横竖屏的方法,与 silverlight 中的 Page 类 不同,不能直接通过 Page.Orientation 进行设置.而是 ...
- Windows store app[Part 3]:认识WinRT的异步机制
WinRT异步机制的诞生背景 当编写一个触控应用程序时,执行一个耗时函数,并通知UI更新,我们希望所有的交互过程都可以做出快速的反应.流畅的操作感变的十分重要. 在连接外部程序接口获取数据,操作本地数 ...
随机推荐
- java String分配内存空间备忘
栈内存 堆内存 基础类型,对象引用(堆内存地址) 由new创建的对象和数组, 存取速度快 相对于栈内存较慢 数据大小声明周期必须确定 分配的内存由java虚拟机自动垃圾回收器管理.动态分配内存大小 共 ...
- Python之L.pop()和del L[i]
# -*- coding: utf-8 -*- #python 27 #xiaodeng #Python之L.pop()和del L[i] #http://python.jobbole.com/826 ...
- asp.net MVC在IIS7或7.5上的发布问题
按照网上的做法,开启了ISAPI和CGI限制C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll 应用程序池也设置好了,可是就是 ...
- Linux应用小技巧
简介 本文针对Linux操作过程中提升工作效率问题,给出常见操作技巧,主要从Linux终端管理.显示git分支.终端快速检索历史命令等方面进行介绍. 本文内容主要以Ubuntu系统为例进行介绍. Li ...
- 重要:VC DLL编程
VC DLL编程 静态链接:每个应用程序使用函数库,必须拥有一份库的备份.多个应用程序运行时,内存中就有多份函数库代码的备份. 动态连接库:多个应用程序可以共享一份函数库的备份. DLL的调用方式:即 ...
- 微信小程序的POST和GET请求方式的header区别
1.post请求: wx.request({ url: 'https://m.***.com/index.php/Home/Xiaoxxf/make_order', header: { "C ...
- @Autowired(required = false)
标记在 方法上的时候,它会根据类型去spring容器中寻找 对于的形参并且注入. @Repository(value="userDao") public class UserDao ...
- 基于JavaScript 声明全局变量的三种方式
本文转自脚本之家:http://www.jb51.net/article/36548.htm JS中声明全局变量主要分为显式声明或者隐式声明下面分别介绍. 声明方式一: 使用var(关键字)+变量名( ...
- HDUOJ---1754 I Hate It (线段树之单点更新查区间最大值)
I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- HDUOJ-------2149Public Sale
Public Sale Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...