В рамках нашего процесса сборки мне нужно установить информацию о версии для всех наших скомпилированных двоичных файлов. Некоторые из двоичных файлов уже имеют информацию о версии (добавленную во время компиляции), а некоторые нет.
Я хочу иметь возможность применить следующую информацию:
Все эти атрибуты указываются в сценарии сборки и должны применяться после компиляции. Это стандартные двоичные файлы (не сборки), скомпилированные с помощью C++ Builder 2007.
Как я могу это сделать?
Попробуйте это: альтернатива.net/software/xn-resource-editor, я думаю, есть инструменты обратной инженерии, которые делают это





Есть этот инструмент Изменить версию[1]
Список возможностей (с сайта):
- command line interface
- support for .EXE, .DLL and .RES files
- update FileVersion and ProductVersion based on a version mask
- add/change/remove version key strings
- adjust file flags (debug, special, private etc)
- update project files ( .bdsproj | .bpr | .bpk | .dproj )
- add/change main application icon
- use ini file with configuration
- Windows Vista support (needs elevation)
- easy to integrate into a continuous build environment
Полное раскрытие информации: я знаю парня, который написал этот инструмент, я работал с ним. Но это также означает, что я знаю, что он делает качественный софт;)
[1] ссылка мертвая. Похоже, есть зеркальная версия на download.cnet.com.
@Gareth Я добавил зеркальную ссылку. С другой стороны, я сомневаюсь, что этот ответ имеет какую-либо ценность без какой-либо рабочей ссылки.
Вторая ссылка приводит к просроченному инструменту "Change Version v2012.9.6.0 - (C)2007-2012 The-Software-Box.com This trial version has expired".
При запуске в командной строке появляется сообщение «Изменить версию v2012.9.6.0 - (C) 2007-2012 The-Software-Box.com Срок действия этой пробной версии истек»
Или вы можете воспользоваться бесплатным программным обеспечением StampVer для файлов Win32 exe / dll. Это изменит только версию файла и продукта, если у них уже есть ресурс версии. Он не может добавить ресурс версии, если он не существует.
Есть Консоль Resource Tuner от Heaventools Software.
Resource Tuner Console is a command-line tool that enables developers to automate editing of different resource types in large numbers of Windows 32- and 64-bit executable files.
См. Более подробную информацию на странице Изменение переменных версии и обновление информации о версии.
Что насчет этого?
verpatch /va foodll.dll %VERSION% %FILEDESCR% %COMPINFO% %PRODINFO% %BUILDINFO%
Доступен здесь с полными исходниками.
Verpatch, похоже, создал для меня ресурс с плохой версией продукта (с использованием опции /va /pv). Версия корректно отображалась в проводнике Windows, но последний символ отсутствовал при извлечении в коде с помощью VerQueryValue. Чтобы исправить плохой ресурс, я сделал следующее: (1) Загрузите DLL в Resource Hacker. (2) Просмотрите ресурс версии. (3) Скомпилируйте (измените что-нибудь, а затем верните обратно, чтобы активировать кнопку). (4) Сохранить.
verpatch отлично работает как для x64, так и для x86-версий моих библиотек DLL в моем dev-боксе, однако в проекте сборки apveyor он работает только для x64 и не делает абсолютно ничего для dll x86 - никаких ошибок тоже! какие-нибудь намеки на то, что может случиться? В журнале appveyor я вижу, что команда verpatch выполняется, ошибок нет, dll каким-то образом не заменяется, и, в конце концов, у нее нет штампа версии; для x64 все работает нормально во всех ситуациях. какие-нибудь подсказки, пожалуйста?
@ Ови-Ван Кеноби: Я не знал, что такое конвейер, но, судя по вашему описанию, мне это больше похоже на проблему с конвейером. В худшем случае, если это возможно, приготовьтесь к некоторой отладке в среде apveyor? ...
verpatch хорош, но не обрабатывает символы Юникода ...
попробуйте ResourceLib
В отличие от многих других ответов, это решение использует полностью бесплатное программное обеспечение.
Во-первых, создайте файл с именем Resources.rc следующим образом:
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,0
PRODUCTVERSION 1,0,0,0
{
BLOCK "StringFileInfo"
{
BLOCK "040904b0"
{
VALUE "CompanyName", "ACME Inc.\0"
VALUE "FileDescription", "MyProg\0"
VALUE "FileVersion", "1.0.0.0\0"
VALUE "LegalCopyright", "© 2013 ACME Inc. All Rights Reserved\0"
VALUE "OriginalFilename", "MyProg.exe\0"
VALUE "ProductName", "My Program\0"
VALUE "ProductVersion", "1.0.0.0\0"
}
}
BLOCK "VarFileInfo"
{
VALUE "Translation", 0x409, 1200
}
}
Затем используйте GoRC, чтобы скомпилировать его в файл .res, используя:
GoRC /fo Resources.res Resources.rc
(see my comment below for a mirror of GoRC.exe)
Затем используйте Ресурсный хакер в режиме CLI, чтобы добавить его к существующему .exe:
ResHacker -add MyProg.exe, MyProg.exe, Resources.res,,,
Вот и все!
@CharlesB Я сам это заметил, но это правильная ссылка. Похоже, кто-то забыл заплатить своему хостингу! Вот двоичный файл, я отразил его в своей общедоступной учетной записи Assembla: Assembla.com/code/danny-beckett/subversion/nodes/13/GoRC.exe
Вы также можете использовать Microsoft Компилятор ресурсов вместо GoRC. Он доступен с Windows SDK.
Поднимите вверх для Resource Hacker, я использовал его, основываясь на этом ответе, и это блестящая, отличная программа. (никакого сходства с программой или производителем ;-)
@UweKeim Я давно этим не пользовался, но уверен, что они необходимы.
Похоже, командная строка немного изменилась: 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
Это лучший инструмент, который я видел для этой работы, он позволяет полностью контролировать все файловые ресурсы, включая VersionInfo.
См .: ResourceEditor автора Андерс Меландер.
Загрузка редактора ресурсов (0 байт) прервана.
Хотя это не пакетный процесс, Visual Studio также может добавлять / редактировать файловые ресурсы.
Просто используйте File-> Open-> File в .EXE или .DLL. Это удобно для исправления информации о версии после сборки или добавления ее в файлы, в которых изначально нет этих ресурсов.
Когда я попробовал, это сработало отлично. Для файла, в котором полностью отсутствует информация о версии: после открытия библиотеки DLL в Visual Studio перейдите в меню «Правка»> «Добавить ресурс»> «Версия» и нажмите «Создать». Затем на новой вкладке «Версия» измените ВЕРСИЯ ФАЙЛА и ПРОДУКЦИЮ, Название компании и т. д. Сохраните файлы, и все готово!
@UweBaemayr. ответ, который вы процитировали, я хочу спросить о том же, что и мы можем автоматизировать его, поскольку именно я делаю ту же сборку поста, и я хочу ее автоматизировать. Но как ?
Для моей старой Delphi win32 dll это не работает. Несмотря на то, что информация о dll изменена правильно, при проверке работоспособности вы понимаете, что она повреждена.
Пробовал это (добавить информацию о версии) в Windows 8, VS 2015, и все хорошо в проводнике Windows, за исключением того, что исполняемый файл больше не запускается.
Немного поздно для вечеринки, но поскольку я искал его (и мне, возможно, когда-нибудь понадобится найти его снова), вот что я сделал, чтобы включить версию, название компании и т. д. В мою C++ DLL в VS2013 Express:
Надеюсь это поможет!
rcedit относительно новый и хорошо работает из командной строки: https://github.com/atom/rcedit
$ rcedit "path-to-exe-or-dll" --set-version-string "Comments" "This is an exe"
$ rcedit "path-to-exe-or-dll" --set-file-version "10.7"
$ rcedit "path-to-exe-or-dll" --set-product-version "10.7"
Также есть Модуль NPM, который обертывает его из JavaScript, и Грунт задача, если вы используете Grunt.
обратите внимание, что rcedit может изменять только существующие ресурсы, но не вставлять новые.
Не работает с 7zip sfx-архивами: / Просто вырезает часть архива 7zip.
попробовал это, продолжает давать невозможность загрузить файл, когда находится в том же каталоге, и кажется, что инструмент может зависеть от конфигурации хоста
Работает с заглушкой 7zS.sfx, первой частью с VERSIONINFO внутри, которую вы используете для объединения самораспаковывающегося архива. Вручную вы также можете переименовать 7zS.sfx в 7zS.exe и отредактировать его в Visual Studio, но поскольку номер версии меняется для каждой сборки, вы предпочитаете пакетный файл с операторами rcedit внутри, чтобы установить его.
этот инструмент очень неприятен, пожалуйста, обратите внимание на эту ошибку, прежде чем применять ее к своим двоичным файлам: github.com/electron/rcedit/issues/51
Я делаю это без дополнительных инструментов. Я только что добавил следующие файлы в свой проект приложения Win32.
Один файл заголовка, который определяет некоторые константы, которые мы можем повторно использовать в нашем файле ресурсов и даже в программном коде. Нам нужно поддерживать только один файл. Благодаря команде Qt, которая показала мне, как это сделать в проекте Qt, теперь это работает и в моем приложении Win32.
---- [версия.h] ----
#ifndef VERSION_H
#define VERSION_H
#define VER_FILEVERSION 0,3,0,0
#define VER_FILEVERSION_STR "0.3.0.0\0"
#define VER_PRODUCTVERSION 0,3,0,0
#define VER_PRODUCTVERSION_STR "0.3.0.0\0"
#define VER_COMPANYNAME_STR "IPanera"
#define VER_FILEDESCRIPTION_STR "Localiza archivos duplicados"
#define VER_INTERNALNAME_STR "MyProject"
#define VER_LEGALCOPYRIGHT_STR "Copyright 2016 [email protected]"
#define VER_LEGALTRADEMARKS1_STR "All Rights Reserved"
#define VER_LEGALTRADEMARKS2_STR VER_LEGALTRADEMARKS1_STR
#define VER_ORIGINALFILENAME_STR "MyProject.exe"
#define VER_PRODUCTNAME_STR "My project"
#define VER_COMPANYDOMAIN_STR "www.myurl.com"
#endif // VERSION_H
---- [MyProjectVersion.rc] ----
#include <windows.h>
#include "version.h"
VS_VERSION_INFO VERSIONINFO
FILEVERSION VER_FILEVERSION
PRODUCTVERSION VER_PRODUCTVERSION
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904E4"
BEGIN
VALUE "CompanyName", VER_COMPANYNAME_STR
VALUE "FileDescription", VER_FILEDESCRIPTION_STR
VALUE "FileVersion", VER_FILEVERSION_STR
VALUE "InternalName", VER_INTERNALNAME_STR
VALUE "LegalCopyright", VER_LEGALCOPYRIGHT_STR
VALUE "LegalTrademarks1", VER_LEGALTRADEMARKS1_STR
VALUE "LegalTrademarks2", VER_LEGALTRADEMARKS2_STR
VALUE "OriginalFilename", VER_ORIGINALFILENAME_STR
VALUE "ProductName", VER_PRODUCTNAME_STR
VALUE "ProductVersion", VER_PRODUCTVERSION_STR
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1252
END
END
Просто любопытно; как вы остановили Windows от перезаписи вашего .rc файла каждый раз, когда вы меняете диалог или модифицируете любой ресурс в проекте? До сих пор я видел пару подобных статей, и кажется, что это сработает, если вам больше никогда не придется менять ресурс, что приведет к автоматической генерации IDE.
@ shawn1874 - включить строку #include <windows.h> в файл resource.h, который добавляется автоматически. Этот файл не создается повторно (обратите внимание, что в верхней части файла .rc он указывает, что это сгенерированный код, и его можно изменить в дизайнере).
@CJBS, который не отвечает на вопрос. Хотя это может сработать, это не объясняет, как может работать опубликованный ответ. В опубликованном ответе user3016543 включает version.h непосредственно в файл .rc. Есть несколько способов справиться с перезаписью файла .rc, и я знаю, как это сделать. Я всего лишь сомневаюсь в том, как показан этот конкретный ответ, потому что он мне не кажется правильным.
Я предполагаю, что этот метод работает для него, потому что рассматриваемый компонент не имеет компонентов диалога, поэтому файл не восстанавливается часто и никогда. Однако в приложении Windows с диалоговыми ресурсами MFC это не так.
Спасибо, что напомнили мне о методе, который я впервые увидел в действии в файле ресурсов, поставляемом с WinBatch Extender SDK. Я так давно не нуждался в нем, что забыл большинство деталей. Ваше объяснение все вернуло.
Вы можете попробовать загрузить FVIE из Ссылка для скачивания и попробовать отредактировать информацию для любого файла .exe.
(ИЛИ ЖЕ)
Вы можете скачать StampVer - штамповка ресурсов версии Win32 с Ссылка для скачивания что действительно полезно для файлов Windows .exe.
(ИЛИ ЖЕ)
Вы можете использовать командный инструмент под названием RCEDIT. Загрузите из Ссылка на исходный код Github, а затем выполните сборку с помощью Visual Studio 2015, а затем у вас есть специальные команды для изменения версии файлов .exe. См. Ссылка на документы для различных доступных команд.
Есть несколько инструментов, упомянутых во многих отличных ответах, я собираюсь выбрать один.
Я скачал последнюю версию (5.1.7) с сайта [AngusJ]: хакер ресурсов. На этой странице можно найти всю необходимую информацию (параметры командной строки, сценарии, ...). В следующем пошаговом руководстве я буду работать с двумя исполняемыми файлами (лабораторными крысами), которые (по понятным причинам) я скопировал в свой cwd:
Прежде чем продолжить, я хочу упомянуть, что ResourceHacker имеет забавный вывод терминала и следующие фрагменты копирования / вставки могут вызвать некоторую путаницу.
Это больше похоже на предварительный шаг, чтобы познакомиться с окружающей средой, чтобы показать, что никакого фанкового бизнеса не происходит, ...
e:\Work\Dev\StackOverflow\q000284258> sopr.bat *** Set shorter prompt to better fit when pasted in StackOverflow (or other) pages *** [prompt]> dir Volume in drive E is Work Volume Serial Number is 3655-6FED Directory of e:\Work\Dev\StackOverflow\q000284258 2019-01-28 20:09 <DIR> . 2019-01-28 20:09 <DIR> .. 2016-11-03 09:17 5,413,376 cmake.exe 2019-01-03 02:06 5,479,424 ResourceHacker.exe 2019-01-28 20:30 496 ResourceHacker.ini 3 File(s) 10,893,296 bytes 2 Dir(s) 103,723,261,952 bytes free [prompt]> set PATH=%PATH%;c:\Install\x64\CMake\CMake\3.6.3\bin [prompt]> .\cmake --help >nul 2>&1 [prompt]> echo %errorlevel% 0 [prompt]> .\ResourceHacker.exe -help [prompt]> ================================== Resource Hacker Command Line Help: ================================== -help : displays these abbreviated help instructions. -help commandline : displays help for single commandline instructions -help script : displays help for script file instructions. [prompt]> echo %errorlevel% 0
Как видно, с исполняемыми файлами все в порядке, они работают нормально, и вот как выглядит их Подробности (о котором мы заботимся):
Файлы ресурсов - это текстовые файлы, содержащие ресурсы. Ресурс (упрощенный) содержит:
Для получения дополнительной информации проверьте [MS.Docs]: О файлах ресурсов. Существует множество инструментов (упомянутых в существующих ответах), которые облегчают редактирование файлов ресурсов, например:
Но, поскольку речь идет о Ресурсный хакер, и:
Я собираюсь использовать его на этом этапе (-action extract)
Затем, чтобы ресурс был встроен в .исполняемый файл (.dll, ...), он должен быть составлен в двоичной форме, которая соответствует формату PE. Опять же, есть много инструментов, которые могут добиться этого, но, как вы, наверное, догадались, я буду придерживаться Ресурсный хакер (-action compile).
[prompt]> :: Extract the resources into a file [prompt]> .\ResourceHacker.exe -open .\ResourceHacker.exe -save .\sample.rc -action extract -mask VersionInfo,, -log con [prompt]> [28 Jan 2019, 20:58:03] Current Directory: e:\Work\Dev\StackOverflow\q000284258 Commandline: .\ResourceHacker.exe -open .\ResourceHacker.exe -save .\sample.rc -action extract -mask VersionInfo,, -log con Open : e:\Work\Dev\StackOverflow\q000284258\ResourceHacker.exe Save : e:\Work\Dev\StackOverflow\q000284258\sample.rc Success! [prompt]> :: Modify the resource file and set our own values [prompt]> [prompt]> :: Compile the resource file [prompt]> .\ResourceHacker.exe -open .\sample.rc -save .\sample.res -action compile -log con [prompt]> [28 Jan 2019, 20:59:51] Current Directory: e:\Work\Dev\StackOverflow\q000284258 Commandline: .\ResourceHacker.exe -open .\sample.rc -save .\sample.res -action compile -log con Open : e:\Work\Dev\StackOverflow\q000284258\sample.rc Save : e:\Work\Dev\StackOverflow\q000284258\sample.res Compiling: e:\Work\Dev\StackOverflow\q000284258\sample.rc Success! [prompt]> dir /b cmake.exe ResourceHacker.exe ResourceHacker.ini sample.rc sample.res
В вашем случае сохранение и редактирование файла ресурсов не потребуется, так как файл уже присутствует, я сделал это только для демонстрационных целей. Ниже находится файл ресурсов после изменения (и, следовательно, до компиляции).
sample.rc:
1 VERSIONINFO
FILEVERSION 3,1,4,1592
PRODUCTVERSION 2,7,1,8
FILEOS 0x4
FILETYPE 0x1
{
BLOCK "StringFileInfo"
{
BLOCK "040904E4"
{
VALUE "CompanyName", "Cristi Fati\0"
VALUE "FileDescription", "20190128 - SO q000284258 demo\0"
VALUE "FileVersion", "3.1.4.1592\0"
VALUE "ProductName", "Colonel Panic\0"
VALUE "InternalName", "100\0"
VALUE "LegalCopyright", "(c) Cristi Fati 1999-2999\0"
VALUE "OriginalFilename", "ResHack\0"
VALUE "ProductVersion", "2.7.1.8\0"
}
}
BLOCK "VarFileInfo"
{
VALUE "Translation", 0x0409 0x04E4
}
}
Это также будет выполнять Ресурсный хакер (-action addoverwrite). Поскольку .исполняемый файл уже скопированы, я собираюсь редактировать их ресурсы на месте.
[prompt]> .\ResourceHacker.exe -open .\cmake.exe -save .\cmake.exe -res .\sample.res -action addoverwrite -mask VersionInfo,, -log con [prompt]> [28 Jan 2019, 21:17:19] Current Directory: e:\Work\Dev\StackOverflow\q000284258 Commandline: .\ResourceHacker.exe -open .\cmake.exe -save .\cmake.exe -res .\sample.res -action addoverwrite -mask VersionInfo,, -log con Open : e:\Work\Dev\StackOverflow\q000284258\cmake.exe Save : e:\Work\Dev\StackOverflow\q000284258\cmake.exe Resource: e:\Work\Dev\StackOverflow\q000284258\sample.res Added: VERSIONINFO,1,1033 Success! [prompt]> copy ResourceHacker.exe ResourceHackerTemp.exe 1 file(s) copied. [prompt]> .\ResourceHackerTemp.exe -open .\ResourceHacker.exe -save .\ResourceHacker.exe -res .\sample.res -action addoverwrite -mask VersionInfo,, -log con [prompt]> [28 Jan 2019, 21:19:29] Current Directory: e:\Work\Dev\StackOverflow\q000284258 Commandline: .\ResourceHackerTemp.exe -open .\ResourceHacker.exe -save .\ResourceHacker.exe -res .\sample.res -action addoverwrite -mask VersionInfo,, -log con Open : e:\Work\Dev\StackOverflow\q000284258\ResourceHacker.exe Save : e:\Work\Dev\StackOverflow\q000284258\ResourceHacker.exe Resource: e:\Work\Dev\StackOverflow\q000284258\sample.res Modified: VERSIONINFO,1,1033 Success! [prompt]> del /f /q ResourceHackerTemp.* [prompt]> dir Volume in drive E is Work Volume Serial Number is 3655-6FED Directory of e:\Work\Dev\StackOverflow\q000284258 2019-01-28 21:20 <DIR> . 2019-01-28 21:20 <DIR> .. 2016-11-03 09:17 5,414,400 cmake.exe 2019-01-03 02:06 5,479,424 ResourceHacker.exe 2019-01-28 21:17 551 ResourceHacker.ini 2019-01-28 20:05 1,156 sample.rc 2019-01-28 20:59 792 sample.res 5 File(s) 10,896,323 bytes 2 Dir(s) 103,723,253,760 bytes free
Как видно, мне пришлось проделать небольшую хитрость (Gainarie), поскольку я не могу (по крайней мере, я не думаю, что могу) изменять .исполняемый файл во время использования.
Это необязательный этап, чтобы убедиться, что:
[prompt]> .\cmake --help >nul 2>&1 [prompt]> echo %errorlevel% 0 [prompt]> .\ResourceHacker.exe -help [prompt]> ================================== Resource Hacker Command Line Help: ================================== -help : displays these abbreviated help instructions. -help commandline : displays help for single commandline instructions -help script : displays help for script file instructions. [prompt]> echo %errorlevel% 0
И их Подробности:
@ColonelPanic: Спасибо!
Очень хороший ответ. К сожалению, ResourceHacker больше не поддерживается, и ему не хватает памяти при попытке отредактировать большой EXE-файл (у меня возникла ошибка при попытке открыть EXE-файл размером 3 ГБ).
@LewsTherin: Последняя версия (также использованная в ответе) от 2019/01, поэтому я бы сказал, что она поддерживается. Проблема в том, что это 32 бит. Вы можете связаться с авторами и попросить версию 64 бит (я предполагаю, что, поскольку у них уже есть код, собрать его для 64 бит не составит труда).
ответ над от @DannyBeckett мне очень помог,
Я помещаю следующее в пакетный файл и помещаю его в ту же папку, где находится ResourceHacker.exe и EXE, над которым я работаю, и он отлично работает. [вы можете отредактировать его по своему усмотрению]
@echo off
:start1
set /p newVersion=Enter version number [?.?.?.?]:
if "%newVersion%" == "" goto start1
:start2
set /p file=Enter EXE name [for 'program.exe' enter 'program']:
if "%file%" == "" goto start2
for /f "tokens=1-4 delims=." %%a in ('echo %newVersion%') do (set ResVersion=%%a,%%b,%%c,%%d)
(
echo:VS_VERSION_INFO VERSIONINFO
echo: FILEVERSION %ResVersion%
echo: PRODUCTVERSION %ResVersion%
echo:{
echo: BLOCK "StringFileInfo"
echo: {
echo: BLOCK "040904b0"
echo: {
echo: VALUE "CompanyName", "MyCompany\0"
echo: VALUE "FileDescription", "TestFile\0"
echo: VALUE "FileVersion", "%newVersion%\0"
echo: VALUE "LegalCopyright", "COPYRIGHT © 2019 MyCompany\0"
echo: VALUE "OriginalFilename", "%file%.exe\0"
echo: VALUE "ProductName", "Test\0"
echo: VALUE "ProductVersion", "%newVersion%\0"
echo: }
echo: }
echo: BLOCK "VarFileInfo"
echo: {
echo: VALUE "Translation", 0x409, 1200
echo: }
echo:}
) >Resources.rc && echo setting Resources.rc
ResourceHacker.exe -open resources.rc -save resources.res -action compile -log CONSOLE
ResourceHacker -open "%file%.exe" -save "%file%Res.exe" -action addoverwrite -resource "resources.res" -log CONSOLE
ResourceHacker.exe -open "%file%Res.exe" -save "%file%Ico.exe" -action addskip -res "%file%.ico" -mask ICONGROUP,MAINICON, -log CONSOLE
xCopy /y /f "%file%Ico.exe" "%file%.exe"
echo.
echo.
echo your compiled file %file%.exe is ready
pause
[в качестве примечания я использовал ресурсный хакер для компиляции файла res, а не GoRC]
Хочу собрать более компактную версию
resourceПодготовьте файл ресурсов: resource.rc
VS_VERSION_INFO VERSIONINFO
FILEVERSION 0,0,0,0
PRODUCTVERSION 0,0,0,0
{
BLOCK "StringFileInfo"
{
BLOCK "040904b0"
{
VALUE "CompanyName", "\0"
VALUE "FileDescription", "\0"
VALUE "FileVersion", "0.0.0.0\0"
VALUE "LegalCopyright", "© 2020 Carson. All rights reserved.\0"
VALUE "OriginalFilename", ".exe\0"
VALUE "ProductName", "\0"
VALUE "ProductVersion", "0.0.0.0\0"
}
}
BLOCK "VarFileInfo"
{
VALUE "Translation", 0x0409, 1200
}
}
Есть два способа получить это.
choco install reshack -yres в файлы rc.ResourceHacker.exe -open resources.rc -save resources.res ^
-action compile -log CONSOLE
SET INPUT_EXE=app.exe
SET OUTPUT_EXE=app.exe
ResourceHacker.exe -open %OUTPUT_EXE% -save %OUTPUT_EXE% ^
-resource resources.res ^
-action addoverwrite ^
-mask VersionInf ^
-log CONSOLE
SET INPUT_EXE=app.exe
SET OUTPUT_EXE=app.exe
ResourceHacker.exe -open resources.rc -save resources.res ^
-action compile -log CONSOLE
ResourceHacker.exe -open %OUTPUT_EXE% -save %OUTPUT_EXE% ^
-resource resources.res ^
-action addoverwrite ^
-mask VersionInf ^
-log CONSOLE
Command Line Syntax^
для чего использовать ResourceHacker? как именно ставится задача? в чем проблема использовать функцию
UpdateResource, если версия задачи обновления в существующем pe