У меня есть файл манифеста и используйте команду mt в make-файле, чтобы добавить его в один из моих exe-файлов. После его установки. Если я использую DPI Awareness Enabler или проверяю реестр в HKEY_CURRENT_USER \ Software \ Microsoft \ Windows NT \ CurrentVersion \ AppCompatFlags \ Layers, он НЕ показывает ничего интересного. Обычно, если я вручную установил Compatibility to Windows 7 и отключил масштабирование DPI в свойстве файла, оно появится в DPI Awareness Enabler и в реестре.Как использовать манифест для управления отключить масштабирование и совместимость с DPI
Итак, я прав, что регистрация связана только с графическим интерфейсом, а не с фактическим файлом? Как будто я использую команду 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 кажется, что вы можете запускать mt с как -inputresource, так и -manifest. https://msdn.microsoft.com/en-us/library/windows/desktop/aa375649(v=vs.85).aspx Но я попробую. – Jerry