【问题标题】:Problems deploying SecureInput MS Edge Extension native messaging sample部署 SecureInput MS Edge Extension 本机消息传递示例的问题
【发布时间】:2017-09-14 22:33:37
【问题描述】:

我正在试用 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 中加载 SecureInput.sln 社区版 2017 有两个选项.. InProc 或 OutOfProc,我 想试试 InProc。所以需要选择 Project in 构建配置管理器中的 NativeMessagingHostInProcess。其他 使用的设置... 调试 - 配置;任何 CPU – 主动解决方案 平台; NativeMessagingHostInProcess – 我的 x64 项目平台 正在使用 64 位 Windows 和 edge 作为 64 位进程运行 好吧;默认为左侧休息。
  6. 使用调试配置和任何 CPU 解决方案平台构建了整个解决方案。

部署摘要

  1. 构建了整个 SecureInput 解决方案。
  2. 通过运行安装 AppX 包 Add-AppxPackage -register [PathtoSecureInputSolutionFolder] NativeMessagingHostInProcess\bin\x64\Debug\AppxManifest.xml
  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 包。

名称:ae24a957-5239-43b2-a36c-b96805a58ade 发布者:CN=msft 架构:X64 资源编号: 版本:1.0.0.0 包全名:ae24a957-5239-43b2-a36c-b96805a58ade_1.0.0.0_x64__2yx4q2bk84nj4 安装位置:[PathtoSecureInputSolutionFolder]\NativeMessagingHostInProcess\bin\x64\Debug 是框架:假 PackageFamilyName : ae24a957-5239-43b2-a36c-b96805a58ade_2yx4q2bk84nj4 PublisherId : 2yx4q2bk84nj4 IsResourcePackage : 假 IsBundle:错误 IsDevelopmentMode:真 IsPartiallyStaged : 错误

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

【问题讨论】:

    标签: windows-10-universal microsoft-edge chrome-native-messaging microsoft-edge-extension desktop-bridge


    【解决方案1】:

    在 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. 如果可以,请避免输入错误,因为我看到的反馈很少,或者关于为什么事情不工作的详细日志。

    【讨论】:

    • 这很有帮助。似乎 AppX 打包似乎能够同时识别 x86 和 x64,构建将能够使单个包适合加载到任何一个!
    【解决方案2】:

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

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

    这将生成:

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

      1. 构建 PasswordInputProtection 桌面桥。

    这将:

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

      1. 现在文件已准备就绪,您需要注册 AppX。

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

    1. 从 PowerShell 运行 Add-AppxPackage:Add-AppxPackage -register [AppX 文件夹路径]\AppxManifest.xml

    1. 部署 NativeMessagingHostInProcess 项目。 Visual Studio 将运行相同的 PowerShell 脚本以从文件夹中注册 AppX。

    【讨论】:

    • 感谢 Chee 的快速回复。我认为部署步骤中的这些步骤并不清楚,这就是我不得不发表原始帖子的原因。这是我的问题
    • 1. “任何CPU”是构建时需要用于解决方案平台的吗?我正在尝试在 Win 10 x64 机器上安装示例。 2. 如果您已经在步骤 1 中部署 NativeMessingHostInProcess 并在步骤 2 中构建 PasswordInputProtection,是否意味着在我们部署 NativeMessagingHostinProcess 之前不需要 AppX 文件夹?
    • "从 PowerShell 运行 Add-AppxPackage:Add-AppxPackage -register [Path to AppX folder]\AppxManifest.xml" 当我尝试执行上述操作时,我遇到了依赖问题 Windows 无法安装包 xxxxxx 因为这个包依赖于一个找不到的框架。提供由 ... 发布的框架“Microsoft.NET.CoreRuntime.1.0”然后我尝试使用参数 -Dependencypath 提供依赖关系,但我再次被打了...拒绝来自 Microsoft.NET.CoreRuntime.2.1 的注册请求。 appx 因为清单不在包根目录中。我做错了吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-26
    • 1970-01-01
    • 2015-05-27
    相关资源
    最近更新 更多