Files
LanMountainDesktop/docs/02-AirApp开发/README.md
2026-08-11 23:03:55 +08:00

2.8 KiB
Raw Blame History

AirApp 运行时与窗口轻应用

AirApp 是统一扩展系统

AirApp轻应用是阑山桌面的统一扩展系统。开发者通过 LanMountainDesktop.AirAppSdk 可以开发两种形态的轻应用:

  • 桌面组件:放置到桌面网格,主进程内渲染(AddAirAppComponent<TControl>)。
  • 窗口轻应用:独立窗口应用,由 AirAppHost 进程隔离承载(AddAirAppWindow<TWindow>)。

运行时拓扑

主 Host 内置桌面组件 / 第三方 AirApp 桌面组件
         ↓ 组件内调用 OpenWindowAsync(windowId)
Host 内 AirAppLauncherService
         ↓ AirAppOpenRequest含 --app-package 包目录IPC
独立 LanMountainDesktop.AirAppRuntime
         ↓ 启动或激活
独立 LanMountainDesktop.AirAppHost 进程(--app-package --target-entry-id
         ↓ 按 appId 加载第三方 AirApp 程序集,解析 [AirAppEntrance]
AirAppWindowLoader → 创建 IAirAppWindow → 内容嵌入 FAAppWindow 外壳

各进程职责

进程/模块 职责
LanMountainDesktop Host 扫描/加载 AirAppairapp.json + [AirAppEntrance]ALC 隔离);渲染桌面组件;组装 AirAppOpenRequest 并调用 Runtime IPC
LanMountainDesktop.Launcher OOBE、Splash、版本选择、预启动 Runtime、启动 Host
LanMountainDesktop.AirAppRuntime 生命周期与控制 IPC、实例去重、启动/激活/关闭 AirAppHost转发 --app-package
LanMountainDesktop.AirAppHost 内置 3 个窗口world-clock/whiteboard/rss-reader+ 按 --app-package 加载第三方 AirApp 窗口
LanMountainDesktop.AirAppSdk 统一 SDKIAirApp/AirAppBase/IAirAppWidget/IAirAppWindow/airapp.json
LanMountainDesktop.AirAppTemplate dotnet new lmd-airapp 模板(组件 + 窗口 + 设置示例)
LanMountainDesktop.AirAppDevServer 开发者工具:监视项目 → dotnet build.laapp → 打包/预览

窗口轻应用开发

  1. dotnet new lmd-airapp 创建 AirApp 工程。
  2. AirApp.InitializeAddAirAppWindow<MyWindow>("my-window", "My Window")
  3. 组件内通过 AirAppComponentContext.OpenWindowAsync("my-window") 打开窗口。
  4. dotnet build 生成 .laapp,安装到 Extensions/AirApps

第三方 AirApp 窗口由 AirAppHost 进程承载:AirAppWindowLoader 读取包目录的 airapp.json,用 AirAppLoader 加载入口程序集,按 --target-entry-id 解析 AirAppWindowRegistration,把 IAirAppWindow.Content 嵌入 FAAppWindow 外壳。

内置窗口链路(回归保障)

world-clockwhiteboardrss-reader 三个内置窗口保持原有路径(不携带 --app-package),行为不变。

相关文档