正确打包Win32应用程序与Desktop Bridge UWP应用程序

xab*_*bre 5 wpf .net-native uwp desktop-bridge

我们已经有一个适用于x86,x64和ARM的UWP应用程序。关于商店认证,一切都很好,所有测试都通过了,包括.NET本机编译。

我们想使用Desktop Bridge(类似于此处指定的内容:https//blogs.msdn.microsoft.com/appconsult/2016/12/19/desktop-bridge-the-migrate-phase-invoking-a- win32-process-from-a-uwp-app /),将一个小型.NET 4.6.1 WPF侧踢应用添加到主要的UWP(x86,x64)版本中。WPF应用程序对某些本机dll具有三个依赖项(x86和x64),这些依赖项与该应用程序的其余部分打包在一起。

我们将WPF.exe应用程序和dll添加到了现有的UWP软件包(如上述博客文章中所指定-使用xcopy),并为HockeyApp构建了软件包。在本地和功能上,一切都适用于x86和x64。上载到ms开发人员中心后,不幸的是,商店认证失败并显示以下错误:

“程序包接受验证错误:必须由.NET Native工具链预先编译用Desktop Bridge转换并需要.NET Native框架的应用程序”

-但已经为UWP版本x86,x64启用了本机编译。

然后,我们尝试创建Windows应用程序打包项目(如此处所述:https : //docs.microsoft.com/zh-cn/windows/uwp/porting/desktop-to-uwp-packaging-dot-net#generate-packages -for-your-desktop-bridge-app),并将UWP应用程序和WPF都添加为依赖项。然后,我们创建了一个新的应用程序清单和商店关联(不幸的是,似乎无法重用UWP应用程序中的现有清单)。我们针对(x86 x64版本)构建了应用商店软件包,并在本地成功测试了所有内容。然后,我们上传了软件包以赢得开发人员中心,并再次遇到与以前相同的错误

“程序包接受验证错误:必须由.NET Native工具链预编译使用Desktop Bridge转换并需要.NET Native框架的应用程序”。

作为后续,我们从Windows应用程序打包项目中删除了UWP项目,并将WPF应用程序设置为入口点。然后,我们构建了一个存储包,将其上载,.NET本机编译错误消失了。太奇怪了...

UWP和WPF的组合(即使启用了UWP的本机编译)以某种方式导致此认证错误。我们感觉包装有问题。

我们确实希望使这种组合正常工作,否则我们将不得不退回到拥有两个单独的应用程序:一个纯UWP和一个打包的WPF配套应用程序,需要分别安装。我们真的希望我们不必这样做。我不确定我们在做什么错,目前我已经没有想法了。

PS:我们也知道我们需要填写并提交有关受限功能的表格:完全信任。但是在我们这样做之前,我们需要确保其他一切都很好。

Ste*_*SFT 5

更新2018年4月21日 ,不再需要下面说明的解决方法,实际上商店也不再接受。正确打包带有Win32扩展名的UWP应用的正确方法是使用新的VS包装项目,然后在VS中从该项目创建商店包装。有关详细信息,请参见此博客文章,有关此特定情况,请参见示例#3:https : //blogs.windows.com/buildingapps/2017/12/04/extend-desktop-application-windows-10-features-using-new-视觉工作室应用程序包装项目/#uvfV1r7937WrSkX2.97

以下是过时的答案

对于包含UWP和Desktop .NET二进制文件混合的软件包,您在商店提取过程中遇到了一个已知漏洞。商店团队正在积极解决此问题,因此它将自动用于此类提交。同时,您可以执行以下操作以解除阻止:

手动创建your.appxupload,如下所示(请参见下面的屏幕截图,以确保其清晰性):

  1. 转到AppPackage的输出文件夹
  2. 选择.appxsym文件和.appxbundle文件
  3. 从那些创建一个新的.zip文件
  4. 将.zip文件重命名为.appxupload
  5. 使用新的.appxupload文件重新提交到商店

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明