Как мне установить информацию о версии для существующего .exe, .dll?

114

В процессе сборки мне нужно установить информацию о версии для всех наших скомпилированных двоичных файлов. Некоторые из двоичных файлов уже имеют информацию о версии (добавленную во время компиляции), а некоторые нет.

Я хочу иметь возможность применить следующую информацию:

  • название компании
  • Уведомление об авторских правах
  • наименование товара
  • Описание товара
  • Версия файла
  • Версия продукта

Все эти атрибуты указываются в сценарии сборки и должны применяться после компиляции. Это стандартные двоичные файлы (не сборки), скомпилированные с помощью C ++ Builder 2007.

Как я могу это сделать?

деревенщина
источник
для чего использовать ResourceHacker ? как именно ставится задача? в чем проблема использовать UpdateResourceфункцию, если версия задачи обновить в существующей pe
RbMm
Попробуйте это: alternateto.net/software/xn-resource-editor , я думаю, есть инструменты обратного проектирования, которые делают это
i_thamary

Ответы:

60

Хотя это не пакетный процесс, Visual Studio также может добавлять / редактировать файловые ресурсы.

Просто используйте File-> Open-> File в .EXE или .DLL. Это удобно для исправления информации о версии после сборки или добавления ее в файлы, в которых изначально нет этих ресурсов.

UweBaemayr
источник
8
Когда я попробовал, это сработало отлично. Для файла, в котором полностью отсутствует информация о версии: после открытия библиотеки DLL в Visual Studio выберите «Правка»> «Добавить ресурс»> «Версия» и нажмите «Создать». Затем на новой вкладке «Версия» измените ВЕРСИЯ ФАЙЛА и ПРОДУКТ, имя компании и т. Д. Сохраните файлы, и все готово!
twasbrillig
2
@UweBaemayr. ответ, который вы процитировали, я хочу спросить о том же, что и мы можем автоматизировать его, поскольку именно я делаю ту же сборку сообщений и хочу автоматизировать ее. Но как ?
SteveScm 03
1
Для моей старой библиотеки DLL Delphi win32 это не работает. Несмотря на то, что информация о dll изменена правильно, при проверке работоспособности вы понимаете, что она повреждена.
Sthiers 05
3
Пробовал это (добавить информацию о версии) в Windows 8, VS 2015, и все хорошо в проводнике Windows, за исключением того, что исполняемый файл больше не запускается.
Ливиу
38

В отличие от многих других ответов, это решение использует полностью бесплатное программное обеспечение.

Во-первых, создайте такой файл 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

(см. мой комментарий ниже для зеркала GoRC.exe)

Затем используйте Resource Hacker в режиме CLI, чтобы добавить его к существующему .exe:

ResHacker -add MyProg.exe, MyProg.exe, Resources.res,,,

Это оно!

Дэнни Беккет
источник
1
@CharlesB Я сам это заметил, но это правильная ссылка. Похоже, кто-то забыл заплатить своему хостингу! Вот двоичная, я зеркальный его в общедоступном Assembla счет: assembla.com/code/danny-beckett/subversion/nodes/13/GoRC.exe
Дэнни Beckett
3
Вы также можете использовать Microsoft Resource Compiler вместо GoRC. Он доступен с Windows SDK.
Holistic Developer
Поднимите палец вверх для Resource Hacker, я использовал его на основе этого ответа, и это блестящая, отличная программа. (нет связи с программой или создателем ;-)
user2109254
@UweKeim Я давно этим не пользовался, но уверен, что они необходимы.
Дэнни Беккет
6
Похоже, что командная строка немного изменилась: 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
Юсуф Тарик Гюнайдин,
23

Или вы можете проверить бесплатную версию StampVer для файлов Win32 exe / dll.
Это изменит только версию файла и продукта, если у них уже есть ресурс версии. Он не может добавить ресурс версии, если он не существует.

Райан
источник
19

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, если вы используете Grunt.

оплачиваемый ботаник
источник
5
обратите внимание, что rcedit может только изменять существующие ресурсы, но не вставлять новые,
Беван Коллинз
2
Не работает с sfx-архивами 7zip: / Просто вырезает часть архива 7zip.
Mgamerz
1
пробовал это, продолжает давать невозможность загрузить файл, когда находится в том же каталоге, и похоже, что инструмент может зависеть от конфигурации хоста
Arijoon
Работает с заглушкой 7zS.sfx, первой частью с VERSIONINFO внутри, которую вы используете для объединения самораспаковывающегося архива. Вручную вы также можете переименовать 7zS.sfx в 7zS.exe и отредактировать его в Visual Studio, но поскольку номер версии меняется для каждой сборки, вы предпочитаете пакетный файл с операторами rcedit внутри для его установки.
AndresRohrAtlasInformatik
1
этот инструмент очень неприятен, пожалуйста, обратите внимание на эту ошибку, прежде чем применять ее к своим двоичным
Brun
14

А что насчет этого?

verpatch /va foodll.dll %VERSION% %FILEDESCR% %COMPINFO% %PRODINFO% %BUILDINFO%

Доступно здесь с полными исходными кодами .

филофель
источник
Verpatch, похоже, создал для меня ресурс с плохой версией продукта (с использованием /va /pvопции). Версия корректно отображалась в проводнике Windows, но последний символ отсутствовал при получении в коде с помощью VerQueryValue. Чтобы исправить плохой ресурс, я сделал следующее: (1) Загрузите DLL в Resource Hacker. (2) Просмотрите ресурс версии. (3) Скомпилируйте (измените что-нибудь, а затем верните обратно, чтобы активировать кнопку). (4) Сохранить.
dan-gph
verpatch отлично работает как для x64, так и для x86-версий моих библиотек DLL на моем устройстве для разработчиков, однако в проекте сборки apveyor он работает только для x64 и не делает абсолютно ничего для dll x86 - никаких ошибок тоже! какие-нибудь намеки на то, что может случиться? В журнале appveyor я вижу, что команда verpatch выполняется, ошибок нет, dll каким-то образом не заменяется, и в конце концов у нее нет штампа версии; для x64 все работает нормально во всех ситуациях. какие-нибудь подсказки, пожалуйста?
Ovi
@ Ови-Ван Кеноби: Я не знал, что такое конвейер, но, судя по вашему описанию, мне это больше похоже на проблему с конвейером. В худшем случае, если это возможно, приготовьтесь к некоторой отладке в среде apveyor? ...
filofel
11

Есть этот инструмент ChangeVersion [1]

Список возможностей (с сайта):

  • Интерфейс командной строки
  • поддержка файлов .EXE, .DLL и .RES
  • обновить FileVersion и ProductVersion на основе маски версии
  • добавить / изменить / удалить строки ключа версии
  • настроить флаги файлов (отладочные, специальные, частные и т. д.)
  • обновить файлы проекта (.bdsproj | .bpr | .bpk | .dproj)
  • добавить / изменить значок основного приложения
  • использовать ini файл с конфигурацией
  • Поддержка Windows Vista (требуется повышение прав)
  • легко интегрировать в среду непрерывной сборки

Полное раскрытие информации: я знаю парня, который написал этот инструмент, я работал с ним. Но это также означает, что я знаю, что он делает качественный софт;)


[1] ссылка мертва. Похоже, есть зеркальная версия на download.cnet.com .

Другая сторона
источник
@Gareth Я добавил зеркальную ссылку. С другой стороны, я сомневаюсь, что этот ответ имеет какую-либо ценность без какой-либо рабочей ссылки.
Wolf
5
Вторая ссылка приводит к просроченному инструменту"Change Version v2012.9.6.0 - (C)2007-2012 The-Software-Box.com This trial version has expired"
Preet Sangha
2
При запуске в командной строке он говорит: «Изменить версию v2012.9.6.0 - (C) 2007-2012 The-Software-Box.com Срок действия этой пробной версии истек»
RDeveloper
10

Я делаю это без дополнительных инструментов. Я только что добавил следующие файлы в свой проект приложения 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 ipanera@gmail.com"
#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
user3016543
источник
2
Просто любопытно; как вы помешали Windows перезаписывать ваш .rc файл каждый раз, когда вы меняете диалог или модифицируете любой ресурс в проекте? До сих пор я видел пару подобных статей, и кажется, что это сработает, если вам больше никогда не придется менять ресурс, что приведет к автоматической генерации в среде IDE.
shawn1874 03
@ shawn1874 - Включить #include <windows.h>в resource.hфайл автоматически добавляемую строку . Этот файл не создается повторно (обратите внимание, что в верхней части файла .rc он указывает, что это сгенерированный код, и его можно изменить в дизайнере).
CJBS
1
@CJBS, который не отвечает на вопрос. Хотя это может сработать, это не объясняет, как может работать опубликованный ответ. В опубликованном ответе user3016543 включает version.h непосредственно в файл .rc. Есть несколько способов справиться с перезаписью файла .rc, и я знаю, как это сделать. Я всего лишь сомневаюсь в том, как показан этот конкретный ответ, потому что он мне не кажется правильным.
shawn1874
Я предполагаю, что этот метод работает для него, потому что рассматриваемый компонент не имеет компонентов диалога, поэтому файл не восстанавливается часто и никогда. Однако в приложении Windows с диалоговыми ресурсами MFC это не так.
shawn1874
1
Спасибо, что напомнили мне о методе, который я впервые увидел в действии в файле ресурсов, который поставляется с WinBatch Extender SDK. Я так давно не нуждался в нем, что забыл большинство деталей. Ваше объяснение все вернуло.
Дэвид А. Грей
8

verpatch хорош, но не обрабатывает символы Юникода ...
попробуйте ResourceLib

пользователь581430
источник
6

Есть несколько инструментов, упомянутых во многих отличных ответах, я собираюсь выбрать один.

Ресурсный хакер

Я загрузил последнюю версию ( 5.1.7 ) с сайта [AngusJ]: Resource Hacker . На этой странице можно найти всю необходимую информацию (параметры командной строки, сценарии, ...). В следующем пошаговом руководстве я буду работать с двумя исполняемыми файлами (лабораторными крысами), которые (по понятным причинам) я скопировал в свой cwd :

  • ResourceHacker.exe : подумал, будет интересно поработать над собой
  • cmake.exe : случайный исполняемый файл без установленной информации о версии (часть установки v3.6.3 на моем компьютере)

Прежде чем продолжить, я хочу упомянуть, что у ResourceHacker есть забавный вывод терминала , и следующие фрагменты копирования / вставки могут вызвать небольшую путаницу.

1. Настройка

Это больше похоже на предварительный шаг, чтобы познакомиться с окружающей средой, чтобы показать, что никакого фанкового бизнеса не происходит, ...

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

Как видно, с исполняемыми файлами все в порядке, они работают нормально, и вот как выглядят их детали (которые нам важны):

Img0-Initial

2. Ресурсы

Файлы ресурсов - это текстовые файлы, содержащие ресурсы. Ресурс (упрощенный) содержит:

  • название
  • Тип
  • Стоимость

Для получения дополнительных сведений см. [MS.Docs]: О файлах ресурсов . Существует множество инструментов (упомянутых в существующих ответах), которые облегчают редактирование файлов ресурсов, например:

  • VStudio создает файл по умолчанию при запуске нового проекта
  • Такой файл можно создать вручную
  • Но, поскольку речь идет о Resource Hacker , и:

    • Он может извлекать ресурсы из существующего исполняемого файла
    • В него встроены ресурсы (как показано на предыдущем рисунке)

    Я собираюсь использовать его на этом этапе ( -action extract)

Затем, чтобы ресурс был встроен в .exe ( .dll , ...), он должен быть скомпилирован в двоичную форму, которая соответствует формату PE . Опять же, есть много инструментов, которые могут достичь этого, но, как вы, наверное, догадались, я буду придерживаться Resource Hacker ( -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  
}
}

3. Встроить

Это также будет выполнено Resource Hacker ( -action addoverwrite). Поскольку .exe уже скопированы, я собираюсь редактировать их ресурсы на месте.

[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

Как видно, мне пришлось пойти на небольшую хитрость ( выигрыш ), так как я не могу (по крайней мере, я не думаю, что могу) изменять .exe во время использования.

4. Тест

Это необязательный этап, чтобы убедиться, что:

  • Исполняемые файлы все еще работают (они не были испорчены в процессе)
  • Ресурсы добавлены / обновлены
[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

И их детали :

Img1-Final

CristiFati
источник
@ColonelPanic: Спасибо!
CristiFati
Очень хороший ответ. К сожалению, ResourceHacker больше не поддерживается, и ему не хватает памяти при попытке отредактировать большой EXE-файл (я получил ошибку при попытке открыть exe-файл размером 3 ГБ).
Lews Therin
@LewsTherin: Последняя версия (также использованная в ответе) от 2019/01, поэтому я бы сказал, что она поддерживается. Проблема в том, что это 32 бит . Вы можете связаться с авторами и попросить 64-битную версию (я предполагаю, что, поскольку у них уже есть код, собрать его для 64- битной версии не составит труда ).
CristiFati
3

Существует Resource Tuner Console от Heaventools Software.

Консоль Resource Tuner Console - это инструмент командной строки, который позволяет разработчикам автоматизировать редактирование различных типов ресурсов в большом количестве 32- и 64-разрядных исполняемых файлов Windows.

См. Более подробную информацию на странице « Изменение переменных версии и обновление информации о версии» .

Wylder
источник
3

Немного поздно для вечеринки, но поскольку я искал его (и мне, возможно, когда-нибудь понадобится найти его снова), вот что я сделал, чтобы включить версию, название компании и т. Д. В мою C ++ DLL в VS2013 Express:

  1. Создал и отредактировал файл dllproj.rc, как указано ранее.
  2. Добавлена ​​строка «rc.exe dllproj.rc» в качестве шага перед сборкой в ​​проект DLL.
  3. Добавлен файл dllproj.res в папку ресурсов проекта.

Надеюсь это поможет!

Том Гордон
источник
3

приведенный выше ответ от @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]

RDR
источник
2

На самом деле вы можете попытаться загрузить FVIE из Download Link и попытайтесь отредактировать информацию для любого EXE - файла.

(ИЛИ)

Вы можете скачать StampVer - Win32 Версия Штамповка ресурсов от загрузки Ссылка , которая действительно полезна для окон .exe файлов.

(ИЛИ)

Вы можете использовать командный инструмент под названием RCEDIT . Загрузите ссылку на исходный код Github, а затем выполните сборку с помощью Visual Studio 2015, а затем у вас есть определенные команды для изменения версии файлов .exe. См. Ссылку на Документы для получения информации о различных доступных командах.

Subash J
источник
1

Это лучший инструмент, который я видел для этой работы, он позволяет полностью контролировать все файловые ресурсы, включая VersionInfo.

См: ResourceEditor по Андерс Меландер .

Дж. Коллинз
источник
1
Загрузка редактора ресурсов (0 байт) прервана.
Джек