【问题标题】:How to use manifest to control disable DPI scaling and compatibility如何使用清单来控制禁用 DPI 缩放和兼容性
【发布时间】:2016-10-25 14:32:27
【问题描述】:

我有一个清单文件,并使用 makefile 中的 mt 命令将其添加到我的一个 exe 文件中。安装后。如果我使用 DPI Awareness Enabler 或检查 HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers 中的注册表,它不会显示任何有趣的内容。通常,如果我手动将兼容性设置为 Windows 7 并在文件属性中禁用 DPI 缩放,它将显示在 DPI Awareness Enabler 和注册表中。

所以我是否正确假设 register 仅链接到 GUI 而不是实际文件?就像我使用 mt 命令从 exe 中提取清单文件一样,我可以看到我的原始清单文件。

首先,我认为我的清单文件没有按预期工作。我测试它的方法是重现应用程序中的错误。解决方法是将兼容性设置为 Windows 7 并在文件属性中禁用 DPI 缩放。如果我只是使用已安装的文件,即使嵌入了清单文件,也不能解决问题。但是如果我在属性中手动更改它,它就解决了这个错误。

一些额外的信息,该应用程序是使用 VS2010 构建的,带有修补程序以修复清单警告。不知道是不是这个原因。

任何帮助将不胜感激。

这是清单文件

<?xml version="1.0" encoding="UTF-8"?>
 <assembly xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" manifestVersion="1.0">
   <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
     <application>
       <!-- Windows 7 -->
       <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />
     </application>
   </compatibility>
   <asmv3:application>
     <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
       <dpiAware>true</dpiAware>
     </asmv3:windowsSettings>
   </asmv3:application>
 </assembly>

这是Makefile中的部分

    ADD_CUSTOM_COMMAND(
        TARGET myExe
        POST_BUILD
        COMMAND "mt.exe" -manifest \"${CMAKE_SOURCE_DIR}\\res\\dpiaware.manifest\" -inputresource:\"$<TARGET_FILE:myExe>\"\;\#1 -outputresource:\"$<TARGET_FILE:myExe>\"\;\#1
        COMMENT "Adding display aware manifest..."
    )

【问题讨论】:

  • mt.exe 的可用性与铅气球相比是不利的。您不能同时使用 -manifest 和 -inputresource。后者获胜,现在您只是嵌入了 EXE 文件中已经存在的相同清单。省略 -inputresource 参数以获得成功。
  • 我不确定。从 MSDN 看来,您似乎可以使用 -inputresource 和 -manifest 运行 mt。 msdn.microsoft.com/en-us/library/windows/desktop/… 不过我会试一试的。

标签: windows visual-studio-2010 makefile manifest dpi


【解决方案1】:

好吧,我终于放弃了清单解决方案。碰巧我们使用wix。所以我在安装过程中向 HKLM->SOFTWARE->Microsoft->Windows NT->CurrentVersion->AppCompatFlags->Layers 添加了一些注册表值。

【讨论】:

    猜你喜欢
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-22
    • 1970-01-01
    • 1970-01-01
    • 2016-01-17
    • 2015-01-14
    相关资源
    最近更新 更多