Как создать проект Visual Studio с манифестом приложения из Qt?

Я могу создать проект MSVC (.vcxproj) из Qt, но проект не содержит файла манифеста приложения (Package.appxmanifest). Я попытался использовать переменную qmake WINRT_MANIFEST и убедиться, что CONFIG включает embed_manifest_exe, но я, должно быть, что-то неправильно понимаю.

Мой вопрос состоит из 2 частей:

  1. Как я могу определить манифест приложения в моем проекте Qt?
  2. Как этот манифест приложения может стать частью проекта MSVC, созданного Qt Creator / qmake?

Я использую Qt Creator 4.7.1, Qt 5.11.2 MSVC2017 64bit в Windows 10, и у меня есть сообщество Visual Studio 2017 установлен.

Что я уже пробовал

Создание проекта MSCV

На основе документации Qt для WinRT и справки от Сообщество Qt, я запускаю следующее (через QMAKE_POST_LINK, установленное в моем .pro):

windeployqt --release --compiler-runtime --qmldir path-to-my-qml-files
qmake -tp vc path-to-my-.pro -o path-to-build-folder/target-name.vcxproj CONFIG+=release

Они успешно создают проект MSVC, а папка выпуска содержит все библиотеки, необходимые для развертывания, и файл vcredist_xxx.exe.

Чтение документации Qt в манифесте приложения Windows

Документация Qt для развертывания Windows> Файлы манифеста:

При развертывании приложения, скомпилированного с помощью Visual Studio, необходимо предпринять некоторые дополнительные шаги. Во-первых, нам нужно скопировать файл манифеста, созданный при связывании приложения. … Начиная с Qt 4.1.3, для встраивания манифестов доступны следующие опции CONFIG: embed_manifest_dll embed_manifest_exe Обе опции включены по умолчанию.

Итак, насколько я понимаю, если опция CONFIG embed_manifest_exe включена, а она включена по умолчанию, то манифест должен быть встроен при запуске qmake.

Документация Qt для переменных Qmake> WINRT_MANIFEST:

Задает параметры, передаваемые в манифест приложения.

Они перечислены, многие из которых имеют значения по умолчанию.

См. также:  Ошибка при установке пакета Gurobi Julia

Так почему же не создается манифест приложения? Даже если я сам ничего не укажу, несомненно, комбинация WINRT_MANIFEST и CONFIG contains embed_manifest_exe должна означать, что манифест по умолчанию должен быть встроен.

Я также попытался установить свойства WINRT_MANIFEST (например, WINRT_MANIFEST.publisher), и я попытался создать свой собственный Manifest.xml и установить WINRT_MANIFEST=Manifest.xml. Но это не имеет значения.

Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 1
  1. Paul Masri-Stone

    Решение очень простое и «очевидное», но, поскольку оно не упоминается в документации, я не осознавал, что оно существует.

    Проблема здесь:

    Я использую Qt Creator 4.7.1, Qt 5.11.2 MSVC2017 64bit в Windows 10, и у меня установлено сообщество Visual Studio 2017.

    Манифест приложения используется приложениями универсальной платформы Windows (UWP), которые используют WinRT (например, приложения из Магазина Windows). В Qt для них есть другой набор сборочных комплектов. Например, Qt 5.11.2 для 32-разрядной версии UWP (MSVC 2017). Они используют mkspecs start winrt- и отображаются в средстве обслуживания / установщике как UWP x86 / 64 (MSVC 2017).

    При использовании одного из этих наборов с параметром CONFIG по умолчанию embed_manifest_exe вы получите проект Visual Studio с манифестом по умолчанию.

    Чтобы переопределить значения по умолчанию, укажите атрибуты в .pro, например. WINRT_MANIFEST.publisher или создайте отдельный файл манифеста и установите WINRT_MANIFEST=path-to-manifest-file. В последнем случае, если ваш файл манифеста представляет собой XML-файл той же формы, что и окончательный Package.appxmanifest, вам также понадобится WINRT_MANIFEST.CONFIG += verbatim.

    У меня аналогичная проблема с манифестом моего приложения веб-форм на VS2017 ce. Он не дает мне возможности добавить файл манифеста приложения в меню Project- ›Добавить -› веб-меню. Мне нужно предоставить права администратора для моего приложения. Как это сделать? person Paul Masri-Stone; 18.01.2019

    @AnitaMathew Эти вопросы и ответы касаются приложений, созданных в Qt и перенесенных в Visual Studio, а не приложений, созданных в Visual Studio. person Paul Masri-Stone; 18.01.2019

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: