使用 Win32 应用程序正确打包桌面桥 UWP 应用程序
Properly package a Desktop Bridge UWP App with a Win32 App
我们已经有一个适用于 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 side-kick应用程序到主要的 UWP(x86、x64)版本。 WPF 应用程序在某些本机 dll 上具有三个依赖项(x86 和 x64),这些依赖项与应用程序的其余部分打包在一起。
我们将 WPF.exe 应用程序和 dll 添加到现有的 UWP 包中(如上述博客 post 中指定的 - 使用 xcopy)并构建了包对于 HockeyApp。在本地和功能上,一切都适用于 x86 和 x64。上传到 ms 开发中心后,不幸的是商店认证失败并出现以下错误:
"Package acceptance validation error: Apps converted with the Desktop
Bridge and that require the .NET Native framework must be pre-compiled
by the .NET Native tool chain"
-- 但已经为 UWP 版本 x86、x64 启用了本机编译。
然后我们尝试创建一个 Windows 应用程序打包项目(如此处所述:https://docs.microsoft.com/en-us/windows/uwp/porting/desktop-to-uwp-packaging-dot-net#generate-packages-for-your-desktop-bridge-app)并将 UWP 应用程序和 WPF 添加为依赖项。然后我们创建了一个新的应用程序清单和商店关联(不幸的是,似乎无法重用 UWP 应用程序中的现有清单)。我们为(x86 x64 版本)构建了应用程序商店包,并成功地在本地测试了所有内容。然后我们将包上传到 win dev center 并再次遇到与之前相同的错误
"Package acceptance validation error: Apps converted with the Desktop
Bridge and that require the .NET Native framework must be pre-compiled
by the .NET Native tool chain".
作为后续行动,我们从 Windows 应用程序打包项目中删除了 UWP 项目,并将 WPF 应用设置为入口点。然后我们构建了一个商店包,上传了它,.NET 本机编译错误消失了。这很奇怪...
UWP 和 WPF 的组合(即使为 UWP 启用了本机编译)以某种方式导致了此认证错误。我们感觉包装有问题。
我们真的很想让这种组合发挥作用,否则我们将不得不退回到拥有两个单独的应用程序:一个纯 UWP 和一个需要单独安装的打包 WPF 配套应用程序。我们真的希望我们不必这样做。我不确定我们做错了什么,目前我 运行 没有想法。
PS:我们也知道我们需要填写并提交一份关于受限能力的表格:完全信任。但在我们这样做之前,我们需要确保其他一切都很好。
2018 年 4 月 21 日更新
不再需要下面解释的解决方法,事实上,商店将不再接受。正确打包带有 Win32 扩展的 UWP 应用程序的正确方法是使用新的 VS 打包项目,然后在 VS 中创建该项目的商店包。详细信息在此博客 post 中,请参阅此特定案例的示例 #3:
https://blogs.windows.com/buildingapps/2017/12/04/extend-desktop-application-windows-10-features-using-new-visual-studio-application-packaging-project/#uvfV1r7937WrSkX2.97
下面的答案已过时
对于包含 UWP 和桌面 .NET 二进制文件的组合的包,您在商店摄取过程中遇到了一个已知缺陷。商店团队正在积极解决此问题,因此它将自动处理此类提交。在此期间,您可以执行以下操作来解锁:
手动创建 your.appxupload 如下(请参阅下面的屏幕截图以了解清楚):
- 转到 AppPackage 的输出文件夹
- Select .appxsym 文件和 .appxbundle 文件
- 从这些文件创建一个新的 .zip 文件
- 将 .zip 文件重命名为 .appxupload
- 使用新的 .appxupload 文件重新提交到应用商店
我们已经有一个适用于 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 side-kick应用程序到主要的 UWP(x86、x64)版本。 WPF 应用程序在某些本机 dll 上具有三个依赖项(x86 和 x64),这些依赖项与应用程序的其余部分打包在一起。
我们将 WPF.exe 应用程序和 dll 添加到现有的 UWP 包中(如上述博客 post 中指定的 - 使用 xcopy)并构建了包对于 HockeyApp。在本地和功能上,一切都适用于 x86 和 x64。上传到 ms 开发中心后,不幸的是商店认证失败并出现以下错误:
"Package acceptance validation error: Apps converted with the Desktop Bridge and that require the .NET Native framework must be pre-compiled by the .NET Native tool chain"
-- 但已经为 UWP 版本 x86、x64 启用了本机编译。
然后我们尝试创建一个 Windows 应用程序打包项目(如此处所述:https://docs.microsoft.com/en-us/windows/uwp/porting/desktop-to-uwp-packaging-dot-net#generate-packages-for-your-desktop-bridge-app)并将 UWP 应用程序和 WPF 添加为依赖项。然后我们创建了一个新的应用程序清单和商店关联(不幸的是,似乎无法重用 UWP 应用程序中的现有清单)。我们为(x86 x64 版本)构建了应用程序商店包,并成功地在本地测试了所有内容。然后我们将包上传到 win dev center 并再次遇到与之前相同的错误
"Package acceptance validation error: Apps converted with the Desktop Bridge and that require the .NET Native framework must be pre-compiled by the .NET Native tool chain".
作为后续行动,我们从 Windows 应用程序打包项目中删除了 UWP 项目,并将 WPF 应用设置为入口点。然后我们构建了一个商店包,上传了它,.NET 本机编译错误消失了。这很奇怪...
UWP 和 WPF 的组合(即使为 UWP 启用了本机编译)以某种方式导致了此认证错误。我们感觉包装有问题。
我们真的很想让这种组合发挥作用,否则我们将不得不退回到拥有两个单独的应用程序:一个纯 UWP 和一个需要单独安装的打包 WPF 配套应用程序。我们真的希望我们不必这样做。我不确定我们做错了什么,目前我 运行 没有想法。
PS:我们也知道我们需要填写并提交一份关于受限能力的表格:完全信任。但在我们这样做之前,我们需要确保其他一切都很好。
2018 年 4 月 21 日更新 不再需要下面解释的解决方法,事实上,商店将不再接受。正确打包带有 Win32 扩展的 UWP 应用程序的正确方法是使用新的 VS 打包项目,然后在 VS 中创建该项目的商店包。详细信息在此博客 post 中,请参阅此特定案例的示例 #3: https://blogs.windows.com/buildingapps/2017/12/04/extend-desktop-application-windows-10-features-using-new-visual-studio-application-packaging-project/#uvfV1r7937WrSkX2.97
下面的答案已过时
对于包含 UWP 和桌面 .NET 二进制文件的组合的包,您在商店摄取过程中遇到了一个已知缺陷。商店团队正在积极解决此问题,因此它将自动处理此类提交。在此期间,您可以执行以下操作来解锁:
手动创建 your.appxupload 如下(请参阅下面的屏幕截图以了解清楚):
- 转到 AppPackage 的输出文件夹
- Select .appxsym 文件和 .appxbundle 文件
- 从这些文件创建一个新的 .zip 文件
- 将 .zip 文件重命名为 .appxupload
- 使用新的 .appxupload 文件重新提交到应用商店