[英]Microsoft store certification fails due to DPI awareness
我曾想將我的應用程序的新版本(WPF 轉換為帶有桌面橋的 UWP)發布到 Microsoft Store,但它未通過認證並顯示以下警告:
- 文件 **.exe 既沒有在清單中顯示 PerMonitorV2,也沒有調用 DPI Awareness API,例如:user32!SetProcessDpiAwarenessContext 或 user32!SetThreadDpiAwarenessContext。
- 該應用程序 *** 不是 DPI Aware。
我有以下問題:
首先,我在去年年底發布了我的應用程序的第一個版本,並且 DPI 意識沒有問題。 所以這是一個新的測試?
由於這只是一個警告並且所有其他測試都通過了,這可能是認證過程失敗的原因嗎?
所以我試圖讓我的應用程序 DPI 意識到......
基於此描述,我調用了SetProcessDpiAwarenessContext
函數並檢查了所有四個值。 使用unaware
和System 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.