一、组件定位
Microsoft.WindowsAppRuntime.Bootstrap.dll 是 Windows App SDK(Windows App Runtime)运行时体系中的引导层组件。Windows App SDK 的能力以 framework package(MSIX 框架包)的形式分发:打包(packaged)应用可以通过应用清单声明静态依赖,直接引用框架包;而未打包(unpackaged)的传统 Win32、WPF、WinForms 应用不具备包标识(Package Identity),无法声明静态依赖,必须由引导层在进程启动阶段动态完成运行时的解析与挂载。这正是该 DLL 承担的核心职责。
二、核心功能
- 运行时定位与版本匹配:依据调用方指定的最小版本(major.minor)及可选版本标签,枚举系统中已注册的 Microsoft.WindowsAppRuntime 框架包,按语义版本规则选取满足条件的最高版本。
- 包依赖图注入:通过导出函数 MddBootstrapInitialize / MddBootstrapInitialize2,调用操作系统的动态依赖(Dynamic Dependency)API,将框架包加入当前进程的包依赖图,使不具备包标识的进程同样能够激活框架包内的 WinRT 类型、激活工厂与 API 契约(API Contract)。
- DDLM 生命周期协调:与 Dynamic Dependency Lifetime Manager(DDLM)进程通信,由 DDLM 持有框架包的引用计数,确保应用运行期间框架包不会被系统回收或因更新而卸载。
- 错误诊断与回退:在框架包缺失、版本不满足、架构不匹配等场景下返回标准 HRESULT(如 0x80070002、0x80073D54 等),便于应用侧判定并向用户给出安装运行时的引导提示。
- 资源释放:通过 MddBootstrapShutdown 在进程退出前解除依赖、递减 DDLM 引用,避免残留句柄与包引用。
三、缺少该 DLL 的影响
该 DLL 是隐式链接或延迟加载的入口模块,一旦缺失,故障往往出现在进程初始化的最早期阶段,用户侧很难获得有意义的提示。
- 进程无法启动:PE 加载器解析导入表失败,抛出「找不到 Microsoft.WindowsAppRuntime.Bootstrap.dll」,错误码通常为 0xc0000135(STATUS_DLL_NOT_FOUND),表现为程序双击后无窗口、直接闪退。
- Windows App SDK 能力全面失效:WinUI 3 窗口、Microsoft.UI.Xaml 控件树、AppWindow、DispatcherQueue、应用通知、后台任务等均无法激活,界面可能出现空白或直接抛出 COM 激活异常(如 REGDB_E_CLASSNOTREG)。
- 自举流程中断:即使目标机器上已安装 Windows App Runtime,缺少引导模块也无法构建包依赖图,运行时处于「已安装但不可用」的状态。
- 版本错配的隐性故障:DLL 存在但版本低于调用方要求时,可能出现入口点找不到(0xc0000139)或引导返回版本不匹配错误,问题更具隐蔽性。
- 部署环境差异被放大:在开发机可运行、在干净系统或精简镜像上失败,是此类缺失最典型的表现。
四、常见排查方向
确认目标机器已安装与目标框架一致的 Windows App Runtime Redistributable;确认 Microsoft.WindowsAppRuntime.1.x 框架包与 DDLM 服务处于正常注册状态;确认 DLL 与主程序位数(x64 / x86 / arm64)一致,或随应用一起分发到可执行文件同目录;必要时通过自举 API 返回的 HRESULT 精确定位是「未安装」「版本不足」还是「架构不符」。