在 Visual Studio 中签署 Edge WebExtension 和 UWP 应用程序

Signing Edge WebExtension and UWP app in Visual Studio

我正在为 Edge 开发 WebExtension。我实施了 https://docs.microsoft.com/en-us/windows/uwp/launch-resume/how-to-create-and-consume-an-app-service 中的示例,它正在运行。创建并签署一个独立的 WebExtension 工作正常,结果 .appx 安装扩展没有问题。但现在我需要一个 AppServiceProvider 来启用本地消息传递。我想构建一个 .appx 文件来安装扩展和 AppServiceProvider。

我在 AppServiceProvider 项目下的文件夹 Extension 中添加了一个自己的 Chrome WebExtenion 并进行了调整,以便根据文档进行通信。我尝试通过双击生成的 AppServiceProvider_1.0.0.0_x86_Debug.appx 在 Edge 和 AppServiceProvider 中安装 WebExtension,其中包括两者。但是我收到一条错误消息,提示我要么必须为此应用程序包安装新证书,要么需要一个具有受信任证书的新应用程序包。我按照 https://docs.microsoft.com/en-us/windows/desktop/appxpkg/how-to-create-a-package-signing-certificate 中的说明创建了一个用于测试目的的自签名证书,并将其添加到 TrustedPeople 证书存储中。对于独立的 WebExtension,这是有效的,但签名过程在 Visual Studio 中如何工作?

我的 .pfx 文件要包含在 Visual Studio 中的什么地方?

还有其他我必须考虑的事情吗?

任何帮助将不胜感激,谢谢!

如何在 Visual Studio

中签署程序集

您使用项目属性 window 的签名选项卡对应用程序或组件进行签名(右键单击解决方案资源管理器中的项目节点和 select 属性,或在快速启动 window,或在解决方案资源管理器中按 Alt+Enter)。 Select 签名选项卡,然后 select 对程序集签名复选框。

指定密钥文件。如果您选择创建新的密钥文件,新的密钥文件始终以 .pfx 格式创建。您需要新文件的名称和密码。

Warning

You should always protect your key file with a password to prevent someone else from using it. You can also secure your keys by using providers or certificate stores.

您也可以指向您已经创建的密钥。有关创建密钥的详细信息,请参阅创建 public-私钥对。

如果您只能访问 public 密钥,您可以使用延迟签名来延迟分配密钥。通过 select 仅延迟签名复选框启用延迟签名。延迟签名的项目没有 运行,您无法调试它。但是,您可以使用带 -Vr 选项的 Sn.exe 强名称工具在开发过程中跳过验证。

参考:

How to sign an assembly in Visual Studio

双击 AppServiceProvider 项目中的 Package.appxmanifest,将打开一个包含多个类别的菜单。在 Packaging 类别中,单击发布者字段旁边的 Choose Certificate... 按钮并选择 .pfx 文件。

通过 Create App Packages 向导创建的 appx 包将使用之前配置的私钥进行签名。

The app manifest publisher name must exactly match the subject name of the signing.

appx 可以通过双击安装并且正在运行。但是WebExtension不会安装在Edge中。

参考文献:

Package a UWP app with Visual Studio

Sign an app package using SignTool