跳转到内容

平台 · 平台

Windows 上的 PWA

发布于 更新于

在 Windows 10 和 11 上,Microsoft Edge 通过地址栏图标或菜单项安装 PWA,安装后的应用像其他 Windows 应用一样运行:有自己的窗口和标题栏应用菜单,出现在任务栏、开始菜单和 Alt+Tab 中,并与其他已安装应用一起列在 Windows 设置里。

Microsoft 在 Microsoft Learn(Use Progressive Web Apps in Microsoft Edge,日期 2025-10-15)和 Microsoft 支持站上记载了面向用户的流程;下文的标签均引自这两页(英文界面)。

当 Edge 判定网站可安装时,地址栏出现 App available 图标;点击它弹出带 Install 按钮的浮窗。任何网站,无论是否可安装,都可以通过 Settings and more (…) > More tools > Apps > Install this site as an app 安装。安装完成后出现的对话框提供 Pin to Start 和 Auto-start on device login 两个复选框,应用在自己的窗口中打开。许多 PWA 也上架在 Microsoft Store,点击 Get 按钮即可安装,无需打开 Edge。

已安装 PWA 的窗口标题栏上有一个 Settings and more (…) 按钮,打开 App info 菜单:应用图标、名称和发布者(服务器域名),命令 Pin to taskbar、Pin to Start、App settings,以及子菜单 Privacy(包含正在使用的 Cookie 数量)、Extensions 和 More tools。manifest 中声明的快捷方式出现在任务栏图标的右键菜单里。

已安装应用列在 edge://apps,卡片上的 Details 提供 Auto-start on device login 开关、Pin to taskbar、Pin to Start、Create Desktop shortcut 和 Uninstall;卸载时会询问是否同时删除应用的历史记录和数据。同一批应用也出现在 Windows 设置的 Add or remove programs 中(旧版本显示为 Apps & features),管理员可以像其他应用一样移除它们。

Microsoft 列出一条已知限制:FSLogix 环境不支持 PWA。安装会成功,但用户注销再登录后,已安装的 PWA 就不见了。依赖持久 Windows 安装的虚拟桌面部署应提醒用户,或改为通过 Microsoft Store 分发。

下面的检测使用标准的 display-mode 媒体特性,它不是 Edge 专有的;Edge 只是 Windows 上已安装窗口出现的地方。

页面在已安装窗口而非浏览器标签页中运行时,(display-mode: standalone) 匹配。

function isStandaloneDisplayMode() {
if (typeof window.matchMedia !== 'function') {
return false; // 没有 matchMedia:当作普通标签页
}
return window.matchMedia('(display-mode: standalone)').matches;
}
if (isStandaloneDisplayMode()) {
document.getElementById('install-cta').hidden = true;
} else {
document.getElementById('install-cta').hidden = false;
}

回退返回 false,这样没有 matchMedia 的引擎看到的是安装号召,而不是报错。

在标签页与应用之间切换时作出响应

Section titled “在标签页与应用之间切换时作出响应”

同一个源可以同时在已安装窗口和标签页中打开,而页面的呈现方式变化时 MediaQueryList 会报告,所以这个模式值得监听,而不是只读一次。

const standalone = window.matchMedia('(display-mode: standalone)');
function applyMode(matches) {
document.body.classList.toggle('installed', matches);
}
applyMode(standalone.matches);
standalone.addEventListener('change', (event) => applyMode(event.matches));

这个类只用于布局(隐藏重复的标题、收紧标题栏下方的留白);功能在两种模式下应保持一致。

App info 菜单是从窗口内部确认页面正以已安装 PWA 运行、以及它从哪个源安装的最快方式。

发布者一行显示的是应用安装来源的源,这是在测试机上确认没有混淆预发布安装和生产安装的最快检查。

规范

规范状态
无。