不久前,Google 终于从 Chrome 中取消了 NPAPI 支持,彻底取消了 Chrome 中的 ClickOnce 支持。尽管如此,Chrome仍然是一个流行的浏览器,ClickOnce对于用户来说非常方便。因此,我试图为 ClickOnce 应用程序(特别是 Outlook 的 VSTO 加载项)和 Chrome 提供一种不错的部署用户体验。
以下是我尝试过的替代方案:
- 建议用户安装 ClickOnce Chrome 扩展(Meta4 ClickOnce 启动器、Windows Remix ClickOnce 处理程序、CacheNet ClickOnce for Chrome 等)。所有这些实际上都会安装一个单击处理程序应用程序,该应用程序为 .VSTO 文件启动 .NET 处理程序。从 Chrome 55.X 开始,所有这些都不再起作用,因为 Chrome 还阻止了过去附带的 .exe 安装程序。即使这些问题已修复,这也意味着用户必须下载并安装第 3 方 .exe 文件,这基本上使 ClickOnce 的使用毫无意义:我也可以将自己的安装程序打包为 .exe(参见下文)。
- 让用户下载并运行引导程序文件(setup.exe)。该文件是使用 ClickOnce 应用程序生成的,它只是一个要下载的文件,并且它从网络中提取其余的内容。然而,到目前为止,Chrome、SmartScreen 和任何防病毒用户都可能会在下载 setup.exe 时大喊大叫,尽管它是由适当的 CA 签名的(除非您有数百万次下载)。这又是一个交易杀手。
- 使应用程序清单可在本地运行。好吧,Chrome 不知道如何处理 .VSTO 清单,但至少它会下载它们。如果我以某种方式烹饪 .VSTO 清单,以便当用户双击它时,它就开始部署怎么办?嗯,我们已经做到了 80%,但截至今天,这种情况会导致“部署和应用程序没有匹配的安全区域”。看起来 ClickOnce 假设如果文件是从本地硬盘驱动器启动的,那么它会自动成为“本地”,并且整个部署也应该是“本地”。所以这个选项也已经死了。
- 要求用户在 IE 中打开链接。最后的手段基本上就是承认失败并做 2001 年左右的旧事 - 要求用户在 …