Microsoft商店认证由于DPI意识而失败

阿提拉·萨斯(AttilaSzász)

我曾想将我的应用程序的新版本(WPF通过Desktop Bridge转换为UWP)发布到Microsoft Store,但由于以下警告而未通过认证:

  • 文件**。exe既没有在清单中列出PerMonitorV2,也没有调用DPI意识API来调用ex32:SetupDellAwarenessContext或user32!SetThreadDpiAwarenessContext。
  • 该应用程序***不支持DPI。

我有以下问题:

  1. 首先,我在去年年底发布了我的应用程序的第一个版本,并且DPI意识没有问题。这是新测试吗?

  2. 由于这只是警告,并且所有其他测试都通过,因此这可能是认证过程失败的原因吗?

  3. 所以我试图让我的应用程序了解DPI ...

基于描述,我调用了SetProcessDpiAwarenessContextfunction并检查了所有四个值。使用unawareSystem aware标记时,我的应用看起来很模糊,并且Per Monitor标记看起来不错,但是当我请求屏幕尺寸时,它返回了原始宽度和高度,不计算比例(我有150%的比例),因此我的窗口定位为屏幕的错误部分。问题是,如果仅要设置这四个标志,而没有一个作为默认标志(不设置任何内容),那么默认设置是什么?

好的,这里列出了5个标志,但是它们都不起作用,就好像没有设置任何标志一样。

非常感谢!

阿提拉·萨斯(AttilaSzász)

最后,我找到了解决这个问题的:不是试图让我的应用程序DPI知道从代码通过调用系统DLL相应的方法,我只好一个添加app.manifest文件WPF项目中。当我尝试这种方式时,与无效屏幕尺寸有关的问题就消失了。

是一个示例,其中应包含此清单文件。一个非常重要的事情是商店没有接受PerMonitor上述示例中设置。必须将其更改为PerMonitorV2(同样,这也是他们在错误消息中所要求的)。

通过将此设置添加到项目中,它在商店中通过了认证。令人惊讶的是,该警告是认证失败的原因。

添加清单文件后,还有一件事情,它应该连接到项目。您可以通过在<your_project_name>.csproj文件中添加以下代码来实现此目的此处示例):

<PropertyGroup>
  <ApplicationManifest>app.manifest</ApplicationManifest>
</PropertyGroup>

要查看整个图片,我还添加了答案的第二步

请享用!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章