Project Reunion
Runtime architecture and deployment scenarios for Project Reunion
关键术语
- Project Reunion runtime,使用Project Reunion所需的所有的MSIX包,其内容包括Framework, Main以及DDLM
- Framework package,包括运行时的二进制。含有一个自发动组件可以让APP获得最新版本的Project Reunion。
- Main package,包含后台任务,服务,应用扩展以及其他没有涵盖在Framework包中的组件。这些通常都是为了提供进程外的服务的代理支持,比如推送通知以及剪贴板。
- Dynmaic Dependency Lifttime Manager (DDLM),当非打包应用处于使用中时,阻止操作系统对MSIX包进行服务升级。
- Bootstrapper,应用局部的二进制,供非打包的应用来定位以及加载与之匹配的最佳的Project Reunion版本。此自发动组件是可再发行的组件形式提供的,名叫Microsoft.ProjectReunion.Bootstrap.dll。
- Provisioning,在系统级别安装并注册软件包的过程(包括拷贝文件以及修改注册表)从而避免每个用户的重复安装。这个过程可以被OS执行,或者在应用安装的时候执行。
- Installer,应用安装技术,比如MSI,AppInstaller,或者.exe安装
- MSIX,现代安装技术,让用户可以安全方便从Store或者网站安装应用。对于企业或者共享PC,应用可以通过PowerShell以及MDM安装给所有用户。
Framework packages for packaged and unpackaged apps
使用Project Reunion的应用会引用到框架包提供的运行时组件。框架包允许打包的应用访问用户设备上的单一共享组件源。框架包还囊括了一些其他资源,比如DLL和API定义(包括COM以及WinRT)。这些个资源运行在应用的上下文,所以继承了应用的能力和权限,所以不用自己指定能力和权限。
框架包是以MSIX包的形式在Microsoft Store发行。可以不断更新和升级。使用Project Reunion的应用包会依赖到框架包。
新版框架包发布后,所有APP的依赖会自动升级到这个新版本,不需要额外修改。每次Windows的升级也会升级自带的框架包。应用退出重新加载后会引用最新的包。旧的框架包不会从系统中移除,除非再也不被使用了。
框架包的版本命名遵从Semantic Versioning 2.0.0,简单说只有主版本升级的时候才需要考虑兼容性。
Additional requirements for unpackaged apps
不打包的应用必须使用dynamic dependencies API才得以使用Project Reunion的特性诸如:WinUI,App lifecycle, MRT Core以及DWriteCore。这些特性使不打包的App可以动态生成到框架包或者其他MSIX包的依赖关系。这使得不打包的应用可以保持它们既有的部署机制,比如使用MSI或者其他安装器。
虽然动态依赖主要是给不打包的应用使用的,打包的应用也可以使用。
三个组件可以做动态依赖:自启动器,DDLM,以及MAIN。
Bootstrapper
自启动器是一个程序库,必须包含在主程序中。它提供以下功能:
- 为框架包初始化DDLM
- 找到并加载框架包
对于不打包的应用,必须在程序执行早期调用自启动器代码。
Dynamic Dependency Lifetime Manager (DDLM)
DDLM的作用是防止框架包在被不打包应用使用的时候被升级。
每个版本和体系架构的框架包都有一个DDLM。
Main package
提供一个短暂运行的服务进程用来跟踪已添加的动态依赖。如果依赖由Project Reunion管理则不需要此软件包。
Deployment scenarios
Project Reunion MSIX packages are already installed on the computer
如果Framework, Main, DDLM这些MSIX包已经安装到计算机上了,则不需要额外操作。MSIX包是安装到系统范围,所以硬盘上只有一份。应用发现目标软件包已有的情况下,不做任何操作。
Project Reunion Runtime is not installed on the computer
通过安装Project Reunion来安装Framework, Main, DDLM等包。
Project Reunion Runtime needs to be provisioned system-wide
需要升级到管理员权限。如果获取管理员权限不成功,则会安装到用户级别。
企业环境下,IT管理员可以为用户部署系统级别的安装。
Related topics
一些相关话题。
Deploy packaged apps that use Project Reunion
Overview
每次使用Project Reunion的WinUI项目模板创建项目的时候,会在项目中包含一个专门用来编MSIX包的Windows Application Packaging Project。Package a desktop or UWP app in Visual Studio提供更多信息。Manage your MSIX deployment提供了关于部署MSIX的更多信息。
Preview versions of Project Reunion
预览版的Project Reunion的Visual Studio扩展会在构建的时候部署预览版的框架包,使其称为一个NuGet包依赖。预览版的Project Reunion NuGet包也是如此。
Preview versions of Project Reunion
稳定版的情况下,会在打包描述文件中添加到框架包的依赖:
<Dependencies>
<PackageDependency Name="Microsoft.ProjectReunion.0.8-preview" MinVersion="8000.144.525.0" Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" />
</Dependencies>
手动构建应用包的情况下,需要在打包描述文件中自己添加对PackageDependency的描述。
Deploy unpackaged apps that use Project Reunion
给出关于部署非MSIX打包的应用的指导。尚在试验阶段,具体略。
(本篇完)
2021-06-25 更新(Windows 11相关)
Windows 11与昨日正式宣布,Project Reunion也改名成了WindowsAppSdk了。
从Introducing Windows 11看,Windows 11像是Windows 10的精炼版,据说安装包精简了40%,操作接口也有一定变化;可以跑Android应用,使用的是Intel的Bridge技术。
从Building a new, open Microsoft Store on Windows 11看,支持更开发的商店,允许第三方结算,支持多种应用类型,包括Win32, .NET, UWP, Xamarin, Electron, React Native, Java, Progressive Web Apps,还有跟Amazon Store合作的Android应用商店。跟随https://aka.ms/blogsourcenewstore前往App发布网站。
从What Windows 11 Means for Developers看:
- PWABuilder3可以方便构建PWA
- WebView2运行时会内置
- Windows Terminal会内置
- Microsoft Edge DevTools会内置
- Windows App SDK
- ARM64 Emulation Compatible ABI用来构建ARM64程序,可以混合ARM和X86代码
- 免费的Game Development Kit
从https://www.microsoft.com/en-us/windows/windows-11似乎可以下载要给PC HealthCheck工具,用于检查是否能够升级Windows 11。
(更新完)