簡體   English   中英

微軟商店認證因 DPI 意識而失敗

[英]Microsoft store certification fails due to DPI awareness

我曾想將我的應用程序的新版本(WPF 轉換為帶有桌面橋的 UWP)發布到 Microsoft Store,但它未通過認證並顯示以下警告:

  • 文件 **.exe 既沒有在清單中顯示 PerMonitorV2,也沒有調用 DPI Awareness API,例如:user32!SetProcessDpiAwarenessContext 或 user32!SetThreadDpiAwarenessContext。
  • 該應用程序 *** 不是 DPI Aware。

我有以下問題:

  1. 首先,我在去年年底發布了我的應用程序的第一個版本,並且 DPI 意識沒有問題。 所以這是一個新的測試?

  2. 由於這只是一個警告並且所有其他測試都通過了,這可能是認證過程失敗的原因嗎?

  3. 所以我試圖讓我的應用程序 DPI 意識到......

基於描述,我調用了SetProcessDpiAwarenessContext函數並檢查了所有四個值。 使用unawareSystem aware標志,我的應用程序看起來很模糊,而Per Monitor標志看起來不錯,但是當我請求屏幕尺寸時,它返回了原始寬度和高度,不計算比例(我有 150% 的比例),所以我的窗戶被定位到屏幕的錯誤部分。 問題是,如果只有這 4 個標志要設置並且它們都沒有作為默認值(不設置任何內容),那么默認設置是什么?

好的, 這里列出了 5 個標志,但它們都沒有工作,就好像沒有設置任何東西一樣。

非常感謝!

最后,我找到了該問題的解決方案:我沒有嘗試通過從系統 DLL 調用相應的方法來使我的應用程序 DPI 從代碼中app.manifest ,而是必須向WPF項目添加一個app.manifest文件 當我以這種方式嘗試時,與無效屏幕尺寸相關的問題消失了。

是一個應該包含此清單文件的示例。 一個非常重要的事情是 Store 沒有接受PerMonitor設置,因為它在上面的例子中。 它必須更改為PerMonitorV2 (順便說一下,這也是他們在錯誤消息中提出的要求)。

通過將此設置添加到項目中,它通過了商店的認證。 令人驚訝的是,這個警告是認證失敗的原因。

添加清單文件后的另一件事,它應該連接到項目。 您可以通過將以下代碼添加到<your_project_name>.csproj文件( 此處的示例)來實現:

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

要查看整個圖片,我還添加了答案中的第二步。

享受!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM