Chrome 111 重定向 Angular PWA 被误认为 Chrome 应用

Ste*_*K22 7 google-chrome progressive-web-apps angular

我们有一个 Angular 14 Web 应用程序,它使用 Google Chrome 作为渐进式 Web 应用程序 (PWA) 安装在计算机上。在更新到 Chrome 111 之前,它运行良好,但现在,当双击该图标时,用户会被重定向到 chrome://app,并弹出一个窗口,显示“旧版本的 Chrome 应用程序在 2022 年 12 月之后将无法在 Linux 设备上打开。您可以检查是否有新版本可用。”。Linux 和 Windows 下都会发生这种情况。然后,一个链接建议将此 chrome 应用程序转换为 PWA,它已经应该是这样了。使用 Microsoft Edge 110 来安装 PWA 是可行的,因此这里双击直接打开应用程序。到目前为止,我在 Chrome 111 的发布描述中找不到任何线索可以解释为什么 PWA 没有被这样对待。清单文件看起来不错,证书也是如此。希望有人可以帮忙!

我希望双击该应用程序即可打开。相反,Chrome 将我重定向到 chrome://app ,我可以在其中打开它,但只有在单击另一个警告弹出窗口之后

有谁知道 Chrome v111 中的哪些变化使其表现出这种行为方式以及哪些属性使其将 PWA 与 Chrome 应用程序混淆?

更新:

我想这与将 Chrome 应用程序迁移到渐进式 Web 应用程序有关:

2023 年 3 月:Chrome 应用程序将不再在 Windows、Mac 和 Linux 上启动”

sto*_*soc 4

将 Chrome 应用程序迁移到渐进式 Web 应用程序 中提到的 2023 年 3 月里程碑的时间点已通过,但尚未找到真正的根本原因,但是,我们已经解决了 Chrome 111 的 PWA 问题,无需更改我们的 PWA 代码或清单,只需取消 -安装它,但在重新安装之前需要执行额外的步骤

注意:反复卸载(“删除”)并重新安装(对我们来说)并不能解决问题,但我们意外地发现 PWA 第一次似乎没有完全卸载,必须删除重新安装前两次:

解决方法(一次性)

像往常一样卸载chrome://apps(右键单击 PWA 图标并选择“从 Chrome 中删除”,不需要选中“同时清除 Chrome 中的数据”),但在关闭 Chrome 之前,刷新chrome://apps页面;您会注意到您的 PWA 图标重新出现并带有红色!。再次执行卸载过程,然后重新安装。

Chrome://APPS 之后缺少/通用 PWA 图标?

完成重新安装后,尽管一切正常,并且您的快捷方式在桌面/其他地方有正确的 PWA 图标,但在页面中chrome://apps列出的 PWA 可能有一个通用占位符图标。

可能只是我们,但我们(巧合?)在这一切之前id我们的 PWA 中还没有键/值。manifest.json

尽管在解决方法之后 PWA 继续正常工作,但页面chrome://apps仍然显示通用占位符图标。

为了解决这个问题manifest.json(再次,巧合?线索?),我们就地更新了 PWA 的文件,以包含值为 的id键/值(请参阅Web 应用程序清单规范,id member< our PWA's hostname only > ) 。

之后,后续安装/重新安装现在也会在chrome://apps页面上再次正常显示该图标。

自从我们的 PWA 诞生以来,我们就没有任何id价值,根据规范它对于早期版本的 Chrome 来说可能是正确的默认值。

现在,虽然解决方法对于最终用户来说并不是太繁重,但它很笨重:如果/当我们弄清楚如何通过企业 IT 工具和/或 Chrome 管理来集体完成此操作时,我会回来的。

更新#1:鉴于解决方法不涉及对我们的 PWA 代码或清单进行任何更改(除了后来明显解决了中显示的良性但好奇的通用占位符图标chrome://apps),我们不认为这与底层 Web 应用程序框架有关或版本。就其价值而言,我们的 PWA 是 Angular 1.x 版本的。

更新#2:强制安装免疫?

通常,我们的 PWA 是由最终用户自助安装的,但我们确实在共享/信息亭机器上有一些预先存在的安装,我们在其中编写了注册表导入脚本以强制安装- 到目前为止,即使使用 Chrome 111,这些也有尚未表现出 OP 问题。

我们使用的示例注册表.reg导入文件:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome]
"WebAppInstallForceList"="[ { \"url\": \"https://our.pwa.host.corp\", \"create_desktop_shortcut\": true, \"default_launch_container\": \"window\" } ]"

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run]
"OURAPPNAME"="\"C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome_proxy.exe\" --profile-directory=Default --app-id=ourhashedappid"

Run Code Online (Sandbox Code Playgroud)

其中our.pwa.host.corpOURAPPNAME、 和ourhashedappid对于您的 PWA 来说是唯一的。