В процессе сборки мне нужно установить информацию о версии для всех наших скомпилированных двоичных файлов. Некоторые из двоичных файлов уже имеют информацию о версии (добавленную во время компиляции), а некоторые нет.
Я хочу иметь возможность применить следующую информацию:
- название компании
- Уведомление об авторских правах
- наименование товара
- Описание товара
- Версия файла
- Версия продукта
Все эти атрибуты указываются в сценарии сборки и должны применяться после компиляции. Это стандартные двоичные файлы (не сборки), скомпилированные с помощью C ++ Builder 2007.
Как я могу это сделать?
windows
dll
versioning
exe
fileversioninfo
деревенщина
источник
источник
UpdateResource
функцию, если версия задачи обновить в существующей peОтветы:
Хотя это не пакетный процесс, Visual Studio также может добавлять / редактировать файловые ресурсы.
Просто используйте File-> Open-> File в .EXE или .DLL. Это удобно для исправления информации о версии после сборки или добавления ее в файлы, в которых изначально нет этих ресурсов.
источник
В отличие от многих других ответов, это решение использует полностью бесплатное программное обеспечение.
Во-первых, создайте такой файл
Resources.rc
:Затем используйте GoRC, чтобы скомпилировать его в
.res
файл, используя:(см. мой комментарий ниже для зеркала
GoRC.exe
)Затем используйте Resource Hacker в режиме CLI, чтобы добавить его к существующему
.exe
:Это оно!
источник
ResourceHacker.exe -open Source.dll -save Changed.dll -action addoverwrite -resource Version.res
Кроме того, ResourceHacker может сам скомпилировать .rc файл:ResourceHacker.exe -open Version.rc -save Version.res -action compile
Или вы можете проверить бесплатную версию StampVer для файлов Win32 exe / dll.
Это изменит только версию файла и продукта, если у них уже есть ресурс версии. Он не может добавить ресурс версии, если он не существует.
источник
rcedit относительно новый и хорошо работает из командной строки: https://github.com/atom/rcedit
Также есть модуль NPM, который обертывает его из JavaScript и задачи Grunt, если вы используете Grunt.
источник
А что насчет этого?
Доступно здесь с полными исходными кодами .
источник
/va /pv
опции). Версия корректно отображалась в проводнике Windows, но последний символ отсутствовал при получении в коде с помощьюVerQueryValue
. Чтобы исправить плохой ресурс, я сделал следующее: (1) Загрузите DLL в Resource Hacker. (2) Просмотрите ресурс версии. (3) Скомпилируйте (измените что-нибудь, а затем верните обратно, чтобы активировать кнопку). (4) Сохранить.Есть этот инструмент ChangeVersion [1]
Список возможностей (с сайта):
Полное раскрытие информации: я знаю парня, который написал этот инструмент, я работал с ним. Но это также означает, что я знаю, что он делает качественный софт;)
[1] ссылка мертва. Похоже, есть зеркальная версия на download.cnet.com .
источник
"Change Version v2012.9.6.0 - (C)2007-2012 The-Software-Box.com This trial version has expired"
Я делаю это без дополнительных инструментов. Я только что добавил следующие файлы в свой проект приложения Win32.
Один файл заголовка, который определяет некоторые константы, которые мы можем повторно использовать в нашем файле ресурсов и даже в программном коде. Нам нужно поддерживать только один файл. Благодаря команде Qt, которая показала мне, как это сделать в проекте Qt, теперь это работает и в моем приложении Win32.
---- [версия.h] ----
---- [MyProjectVersion.rc] ----
источник
#include <windows.h>
вresource.h
файл автоматически добавляемую строку . Этот файл не создается повторно (обратите внимание, что в верхней части файла .rc он указывает, что это сгенерированный код, и его можно изменить в дизайнере).verpatch хорош, но не обрабатывает символы Юникода ...
попробуйте ResourceLib
источник
Есть несколько инструментов, упомянутых во многих отличных ответах, я собираюсь выбрать один.
Ресурсный хакер
Я загрузил последнюю версию ( 5.1.7 ) с сайта [AngusJ]: Resource Hacker . На этой странице можно найти всю необходимую информацию (параметры командной строки, сценарии, ...). В следующем пошаговом руководстве я буду работать с двумя исполняемыми файлами (лабораторными крысами), которые (по понятным причинам) я скопировал в свой cwd :
Прежде чем продолжить, я хочу упомянуть, что у ResourceHacker есть забавный вывод терминала , и следующие фрагменты копирования / вставки могут вызвать небольшую путаницу.
1. Настройка
Это больше похоже на предварительный шаг, чтобы познакомиться с окружающей средой, чтобы показать, что никакого фанкового бизнеса не происходит, ...
Как видно, с исполняемыми файлами все в порядке, они работают нормально, и вот как выглядят их детали (которые нам важны):
2. Ресурсы
Файлы ресурсов - это текстовые файлы, содержащие ресурсы. Ресурс (упрощенный) содержит:
Для получения дополнительных сведений см. [MS.Docs]: О файлах ресурсов . Существует множество инструментов (упомянутых в существующих ответах), которые облегчают редактирование файлов ресурсов, например:
Но, поскольку речь идет о Resource Hacker , и:
Я собираюсь использовать его на этом этапе (
-action extract
)Затем, чтобы ресурс был встроен в .exe ( .dll , ...), он должен быть скомпилирован в двоичную форму, которая соответствует формату PE . Опять же, есть много инструментов, которые могут достичь этого, но, как вы, наверное, догадались, я буду придерживаться Resource Hacker (
-action compile
).В вашем случае сохранение и редактирование файла ресурсов не потребуется, поскольку файл уже будет присутствовать, я сделал это только для демонстрационных целей. Ниже находится файл ресурсов после изменения (и, следовательно, до компиляции).
sample.rc :
3. Встроить
Это также будет выполнено Resource Hacker (
-action addoverwrite
). Поскольку .exe уже скопированы, я собираюсь редактировать их ресурсы на месте.Как видно, мне пришлось пойти на небольшую хитрость ( выигрыш ), так как я не могу (по крайней мере, я не думаю, что могу) изменять .exe во время использования.
4. Тест
Это необязательный этап, чтобы убедиться, что:
И их детали :
источник
Существует Resource Tuner Console от Heaventools Software.
См. Более подробную информацию на странице « Изменение переменных версии и обновление информации о версии» .
источник
Немного поздно для вечеринки, но поскольку я искал его (и мне, возможно, когда-нибудь понадобится найти его снова), вот что я сделал, чтобы включить версию, название компании и т. Д. В мою C ++ DLL в VS2013 Express:
Надеюсь это поможет!
источник
приведенный выше ответ от @DannyBeckett мне очень помог,
Я помещаю следующее в пакетный файл и помещаю его в ту же папку, где находится ResourceHacker.exe и EXE, над которым я работаю, и он отлично работает. [вы можете отредактировать его под свои нужды]
[в качестве примечания я использовал ресурсный хакер для компиляции файла res, а не GoRC]
источник
На самом деле вы можете попытаться загрузить FVIE из Download Link и попытайтесь отредактировать информацию для любого EXE - файла.
(ИЛИ)
Вы можете скачать StampVer - Win32 Версия Штамповка ресурсов от загрузки Ссылка , которая действительно полезна для окон .exe файлов.
(ИЛИ)
Вы можете использовать командный инструмент под названием RCEDIT . Загрузите ссылку на исходный код Github, а затем выполните сборку с помощью Visual Studio 2015, а затем у вас есть определенные команды для изменения версии файлов .exe. См. Ссылку на Документы для получения информации о различных доступных командах.
источник
Это лучший инструмент, который я видел для этой работы, он позволяет полностью контролировать все файловые ресурсы, включая VersionInfo.
См: ResourceEditor по Андерс Меландер .
источник