0

我尝试使用SecureInput扩展示例演示MS Edge浏览器扩展中的NativeMessaging功能,并且遇到使用VS社区版2017构建后部署扩展的问题。我没有Universal Windows平台应用程序开发经验,所以我很抱歉,如果有一个非常明显的答案,我不知道。但样品中以下readme.md不起作用,所以在这里张贴了这个问题...部署SecureInput MS Edge Extension本机消息示例的问题

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

遵循的步骤...

  1. 原来开发人员模式,在“使用开发者功能”
  2. 已启用在Edge浏览器的about:标志中启用扩展程序开发人员功能。
  3. 将样本作为zip文件下载到本地计算机。
  4. 复制的SecureInput.html到我的本地网络服务器
  5. 加载SecureInput.sln在VS 社区版2017年出的两个选项..是InProc或OutOfProc,我 想尝试InProc方式。因此需要在构建配置管理器中选择 NativeMessagingHostInProcess中的项目。其他 使用的设置...调试 - 配置;任何CPU - 主动解决方案 平台; NativeMessagingHostInProcess - x64项目平台,因为我 正在使用64位Windows和边缘作为64位过程运行,因为 不错;左边休息作为默认值。
  6. 使用调试配置和任何CPU解决方案平台构建了整个解决方案。

部署摘要

  1. 内置整套SecureInput溶液。
  2. 通过运行安装AppX中包 添加-AppxPackage -register [PathtoSecureInputSolutionFolder] NativeMessagingHostInProcess \ BIN \ 64 \调试\ AppxManifest.xml
  3. 建立或在运行从升高的电源外壳提示添加-AppXPackage期间没有错误。

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

其他一些细节

  1. 我使用的64位赢得10创建(1703 - OS构建16063.128)
  2. 我怀疑附加AppxPackage未能默默添加扩展。详细的国旗也不给我任何线索。
  3. Get-AppXPackage显示新添加的AppX软件包。

名称:ae24a957-5239-43b2-a36c-b96805a58ade 出版商:CN = MSFT 架构:X64 RESOURCEID: 版本:1.0.0.0 PackageFullName:ae24a957-5239-43b2-a36c-b96805a58ade_1.0.0 。0_x64__2yx4q2bk84nj4 INSTALLLOCATION:[PathtoSecureInputSolutionFolder] \ NativeMessagingHostInProcess \ BIN \ 64 \调试 IsFramework:假 PackageFamilyName:ae24a957-5239-43b2-a36c-b96805a58ade_2yx4q2bk84nj4的publisherId:2yx4q2bk84nj4 IsResourcePackage:假 IsBundle:假 IsDevelopmentMode:真 IsPartiallyStaged:假

我想知道是否有人得到这个示例工作。如果Microsoft Edge人员正在监控计算器,我真的很感激,如果有人可以跳进来帮助像我这样的早期使用者。 :-)

回答

-1

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

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

这将产生:

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

    1. 构建PasswordInputProtection桌面桥接器。

这将:

  • 构建二进制这个项目
  • 触发一个生成后事件,将exe文件的输出复制到AppX中的文件夹,并复制推广文件夹添加到AppX文件夹。

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

有两种方法来实现:

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

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

感谢Chee的快速回复。我认为部署步骤中的这些步骤并不明确,这就是我必须制作原始帖子的原因。这里是我的问题 – user1856712

+0

1.“任何CPU”是什么需要在建设时用于解决方案平台?我试图在Win 10 x64机器上安装该示例。 2.如果您已经在第1步中部署NativeMessingHostInProcess并在第2步中构建PasswordInputProtection(如所示),那么在部署NativeMessagingHostinProcess之前是否需要使用AppX文件夹? – user1856712

+0

“运行Add-AppxPackage从PowerShell的:添加-AppxPackage -register [路径AppX中的文件夹] \ AppxManifest.xml” 当我试图上面做的,我遇到了依赖问题 Windows无法安装包XXXXXX,因为这个包依赖在一个无法找到的框架上。提供框架“Microsoft.NET.CoreRuntime.1.0”发布... 然后,我试图提供依赖关系的参数-Dependencypath,我再次被打了...... 拒绝从Microsoft.NET注册的请求。 CoreRuntime.2.1.appx,因为清单不在软件包根目录中。 我做错了什么? – Ganesh2

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. 确保你选择正确的平台,按您的目标试验机的补充说明。边缘以64位流程运行,因此您的扩展需要针对该平台。
  2. 确保正确AppServiceName在PasswordInputProtection-> Program.cs是选择和扩展 - > background.js
  3. 我认为PasswordInputProtection.csproj在其路径硬编码程序文件(x86)的,如果你尝试这将打破在32位机器上进行采样。在记事本中编辑项目文件并在尝试之前修复它。
  4. 确保NativeMessagingHost项目的输出路径配置正确...它需要是“bin \ [Platform] \ [Configuration] \ AppX \”而不是“bin \ [Platform] \ [Configuration] \”
  5. Avoid如果可以的话,可以输入错别字,因为我几乎看不到任何反馈或冗长的日志,说明为什么事情不起作用。
+0

这非常有帮助。似乎用AppX包装似乎能够同时识别x86和x64,这样构建就可以制作出适合加载的单个包! –