打包桌面应用的已知问题

本文包含为桌面应用创建 MSIX 包时可能发生的已知问题。

收到错误MSB4018“GenerateResource”任务意外失败

在尝试将附属程序集转换为包资源索引 (PRI) 文件时,可能会发生这种情况。

我们了解了此问题,并正在努力制定更长期的解决方案。 作为临时解决方法,可以通过将此 XML 行添加到托管项目文件中的第一个 PropertyGroup 元素来禁用资源生成器:

<AppxGeneratePrisForPortableLibrariesEnabled>false</AppxGeneratePrisForPortableLibrariesEnabled>

带有错误代码 0x139 (KERNEL_SECURITY_CHECK_FAILURE) 的蓝屏

从 Microsoft 应用商店安装或启动某些应用后,计算机可能会意外重新启动并出现错误:0x139(KERNEL_SECURITY_CHECK_ FAILURE)。

已知的受影响的应用包括 Kodi、JT2Go、Ear Trumpet、Teslagrad 等。

Windows 更新(版本 14393.351 - KB3197954)于 10/27/16 发布,其中包括解决此问题的重要修补程序。 如果遇到此问题,请更新计算机。 如果由于计算机在登录前重启而无法更新电脑,则应使用系统还原将系统恢复到安装受影响应用之一之前的某个时间点。 有关如何使用系统还原的信息,请参阅 Windows 10 中的恢复选项

如果更新无法解决问题,或者不确定如何恢复电脑,请联系 Microsoft支持部门

如果你是开发人员,你可能希望阻止在不包含此更新的 Windows 版本中安装打包的应用程序。 请注意,通过执行此作,应用程序将不适用于尚未安装更新的用户。 若要将应用程序的可用性限制为已安装此更新的用户,请修改 AppxManifest.xml 文件,如下所示:

<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.14393.351" MaxVersionTested="10.0.14393.351"/>

有关 Windows 更新的详细信息,请参阅:

对应用进行签名时可能出现的常见错误

发布服务器和证书不匹配导致 Signtool 错误“错误: SignerSign() 失败”(-2147024885/0x8007000b)

Windows 应用包清单中的发布者条目必须与用于签名的证书的主体匹配。 可以使用以下任一方法查看证书的主题。

选项 1:Powershell

运行以下 PowerShell 命令。 .cer或 .pfx 可用作证书文件,因为它们具有相同的发布者信息。

(Get-PfxCertificate <cert_file>).Subject

选项 2:文件资源管理器

在文件资源管理器中双击证书,选择“详细信息”选项卡,然后在列表中选择“主题”字段。 然后,可以复制内容。

选项 3:CertUtil

在命令行中针对 PFX 文件运行 certutil,并从输出中复制 “主题” 字段。

certutil -dump <cert_file.pfx>

错误的 PE 证书(0x800700C1)

当包包含已损坏证书的二进制文件时,可能会发生这种情况。 下面是发生这种情况的一些原因:

  • 证书的开头不在图像的末尾。

  • 证书大小不是正数。

  • 证书开头不在 32 位可执行文件的 IMAGE_NT_HEADERS32 结构之后或 64 位可执行文件的 IMAGE_NT_HEADERS64 结构之后。

  • 证书指针未正确指向 WIN_CERTIFICATE 结构。

若要查找包含错误 PE 证书的文件,请打开 命令提示符,并将名为 APPXSIP_LOG 值 1 的环境变量设置为 1。

set APPXSIP_LOG=1

然后,在 命令提示符下再次对应用程序进行签名。 例如:

signtool.exe sign /a /v /fd SHA256 /f APPX_TEST_0.pfx C:\Users\Contoso\Desktop\pe\VLC.appx

有关包含不良 PE 证书的文件的信息将显示在 控制台窗口中。 例如:

...

ERROR: [AppxSipCustomLoggerCallback] File has malformed certificate: uninstall.exe

...   

后续步骤

有疑问? 在 Stack Overflow 上询问我们。 我们的团队会监视这些标记