2016-10-25 11 views
0

У меня есть файл манифеста и используйте команду 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..." 
    ) 
+0

Удобство использования mt.exe неблагоприятно сказывается на свинцовом шаре. Вы не можете использовать как -manifest, так и -inputresource. Последний выигрывает, прямо сейчас вы просто вставляете тот же манифест, который уже присутствует в EXE-файле. Опустите аргумент -inputresource, чтобы продвигаться вперед. –

+0

Я не уверен в этом. Из MSDN кажется, что вы можете запускать mt с как -inputresource, так и -manifest. https://msdn.microsoft.com/en-us/library/windows/desktop/aa375649(v=vs.85).aspx Но я попробую. – Jerry

ответ

0

Хорошо, я, наконец, отказаться от манифеста решения. Просто так мы используем wix. Поэтому во время установки я добавляю некоторые значения реестра в HKLM-> SOFTWARE-> Microsoft-> ​​Windows NT-> CurrentVersion-> AppCompatFlags-> Layers.