Как сгенерировать манифест visual studio
Сборочные манифесты используются для объявления ряда вещей об исполняемом файле, например:
Если я хочу отключить масштабирование DPI, потому что я хороший разработчик:
Я могу заявить, что я был спроектирован и протестирован в Windows 7, и я должен продолжать зависеть от любых ошибок в Windows 7
Я могу заявить, что я хороший разработчик и не нуждаюсь в виртуализации файлов и реестра
Я могу заявить, что я зависит от конкретной версии 6 библиотеки Microsoft Common Controls:
Я могу заявить, что я зависит от конкретной версии GDI +:
В старые времена мы создали бы ресурс script ( *.rc ), например:
wumpa.rc
добавьте этот файл в проект, и компилятор будет компилировать файл .rc ; включая ресурсы в окончательном исполняемом изображении.
Как добавить ресурс script в проект в Visual Studio 2010?
Как добавить манифест сборки в проект в Visual Studio 2010?
Примечание. Любое решение должно работать в среде с контролем источника и несколькими разработчиками (например, жестко закодированные пути, возможно, не установленные двоичные файлы будут разрушать сборку, а не работать).
Бонус-чат
Обновить: Майкл Фокс предлагает, чтобы диалог свойств проекта можно было использовать для включения манифеста сборки, но он не указывает, где:
Обновить: все, что я пробовал:
- На экране свойств проекта выберите Приложение. Выберите параметр радио Значок и манифест. В Манифест оставьте вариант по умолчанию Embed manifest with default settings :
Не работает, потому что он содержит манифест с настройками по умолчанию, а не мои настройки.
В Манифест измените параметр комбо для Create application without a manifest :
Не работает, потому что в нем нет манифеста
В разделе Ресурсы выберите параметр Файл ресурсов:
Не работает, потому что вы не можете выбрать манифест сборки (или ресурс script, который содержит манифест сборки)
В разделе Ресурсы выберите параметр Ресурсный файл, затем введите путь к XML файлу манифеста сборки:
Не работает, потому что Visual Studio задыхается, когда отображается манифест сборки:
- В разделе Ресурсы выберите параметр Ресурсный файл, затем введите путь к ресурсу script:
Не работает, потому что Visual Studio задыхается, когда отображается ресурс script:
Добавьте AssemblyManifest.xml в мой проект, а затем найдите его в поле Манифест:
Не работает, потому что файл манифеста Ассамблеи не указан в качестве опции
У меня есть еще дюжина других вещей, которые я могу сохранить для скриншотов (добавьте файл .rc в решение, найдите его в раскрывающемся списке, выберите "no manifest" и измените действие сборки wumpa.rc на разные вещи, постройте .rc , используя отдельный компилятор ресурсов, либо вручную, либо шаг предварительной сборки /msbuild, и выберите этот .res файл в качестве моего ресурса). я перестану добавлять дополнительный объем к моему вопросу и надеюсь на ответ.
ОТВЕТЫ
Ответ 1
Если вы хотите добавить пользовательскую информацию в манифест приложения, выполните следующие действия:
- Щелкните правой кнопкой мыши проект в обозревателе решений.
- Нажмите "Добавить новый элемент".
- Выберите "Файл манифеста приложений".
Это добавляет файл с именем app.manifest в ваш проект, который вы можете открыть и изменить по своему желанию.
Аналогичные шаги со снимками экрана сняты с Объявление управляемых приложений как DPI-Aware на MSDN:
В обозревателе решений щелкните правой кнопкой мыши проект, выберите Добавить и нажмите Новый элемент.
В диалоговом окне Добавить новый элемент выберите Файл манифеста приложений, а затем нажмите Добавить. Появится файл app.manifest.
Скопируйте и вставьте следующий текст в файл app.manifest и сохраните его.
В обозревателе решений щелкните правой кнопкой мыши проект и выберите Свойства, чтобы убедиться, что app.manifest используется.
Ваше приложение теперь проявляется, как требуется, для "созданного для Windows" и
- отключает виртуализацию файлов и реестра
- отключает масштабирование DWM приложений
- объявляет, что вы были разработаны и протестированы в Windows 7 и Windows Vista.
- принимает зависимость от библиотеки Common Controls версии 6 (что позволяет использовать визуальные стили с помощью общих элементов управления)
Ответ 2
У меня установлен Visual Studio 2010 Professional с пакетом обновления 1 (SP1). Я работаю на Windows 7 Ultimate 64-бит. Если я следую этим инструкциям, свойства проекта показывают "Вставить манифест с настройками по умолчанию" в блоке ресурсов, а также параметр отключен! Когда я создаю, манифест не внедряется в DLL, как я проверял, открывая DLL в представлении ресурсов.
- Найдите добавленный файл app.manifest в обозревателе решений
- Щелкните правой кнопкой мыши и выберите "Свойства"
- Измените свойство Build Action на "None" на "Embedded Resource"
- Перестроить
Файл манифеста встроен правильно, что я могу проверить, загрузив DLL в представление ресурса. Параметр Manifest в свойствах приложения по-прежнему отображается как "Вставить манифест с настройками по умолчанию" и по-прежнему отключен.
Ответ 3
В Visual Studio 2008 это можно сделать в окне "Свойства проекта". Я почти уверен, что в 2010 году то же самое. Правой кнопкой мыши выберите свой проект, выберите свойства и на вкладке приложения вы можете выбрать манифест. Сначала вы должны добавить его в свой проект, но вы можете сделать это легко, добавив существующий файл.
при построении проекта с Visual Studio Visual Studio создает манифест пакета (AppxManifest.xml), который содержит сведения, необходимые системе для развертывания, вывода или обновления приложения универсальная платформа Windows (UWP).
Существует два вида файлов манифеста пакета приложения, которые могут возникнуть при разработке приложения с Visual Studio
- Package.appxmanifest
Это XML-файл стиля, используемый разработчиками для настройки сведений о приложении, таких как сведения об издателе, логотипы, архитектуры процессоров и т. д. Это легко настраиваемая временная версия манифеста пакета приложения, используемая во время разработки приложения. - AppxManifest.xml
этот файл создается Visual Studio процессом сборки и основывается на информации в файле Package. appxmanifest. Это окончательная версия манифеста пакета приложения, используемого с опубликованными и загруженные неопубликованные приложениями. Если в файл Package. appxmanifest вносятся какие либо обновления, необходимо перестроить проект, чтобы просмотреть обновления в файле AppxManifest.xml.
Общие сведения о процессе упаковки см. в статье Упаковка приложения UWP с помощью Visual Studio.
Проверка манифеста приложения
- Синтаксическая проверка
Visual Studio проверяет, соответствуют ли все данные в манифесте приложения схеме манифеста приложения. - Семантическая проверка
Visual Studio предоставляет рекомендации по ожидаемым данным на основе контекста сведений.
Если в этих разделах не упоминается искомое поле, оно формируется из данных, которые могут быть настроены отдельно, или по умолчанию из схемы манифеста.
Создание содержимого манифеста
Visual Studio заполняет поля в следующих таблицах при формировании файла AppxManifest.xml для пакета приложения.
Удостоверение
Identity Раздел манифеста приложения содержит следующие поля.
- По умолчанию значением этого поля является созданный GUID.
- если вы связываете приложение с Microsoft Store или вызываете команду Store-> Create app packages. , а затем выполняете вход с помощью учетной записи разработчика, значение этого поля извлекается из связанного приложения в Microsoft Store или центре партнеров.
- Если вы вызываете команду Store-> Create App Packages. , но не входите с помощью учетной записи разработчика, значение этого поля берется из манифеста источника.
- По умолчанию значением этого поля является имя пользователя.
- если приложение связывается с Microsoft Store или вызывается команда Store-> Create app packages. , а затем выполняется вход с использованием учетной записи разработчика, значением этого поля является издатель, связанный с учетной записью.
- Если вы вызываете команду Store-> Create App Packages. , но не входите с помощью учетной записи разработчика, значение этого поля соответствует полю субъекта тестового сертификата, который использовался для подписания пакета приложения.
Ниже приведен пример Identity выходного XML.
Свойства
Properties Раздел манифеста приложения содержит поля, приведенные в следующей таблице.
- По умолчанию значением этого поля является имя пользователя.
- если вы связываете приложение с Microsoft Store или вызываете команду Store-> Create app packages. , а затем выполните вход с помощью учетной записи разработчика, tha значение этого поля соответствует строке PublisherDisplayName, связанной с вашей учетной записью разработчика.
- Если вы вызываете команду Store-> Create App Packages. , но не входите с помощью учетной записи разработчика, значение этого поля будет иметь имя пользователя, если в файле Package. appxmanifest не указано иное.
- По умолчанию значением этого поля является имя проекта.
- если приложение связывается с Microsoft Store или вызывается команда Store-> Create app packages. , а затем выполняется вход с использованием учетной записи разработчика, значение этого поля заполняется в соответствии со следующими правилами:
- Если указать это значение в исходном манифесте, а значение начинается с @ (что означает, что вы хотите локализовать это значение), значение этого поля будет соответствовать указанному.
- Если выбранное приложение имеет только одно имя, значением будет это имя.
- Если выбранное приложение имеет несколько имен, но исходный манифест не локализован, в качестве значения задается отображаемое имя в исходном манифесте. В противном случае, значение равно первому зарезервированному имени.
Ниже приведен пример Properties выходного XML.
Приложение
Манифест приложения может содержать несколько Application элементов, каждый из которых имеет отображаемое имя, отображаемое на плитке в клиенте. Application Раздел манифеста приложения содержит поля, приведенные в следующей таблице.
- По умолчанию значением этого поля является имя проекта.
- если вы связываете приложение с Microsoft Store или вызываете команду Store-> Create app packages. , а затем выполняете вход с помощью учетной записи разработчика, значение этого поля является именем приложения для выбранного приложения, если /Properties[@DisplayName] и /Applications/Application[@DisplayName] в исходном манифесте совпадают. В противном случае, значение останется тем же, что и в манифесте источника.
- Если вы вызываете команду Store-> Create App Packages. , но не входите с помощью учетной записи разработчика, значение этого поля совпадает с исходным манифестом.
Пример Application выходных данных:
PackageDependency
PackageDependency раздел содержит все зависимости библиотеки компонентов Windows для этого пакета. например, если проект содержит ссылку на WinJS, Visual Studio извлекает сведения об удостоверении пакета для зависимостей при создании манифеста. Visual Studio заполнит этот раздел Name MinVersion полями и для каждого зависимого пакета.
Windows Модули регистрации среды выполнения
вы можете реализовать среда выполнения Windows компоненты для приложений, но для их правильной работы необходимо зарегистрировать эти компоненты в операционной системе. чтобы зарегистрировать компонент среда выполнения Windows, необходимо разместить сведения о регистрации в файлах WinMD и в манифесте приложения. если проект реализует компонент среда выполнения Windows, выходные данные сборки проекта будут содержать WinMD-файл. Visual Studio извлекает сведения о регистрации среда выполнения Windows из WinMD-файла и создает соответствующие Extension элементы в манифесте приложения.
Система поддерживает два типа серверов: DLL-серверы (внутрипроцессные) и EXE-серверы (внепроцессные). Для этих серверов требуются похожие, но различные сведения о регистрации, которые необходимо скопировать в манифест приложения. Visual Studio поддерживает создание манифеста только для DLL-серверов, для регистрации DLL-серверов требуется расширение DLLServer. Следующие значения в манифесте приложения взяты из файлов WinMD для построения расширения DLLServer.
- DllPath.
- ActivatableClassId.
- ThreadingModel.
- ActivatableClass (атрибут ActivatableClassId).
Ниже приведен пример выходного XML.
дополнительные сведения об этом разделе см. в разделе среда выполнения Windows components.
Ресурсы
Resources Раздел содержит запись для каждого языка, поддерживаемого приложением. Необходимо указать по крайней мере один язык ресурсов в манифесте приложения. Visual Studio автоматически создает список поддерживаемых языков на основе сведений о локализации в проекте. Маркер языка ресурсов "x-Generate", используемый в исходном файле манифеста (Package. appxmanifest), заменяется фактическим кодом языка при сборке манифеста. Ниже приведен пример выходного XML.
Искал пол дня как это сделать. На инглише находил статейки. Делал как там говорилось. И не работает. И я так и не понял как добавить этот файл манифеста в VS 2017. Нужно это для того чтобы функция GetVersionEx/GetVersion работала корректно на Win 8.1, win 10. Как я понял нужно прописать вот такую штуку
А как и куда я не понял. Помогите пожалуйста.
1. Создаёте в директории проекта файл, называете как вам нравится, например имя_проекта.manifest.
2. Кладёте туда всё что вы написали.
3. Добавляете файл в проект через Add -> Existing Item.
4. Идёте в свойства проекта, Manifest Tool -> Input and Output -> Additional Manifest Files, прописываете туда имя вашего файла.
5. .
6. PROFIT: содержимое вашего манифеста будет СЛИТО с содержимым манифеста, который генерится по умолчанию.
7. Вы можете проверить результат, посмотрев в ресурсы собранного EXE, или же выставить флажок Embed Manifest в No (флажок находится рядом с предыдущим) и посмотреть внутрь файла который упадёт рядом с вашим собранным EXE. Ну делал так и чет не работало.
Нашел вот такую штуку: mt.exe -nologo -manifest direct.exe.manifest -outputresource:Directx.exeRecardo_Recoly вот это как раз и будет получаться если вы сделаете как я описал. Студия (точнее, msbuild) будет вызывать mt.exe с нужными параметрами, в том числе с указанным дополнительным файлом манифеста.
не работало - это как проявлялось?
Станислав Макаров, Вызов GetVersion говорил мне что у меня 8 винда.
Хотя у меня 10 винда.Recardo_Recoly а почему не проверить для начала промежуточный результат, т.е. содержимое манифеста который был внедрён в EXE?
И да, у вас нет возможности проверять версию винды современными средствами?
У меня есть простое приложение, которое я хочу заставить работать в режиме администратора. Для этого мне нужно отредактировать файл манифеста. Я видел учебные пособия, в которых показано, как добавить его, щелкнув «Проект-> Добавить -> новый . »
1 ответ
Вот пошаговый «прием», который должен сработать; он позволяет вам взять копию встроенного манифеста по умолчанию и соответствующим образом изменить ее.
Сначала добавьте новый XML-файл в свой проект с помощью команды «Добавить -> Новый элемент . » и назовите его (скажем) «Elevate.xml». В конечном итоге это будет настраиваемый манифест.
Затем, чтобы получить текущий (встроенный) манифест, создайте (заново) свой проект и откройте целевой файл (.exe) из Visual Studio. Этот должен открыть этот файл в режиме «Обозреватель ресурсов», как показано на изображении ниже:
В этом проводнике откройте узел «RT_MANIFEST» и дважды щелкните обнаруженный подузел «1 (нейтральный)»; это откроет новое окно со встроенным текущим (по умолчанию) манифестом программы, отображаемым как двоичный ресурс. На самом деле манифест находится в текстовом формате XML, и вы можете выбрать этот текст из самого правого столбца (игнорируя несколько ведущих / завершающих непечатаемых данных), как показано здесь:
Скопируйте этот выбор, откройте предыдущий файл «Elevate.xml», удалите все его существующее содержимое и «Вставьте» данные ресурса манифеста; это даст вам контент, аналогичный показанному ниже:
Затем вы можете изменить уровень «asInvoker» на «highAvailable», сохранить этот файл и переименовать его (в дереве проекта) в «Elevate.manifest». Затем вы можете выбрать этот настраиваемый манифест в свойствах проекта:
Я протестировал этот метод на локальной (но очень простой) программе-образце, и, похоже, он работает: когда я запускаю программу, система запрашивает учетные данные администратора. Если у вас есть какие-либо проблемы, возможно, в вашем случае потребуются незначительные изменения.
Читайте также: