Куда кидать файл manifest
/MANIFEST указывает, что компоновщик должен создать параллельный файл манифеста. Дополнительные сведения о файлах манифеста см. в разделе Справочник по файлам манифеста.
Значение по умолчанию —/манифест.
Параметр/MANIFEST: EMBED указывает, что компоновщик должен внедрить файл манифеста в образ как ресурс типа RT_MANIFEST. Необязательный ID параметр — это идентификатор ресурса, используемый для манифеста. Для исполняемого файла используйте значение 1. Используйте значение 2 для библиотеки DLL, чтобы разрешить ей указывать частные зависимости. Если ID параметр не указан, по умолчанию используется значение 2, если задан параметр/DLL. в противном случае значение по умолчанию равно 1.
начиная с Visual Studio 2008, файлы манифеста для исполняемых файлов содержат раздел, в котором указаны сведения о контроле учетных записей (UAC). Если указать/MANIFEST, но не /MANIFESTUAC и /DLL, в манифест будет вставлен фрагмент UAC по умолчанию с уровнем контроля учетных записей, равным asInvoker . Дополнительные сведения об уровнях UAC см. в разделе/MANIFESTUAC (внедряет сведения о контроле учетных записей в манифесте).
Чтобы изменить поведение UAC по умолчанию, выполните одно из следующих действий.
Укажите параметр/MANIFESTUAC и задайте требуемое значение для уровня UAC.
Или укажите параметр/MANIFESTUAC: NO, если не нужно создавать фрагмент UAC в манифесте.
Если не указать/MANIFEST, но указать /MANIFESTDEPENDENCY комментарии, то создается файл манифеста. Если указать/MANIFEST: NO, файл манифеста не создается.
Если указать/MANIFEST, имя файла манифеста будет совпадать с именем выходного файла, но с расширением MANIFEST, добавленным к имени файла. Например, если имя выходного файла — MyFile.exe, имя файла манифеста будет MyFile.exe. manifest. Если указать/MANIFESTFILE:Name, имя манифеста будет указываться в поле имя.
Задание данного параметра компоновщика в среде разработки Visual Studio
Откройте > > страницу свойств файл манифеста компоновщика свойств конфигурации.
Сборка, или клиент майнкрафт с модами это набор модов, файлы их настройка + могут быть текстуры, карты, шейдеры которые идут в комплекте.
Иногда, достаточно просто взять все моды и закинуть в папку mods, установить Minecraft Forge и все будет работать.
Качественные сборки содержат не только моды, а еще и их настройки, измененные крафты, квесты, параметры которые позволяют "совместить или сбалансировать" некоторые моды. Обычно, все настройки модов хранятся в папке .minecraft\config.
Разные лаунчеры имеют разный функционал, многие умеют устанавливать версии с Minecraft Forge или Optifine, некоторые умеют запускать игру из любой указанной вами папки.
В данном гайде речь пойдет о установке в стандартную папку .minecraft
ВАЖНАЯ РЕКОМЕНДАЦИЯ:
Если вы хотите рабочую сборку, то следуйте нескольким правилам:
1) Удалите\ уберите все свои моды перед установкой.
2) Удалите \ уберите все файлы из папки .minecraft\config
3) Внимательно читайте инструкцию по установке для каждой сборки, там могут быть дополнительные шаги.
4) Используйте либо рекомендуемую автором версию Forge\Fabric\другой загрузчик, либо если версия не указана - самую последнюю.
Для начала вам необходимо установить Minecraft необходимой версии, запустить, проверить, что все работает и все окей, вы знаете где находится папка .minecraft, что такое лаунчер, что такое Forge итд.
Если автор указал на какой версии Forge его сборка проверялась, то установите именно ее, либо можете установить более новую версию.
- Установите Minecraft нужной версии + Forge (или другой загрузчик) указанной версии, либо последней.
- Проверьте, что версия игры с необходимой версий Forge (или другой загрузчик) запускается без модов.
- Скопируйте папки из сборки (mods, config итд) в .minecraft (объедините папки).
- Запускайте версию игры с Forge которую вы установили.
- assets
- config
- libraries
- mods
- resourcepacks
- scripts
- shaderpacks
- versions
- и другие
- Удалите\уберите все содержимое папки .minecraft (папку saves с мирами можно оставить).
- Скопируйте все содержимое сборки (все папки и файлы) внутри своей папки .minecraft
- Проверьте лаунчер, там могла появиться новая версия игры (если в клиенте есть папка versions)
- Попробуйте запустить эту версию игры.
- Если версия не запускается, либо ее нет вообще, установите Forge (или другой загрузчик) указанной или последней версии и запустите.
Значит автор создал установщик для данной сборки.
Установка данной сборки
Необходимо запустить скачанный файл, он установится подобно обычной программе или игры, предложит вам "установить или распаковать" игру в какую-то папку, в этой папке вы найдете все те же папки вроде mods, config, assets. Что с ними делать читайте выше.
Решение проблем, если что-то не запускается и не работает:
-
Сборка не запускается, после нажатия на играть ничего не происходит или вылетает лаунчер.
Причины: - данная версия игры (например 1.15.2 с Minecraft Forge 1.15.2-31.1.46 ) создана в другом лаунчере, часто они не умеют запускать версии друг друга.
Установите такую-же версию вручную используя установщик Forge
2) Вы пытаетесь запустить сборку на не подходящей версии Forge, слишком старой или новой.
3) У вас не хватает оперативной памяти для всех модов, многие сборки требуют 2, 4, и даже 6 гб оперативной памяти. В настройках лаунчера должно быть выставлено достаточное количество оперативной памяти, попробуйте увеличить.
4) Вы установили версию Forge+optifine и пытаетесь запустить сборку у которой Optifine уже находится в папке mods
Искал пол дня как это сделать. На инглише находил статейки. Делал как там говорилось. И не работает. И я так и не понял как добавить этот файл манифеста в VS 2017. Нужно это для того чтобы функция GetVersionEx/GetVersion работала корректно на Win 8.1, win 10. Как я понял нужно прописать вот такую штуку
А как и куда я не понял. Помогите пожалуйста.
- Вопрос задан более трёх лет назад
- 972 просмотра
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.exe
Recardo_Recoly вот это как раз и будет получаться если вы сделаете как я описал. Студия (точнее, msbuild) будет вызывать mt.exe с нужными параметрами, в том числе с указанным дополнительным файлом манифеста.
не работало - это как проявлялось?
Станислав Макаров, Вызов GetVersion говорил мне что у меня 8 винда.Хотя у меня 10 винда.
Recardo_Recoly а почему не проверить для начала промежуточный результат, т.е. содержимое манифеста который был внедрён в EXE?
И да, у вас нет возможности проверять версию винды современными средствами?
В связи с вопросом, заданным Nonameface, я хочу опубликовать небольшое руководство, которое, возможно, окажется для кого-то полезным. Многим, рассматриваемый вопрос может показаться элементарным. Я прошу не судить меня строго, поскольку этот материал адресован начинающим разработчикам.
Суть описываемой проблемы в том, что при сборке под Android, в манифест включаются все права которые только могут понадобиться приложению, разработанному в Marmalade. При этом, не выполняется никаких проверок, используются ли эти права приложением на самом деле. В результате, у пользователя, устанавливающего приложение, возникают законные вопросы: «Для чего приложение требует права на чтение и отправку SMS, если оно, совершенно очевидно, не работает с этим функционалом?».
Пользователь, совершенно резонно, может посчитать приложение небезопасным и отказаться от его установки. Давайте посмотрим, как с этим можно бороться.
Очевидно, что нам необходимо выполнить сборку, каким-то образом подменив файл AndroidManifest.xml. Для начала, нам нужно получить оригинальный AndroidManifest.xml, формируемый инструментальными средствами Maramalade. Хотя apk-файл, по сути представляет собой zip-архив и извлечь из него требуемый файл не составляет труда, задача несколько осложняется тем, что файл храниться не в текстовом, а в двоичном виде. Извлечь файл манифеста в текстовом представлении нам поможет apktool.
Выкачиваем apktool1.5.1.tar.bz2 и apktool-install-windows-r05-ibot.tar.bz2 (в случае, если используется Windows) к себе на компьютер, и распаковываем в какой-нибудь локальный каталог. Также потребуется установленная на компьютер Java (у меня установлена jdk1.6.0_23). Распаковать apk-файл можно следующей командой:
Затем, находим в созданном каталоге AndroidManifest.xml преобразованный в текстовую форму и открываем его:
Далее, мы можем отредактировать этот файл, на свой вкус, например убрав не используемые permission-ы. Для того, чтобы при последующих сборках использовалась отредактированная версия манифеста, в mkb-файл необходимо добавить следующий раздел:
Вот, в принципе, и все. После описанной замены манифеста, тестирование сборки на Android-устройстве необходимо. Вполне возможно, что какая-то часть функционала перестанет работать, либо приложение просто перестанет запускаться.
Изучаю утилиту jar. Наткнулся на такой вопрос. Набираю в cmd команду:
Т.е. создаю новый jar-файл Remainder.jar в котором будут хранится пакеты main и remainder, а файл манифеста будет иметь строки из файла manifest.txt.
Вот что в файле manifest.txt:
Вот что получилось в файле MANIFEST.MF:
Вроде бы всё так, как и должно быть. Идём дальше. Файл Remainder.jar я удаляю, и продолжаю дальше экспериментировать с утилитой:
О нет! Я забыл загерметизировать пакет main! Не беда!
Т.е. добавляю в файл манифеста строки из файла m2.txt. Вот как выглядит файл m2.txt:
А вот что получаю в файле MANIFEST.MF:
Насколько я понимаю, это неверный файл манифеста.
Собственно вопрос: что я делаю не так?
В небезызвестной книге Хорстманна "Java, библиотека профессионала" написано, что файл манифеста должен иметь такой вид:
Полученный файл не удовлетворяет такой структуре, кроме того строка Sealed : true находится в главном разделе манифеста, хотя я планировал загерметизировать только пакет main.
723 1 1 золотой знак 7 7 серебряных знаков 23 23 бронзовых знакаЯ сомневаюсь, что оракловская утилита может сгенерировать неправильный манифест. Попробуйте скормить ей дубликат, или ключ без значения. Если вы под неправильным вы имеете в виду порядок следования параметров, то все нормально.
Versions:
Manifest-Version and Signature-Version must be first, and in exactly that case (so that they can be recognized easily as magic strings). Other than that, the order of attributes within a main section is not significant.
Ordering:
The order of individual manifest entries is not significant. The order of individual signature entries is not significant, except that the digests that get signed are in that order.
Это же просто набор опций в формате ключ: значение , записанных через LF. Если в манифесте не будет нужной информации, при попытке запуска вам выбросит исключение, в то же время неизвестные опции - игнорируются.
Attributes which are not understood are ignored. Such attributes may include implementation specific information used by applications.
Манифест должен соответствовать спецификации, и он ей соответствует. Я не нашел где в документации к утилите jar явно сказано как модифицировать манифест так чтобы добавить новую секцию. Поэтому, методом тыка было установлено что для этого надо добавить пустую строку перед параметрами (в вашем случае в m2.txt). Получилось так:
Обычно такие задачи выполняются через системы сборки (maven, gradle, ant), где секции прописываются в явном виде. Я думаю jar только проверяет входные данные на синтаксические ошибки / дубликаты, и не занимается полной валидацией итогового манифеста. Поэтому если вы захотите в него нагадить, несомненно получится.
Читайте также: