0

我正在尝试 SecureInput 扩展示例,该示例演示 MS Edge 浏览器扩展中的 NativeMessaging 功能,并且在使用 VS 社区版 2017 构建后部署扩展时遇到问题。我没有通用 Windows 平台应用程序开发经验,所以如果有,我深表歉意我不知道的一个非常明显的答案。但是在示例中遵循 readme.md 不起作用,所以在这里发布这个问题......

https://github.com/MicrosoftEdge/MicrosoftEdge-Extensions-Demos/tree/master/SecureInput

接下来的步骤……

  1. 在“使用开发者功能”中开启开发者模式
  2. 在 Edge 浏览器的 about:flags 中打开启用扩展开发者功能。
  3. 将示例作为 zip 文件下载到本地计算机。
  4. 将 SecureInput.html 复制到我的本地网络服务器
  5. 在 VS 社区版 2017 中加载 SecureInput.sln 有两个选项.. InProc 或 OutOfProc,我想尝试 InProc。所以需要在 Build Configuration manager 的 NativeMessagingHostInProcess 中选择 Project。使用的其他设置... 调试 - 配置;任何 CPU – 主动解决方案平台;NativeMessagingHostInProcess – x64 项目平台,因为我使用 64 位 Windows 和边缘运行作为 64 位进程;剩下的默认设置。
  6. 使用调试配置和任何 CPU 解决方案平台构建了整个解决方案。

部署摘要

  1. 构建了整个 SecureInput 解决方案。
  2. 通过运行 Add-AppxPackage -register [PathtoSecureInputSolutionFolder] NativeMessagingHostInProcess\bin\x64\Debug\AppxManifest.xml 安装 AppX 包
  3. 在构建过程中或从提升的 Power shell 提示符运行 Add-AppXPackage 时没有错误。

预期:此时 EdgeBrowser->MoreOptions->Extensions 应该列出 AppX 包安装的扩展(部署摘要/步骤 2)。=>> 不会发生。

其他一些细节

  1. 我正在使用 64 位 Win 10 creators build (1703 – OS build 16063.128)
  2. 我怀疑 Add-AppxPackage 未能静默添加扩展。详细标志也没有给我任何线索。
  3. Get-AppXPackage 显示新添加的 AppX 包。

Name : ae24a957-5239-43b2-a36c-b96805a58ade Publisher : CN=msft Architecture : X64 ResourceId : Version : 1.0.0.0 PackageFullName : ae24a957-5239-43b2-a36c-b96805a58ade_1.0.0.0_x64__2yx4q2bk84nj4 InstallLocation : [PathtoSecureInputSolutionFolder] \NativeMessagingHostInProcess\bin \x64\Debug IsFramework:False PackageFamilyName:ae24a957-5239-43b2-a36c-b96805a58ade_2yx4q2bk84nj4 PublisherId:2yx4q2bk84nj4 IsResourcePackage:False IsBundle:False IsDevelopmentMode:True IsPartiallyStaged:False

我想知道是否有人让这个样本工作。如果 Microsoft Edge 人员正在监视 stackoverflow,我真的很感激有人能帮助像我这样的早期采用者。:-)

4

2 回答 2

2

在 Chee Chen 的离线帮助下,我们能够找出 SecureInput 无法正常工作的原因。我真诚地感谢他不遗余力地提供帮助。在我的具体情况下,这是出了问题的地方。

  1. URL manifest.json 授予的权限区分大小写。当我第一次在边缘浏览器中输入 URL 时,我有一个错字。我输入为 SecureInput.html。如果您发现使用小写的secureinput.html 没有帮助,请尝试清理缓存。
  2. 当指令第一次无法正常工作时,我使用 Add-AppxPackage 部署扩展的方式。这样做时,我选择了 NativeMessagingHostInProcess\bin\x64\Debug\AppxManifest.xml 中的 AppxManifest 文件,而不是 NativeMessagingHostInProcess\bin\x64\Debug\AppX\AppxManifest.xml。需要注意的事情,如果你犯了同样的错误,请确保完全卸载 appx 包并重新开始。

所以这是我对其他人尝试样本的补充说明:-)

  1. 确保根据您的目标测试机器选择了正确的平台。Edge 作为 64 位进程运行,因此您的扩展需要针对该平台。
  2. 确保在 PasswordInputProtection->Program.cs 和 Extension->background.js 中选择了正确的 AppServiceName
  3. 我认为 PasswordInputProtection.csproj 在其路径中有一个硬编码的程序文件 (x86),如果您在 32 位机器上尝试该示例,它将中断。在记事本中编辑项目文件并在尝试之前对其进行修复。
  4. 确保正确配置 NativeMessagingHost 项目的输出路径...它需要是“bin\[Platform]\[Configuration]\AppX\”而不是“bin\[Platform]\[Configuration]\”
  5. 如果可以,请避免拼写错误,因为我看到很少有反馈或关于为什么事情不工作的详细日志。
于 2017-04-25T13:29:27.597 回答
-1

您是否尝试过按照文档中的部署步骤进行操作?实际步骤和顺序很重要:

  1. 构建和部署 NativeMessagingHostinProcess UWP 应用。

这将产生:

  • UWP 应用所需的必要二进制文件和文件。
  • AppX 文件夹。
  • AppXManifest.xml 基于 package.manifest 的内容。(此示例中 package.manifest 的内容已经过编辑,以包含 Edge 扩展的必要条目)。

    1. 构建 PasswordInputProtection 桌面桥。

这将:

  • 为这个项目构建二进制文件
  • 触发构建后事件,将 exe 的输出复制到 AppX 文件夹,并将 Extension 文件夹复制到 AppX 文件夹。

    1. 现在文件都准备好了,您需要注册 AppX。

有两种方法可以做到这一点:

  1. 从 PowerShell 运行 Add-AppxPackage: Add-AppxPackage -register [Path to AppX folder]\AppxManifest.xml

或者

  1. 部署 NativeMessagingHostInProcess 项目。Visual Studio 将运行相同的 PowerShell 脚本以从文件夹中注册 AppX。
于 2017-04-19T16:44:36.730 回答