Jak ustawić informacje o wersji dla istniejącego pliku .exe, .dll?


114

W ramach naszego procesu kompilacji muszę ustawić informacje o wersji dla wszystkich skompilowanych plików binarnych. Niektóre pliki binarne mają już informacje o wersji (dodane w czasie kompilacji), a niektóre nie.

Chcę móc zastosować następujące informacje:

  • Nazwa firmy
  • Informacja o prawach autorskich
  • Nazwa produktu
  • Opis produktu
  • Wersja pliku
  • Wersja Produktu

Wszystkie te atrybuty są określone w skrypcie kompilacji i muszą zostać zastosowane po kompilacji. Są to standardowe pliki binarne (nie zestawy) skompilowane za pomocą C ++ Builder 2007.

W jaki sposób mogę to zrobić?


do czego służy ResourceHacker ? jak dokładnie ustawione jest zadanie? w jakim problemie użyj UpdateResourcefunkcji, jeśli zadanie zaktualizuj wersję w istniejącym pe
— RbMm

Spróbuj tego: alternativeto.net/software/xn-resource-editor , myślę, że istnieją narzędzia inżynierii odwrotnej, które to robią
— i_thamary

Odpowiedzi:


60

Chociaż nie jest to proces wsadowy, program Visual Studio może również dodawać / edytować zasoby plików.

Po prostu użyj Plik-> Otwórz-> Plik w .EXE lub .DLL. Jest to przydatne do poprawiania informacji o wersji po kompilacji lub dodawania ich do plików, które nie mają tych zasobów na początku.


8
To działało idealnie, kiedy tego próbowałem. W przypadku pliku, w którym całkowicie brakuje informacji o wersji: po otwarciu biblioteki DLL w programie Visual Studio przejdź do pozycji Edycja> Dodaj zasób> Wersja i kliknij przycisk Nowy. Następnie na nowej karcie Wersja zmień WERSJĘ FILTRA i WERSJĘ PRODUKTU, Nazwa firmy itp. Zapisz pliki i gotowe!
— twasbrillig

2
@UweBaemayr. odpowiedź, którą zacytowałeś, chcę zapytać tak samo, jak możemy to zautomatyzować, ponieważ robię to samo budowanie postów i chcę to zautomatyzować. Ale jak ?
— SteveScm

1
W przypadku mojej starej biblioteki Delphi win32 dll to nie działa. Chociaż informacje dll są poprawnie zmieniane, podczas sprawdzania ich poprawności zdajesz sobie sprawę, że są uszkodzone.
— sthiers

3
Wypróbowałem to (dodaj informacje o wersji) w Windows 8, VS 2015 i wszystko jest dobrze w Eksploratorze Windows, z wyjątkiem ... plik wykonywalny już się nie uruchamia.
— Liviu

37

W przeciwieństwie do wielu innych odpowiedzi, to rozwiązanie wykorzystuje całkowicie bezpłatne oprogramowanie.

Najpierw utwórz plik o nazwie Resources.rctakiej:

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
    }
}

Następnie użyj GoRC, aby skompilować go do .respliku za pomocą:

GoRC /fo Resources.res Resources.rc

(zobacz mój komentarz poniżej dla lustra GoRC.exe)

Następnie użyj Resource Hacker w trybie CLI, aby dodać go do istniejącego .exe:

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

Otóż ​​to!


1
@CharlesB Sam to zauważyłem, ale to właściwy link. Wygląda na to, że ktoś zapomniał zapłacić swojemu usługodawcy hostingowemu! Oto plik binarny, skopiowałem go na moje publiczne konto Assembla: assembla.com/code/danny-beckett/subversion/nodes/13/GoRC.exe
— Danny Beckett

3
Możesz również użyć kompilatora zasobów firmy Microsoft zamiast GoRC. Jest dostępny z Windows SDK.
— Holistic Developer,

Kciuki w górę dla Resource Hacker, użyłem go w tej odpowiedzi na to i jest to genialny, świetny program. (brak podobieństwa do programu lub twórcy ;-)
— user2109254

@UweKeim Nie używałem tego przez jakiś czas, ale jestem prawie pewien, że są one wymagane.
— Danny Beckett

6
Wygląda na to wiersz poleceń zmienił się nieco: ResourceHacker.exe -open Source.dll -save Changed.dll -action addoverwrite -resource Version.resRównież Resource Hacker można skompilować sam plik .RC:ResourceHacker.exe -open Version.rc -save Version.res -action compile
— Yusuf Tarık Gunaydin

23

Możesz też sprawdzić darmowy program StampVer for Win32 exe / dll.
Zmieni to tylko plik i wersje produktu, jeśli mają już zasoby wersji. Nie może dodać zasobu wersji, jeśli taki nie istnieje.


19

rcedit jest stosunkowo nowy i działa dobrze z wiersza poleceń: 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"

Istnieje również moduł NPM, który otacza go z JavaScript i zadanie Grunt w przypadku, gdy używasz Grunt.


5
zwróć uwagę, że rcedit może tylko modyfikować istniejące zasoby, a nie wstawiać nowych
— Bevan Collins,

2
Nie działa z archiwami 7zip sfx: / Po prostu wycina część archiwum 7zip.
— Mgamerz

1
próbowałem tego, nadal nie można załadować pliku, gdy znajduje się w tym samym katalogu i wygląda na to, że narzędzie może zależeć od konfiguracji hosta
— Arijoon

Działa z kodem pośrednim 7zS.sfx, pierwszą częścią zawierającą VERSIONINFO wewnątrz, którego używasz do łączenia samorozpakowującego się archiwum. Możesz również ręcznie zmienić nazwę 7zS.sfx w 7zS.exe i edytować go w programie Visual Studio, ale ponieważ numer wersji zmienia się dla każdej kompilacji, wolisz plik wsadowy z instrukcjami rcedit w środku, aby go ustawić.
— AndresRohrAtlasInformatik

1
to narzędzie jest bardzo paskudne, spójrz na ten błąd przed zastosowaniem go w swoich plikach
— Brun,

14

A co z czymś takim?

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

Dostępne tutaj z pełnymi źródłami .


Wydawało się, że Verpatch stworzył dla mnie źródło złej wersji produktu (używając tej /va /pvopcji). Wersja pojawiła się poprawnie w Eksploratorze Windows, ale brakowało ostatniego znaku podczas pobierania w kodzie z VerQueryValue. Aby naprawić zły zasób, zrobiłem to: (1) Załaduj bibliotekę DLL w Resource Hacker. (2) Wyświetl zasoby wersji. (3) Kompiluj (zmodyfikuj coś, a następnie zmień z powrotem, aby włączyć przycisk). (4) Zapisz.
— dan-gph

verpatch działa świetnie zarówno dla wersji x64, jak i x86 moich bibliotek DLL na moim dev boxie, jednak w projekcie kompilacji apveyor działa tylko dla x64 i nie robi absolutnie nic z dll x86 - też nie ma błędu! jakieś wskazówki, co może się stać? Widzę w dzienniku appveyor, że komenda verpatch jest wykonywana, żadnych błędów, a dll nie jest w jakiś sposób zastępowany i na końcu nie ma znacznika wersji; dla x64 wszystko działa dobrze we wszystkich sytuacjach. jakieś wskazówki proszę?
— Ovi

@ Ovi-Wan Kenobi: Nie wiedziałem, co to jest apveyor, ale zgodnie z twoim opisem wygląda to bardziej na problem apveyor. W najgorszym przypadku, jeśli to możliwe, przygotuj się na debugowanie w środowisku apveyor? ...
— filofel

11

Jest to narzędzie ChangeVersion [1]

Lista funkcji (ze strony internetowej):

  • interfejs linii komend
  • obsługa plików .EXE, .DLL i .RES
  • zaktualizuj FileVersion i ProductVersion na podstawie maski wersji
  • dodaj / zmień / usuń ciągi kluczy wersji
  • dostosuj flagi plików (debugowanie, specjalne, prywatne itp.)
  • zaktualizuj pliki projektu (.bdsproj | .bpr | .bpk | .dproj)
  • dodaj / zmień główną ikonę aplikacji
  • użyj pliku ini z konfiguracją
  • Obsługa systemu Windows Vista (wymaga podniesienia uprawnień)
  • łatwe do zintegrowania w ciągłym środowisku kompilacji

Pełne ujawnienie: znam gościa, który napisał to narzędzie, pracowałem z nim. Ale to również oznacza, że ​​wiem, że tworzy wysokiej jakości oprogramowanie;)


[1] link nie działa. Wygląda na to, że istnieje wersja lustrzana pod adresem download.cnet.com .


@Gareth Dodałem łącze lustrzane. Poza tym wątpię, aby ta odpowiedź miała jakąkolwiek wartość bez żadnego roboczego odniesienia.
— Wolf

5
Drugi link prowadzi do wygasłego narzędzia"Change Version v2012.9.6.0 - (C)2007-2012 The-Software-Box.com This trial version has expired"
— Preet Sangha

2
Po uruchomieniu w wierszu poleceń wyświetla się komunikat „Zmień wersję v2012.9.6.0 - (C) 2007-2012 The-Software-Box.com Ta wersja próbna wygasła”
— RDeveloper

10

Robię to bez dodatkowego narzędzia. Właśnie dodałem następujące pliki do mojego projektu aplikacji Win32.

Jeden plik nagłówkowy, który definiuje niektóre stałe, których możemy ponownie użyć w naszym pliku zasobów, a nawet w kodzie programu. Musimy utrzymywać tylko jeden plik. Dzięki zespołowi Qt, który pokazał mi, jak to zrobić w projekcie Qt, teraz działa również w mojej aplikacji Win32.

---- [wersja.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

2
Po prostu ciekawy; Jak powstrzymałeś system Windows przed nadpisywaniem pliku .rc za każdym razem, gdy zmieniasz okno dialogowe lub modyfikujesz dowolny zasób w projekcie? Widziałem do tej pory kilka takich artykułów i wygląda na to, że zadziałałoby, gdybyś nigdy więcej nie musiał zmieniać zasobu, który spowodowałby automatyczne generowanie przez IDE.
— shawn1874

@ shawn1874 - Uwzględnij wiersz #include <windows.h>w resource.hpliku, który został dodany automatycznie. Ten plik nie jest ponownie generowany (uwaga na górze pliku .rc wskazuje, że jest to wygenerowany kod i można go zmodyfikować w projektancie).
— CJBS

1
@CJBS to nie odpowiada na pytanie. Chociaż może to zadziałać, nie wyjaśnia, jak może działać opublikowana odpowiedź. W opublikowanej odpowiedzi user3016543 umieszcza wersję.h bezpośrednio w pliku .rc. Jest kilka sposobów radzenia sobie z nadpisywaniem pliku .rc, które wiem, jak to zrobić. Kwestionuję tylko sposób, w jaki ta konkretna odpowiedź jest pokazana, ponieważ nie wygląda to dobrze.
— shawn1874

Domyślam się, że ta metoda działa u niego, ponieważ dany komponent nie ma komponentów dialogowych, więc plik nie jest regenerowany często ani nigdy. Jednak w aplikacji systemu Windows z zasobami okna dialogowego MFC nie byłoby to możliwe.
— shawn1874

1
Dziękuję za przypomnienie mi o technice, którą po raz pierwszy zobaczyłem w akcji w pliku zasobów dostarczonym z zestawem SDK WinBatch Extender. Minęło tak dużo czasu, odkąd go potrzebowałem, że zapomniałem większości szczegółów. Twoje wyjaśnienie przywróciło to wszystko.
— David A. Gray


6

Istnieje wiele narzędzi, o których wspomina wiele świetnych odpowiedzi, wybiorę jedno.

Resource Hacker

Pobrałem najnowszą wersję ( 5.1.7 ) z [AngusJ]: Resource Hacker . Wszystkie potrzebne informacje można znaleźć na tej stronie (opcje wiersza poleceń, skrypty, ...). W poniższym przewodniku zamierzam operować na 2 plikach wykonywalnych (szczurach laboratoryjnych), które (z oczywistych powodów) skopiowałem w moim cwd :

  • ResourceHacker.exe : Pomyślałem, że byłoby interesujące operowanie na sobie
  • cmake.exe : losowy plik wykonywalny bez informacji o wersji (część instalacji v3.6.3 na moim komputerze)

Zanim przejdę dalej, chciałbym wspomnieć, że ResourceHacker ma zabawne wyjście terminala , a następujące fragmenty kopiuj / wklej mogą spowodować trochę zamieszania.

1. Konfiguracja

Jest to raczej wstępny krok, aby zapoznać się ze środowiskiem, pokazać, że nie dzieje się nic dziwnego, ...

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

Jak widać, pliki wykonywalne są w porządku, działają dobrze, a oto jak wyglądają ich szczegóły (na których nam zależy):

Img0-Initial

2. Zasoby

Pliki zasobów to pliki tekstowe zawierające zasoby. Zasób (uproszczony) ma:

  • Imię
  • Rodzaj
  • Wartość

Aby uzyskać więcej informacji, zobacz [MS.Docs]: About Resource Files . Istnieje wiele narzędzi (wymienionych w istniejących odpowiedziach), które ułatwiają edycję plików zasobów, takich jak:

  • VStudio tworzy domyślny plik podczas rozpoczynania nowego projektu
  • Taki plik można stworzyć ręcznie
  • Ale ponieważ chodzi o Resource Hacker i:

    • Jest w stanie wyodrębnić zasoby z istniejącego pliku wykonywalnego
    • Ma osadzone zasoby (jak pokazano na poprzednim obrazku)

    Użyję tego w tym kroku ( -action extract)

Następnie, aby zasób mógł zostać osadzony w pliku .exe ( .dll , ...), należy go skompilować do postaci binarnej, która pasuje do formatu PE . Ponownie, istnieje wiele narzędzi, które mogą to osiągnąć, ale jak zapewne się domyślasz, pozostanę przy 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

W twoim przypadku zapisywanie i edytowanie pliku zasobów nie będzie konieczne, ponieważ plik będzie już obecny, zrobiłem to tylko w celach demonstracyjnych. Poniżej znajduje się plik zasobów po modyfikacji (a więc przed kompilacją).

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. Osadź

Zostanie to również wykonane przez Resource Hacker ( -action addoverwrite). Ponieważ pliki .exe są już skopiowane, zamierzam edytować ich zasoby w miejscu.

[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

Jak widać, musiałem zrobić małą sztuczkę ( gainarie ), ponieważ nie mogę (przynajmniej nie sądzę, żebym mógł) modyfikować .exe podczas używania.

4. Test

Jest to faza opcjonalna, aby upewnić się, że:

  • Pliki wykonywalne nadal działają (nie zostały pomieszane w trakcie)
  • Zasoby zostały dodane / zaktualizowane
[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

I ich szczegóły :

Img1-Final


@ColonelPanic: Dziękuję!
— CristiFati

Bardzo ładna odpowiedź. Niestety ResourceHacker nie jest już obsługiwany i zabraknie pamięci podczas próby edycji dużego pliku EXE (wystąpił błąd podczas próby otwarcia pliku exe o pojemności 3 GB).
— Lews Therin

@LewsTherin: Najnowsza wersja (również używana w odpowiedzi) pochodzi z 2019/01, więc powiedziałbym, że jest całkiem utrzymana. Problem w tym, że jest 32 - bitowy . Możesz skontaktować się z autorami z prośbą o wersję 64-bitową (zakładam, że skoro mają już kod, nie byłoby trudno zbudować ją na 64-bitową ).
— CristiFati


3

Trochę późno na imprezę, ale ponieważ jej szukałem (i być może będę musiał kiedyś to znaleźć), oto co zrobiłem, aby dołączyć wersję, nazwę firmy itp. Do mojej biblioteki DLL C ++ pod VS2013 Express:

  1. Utworzono i edytowano plik dllproj.rc, jak wskazano wcześniej.
  2. Dodano wiersz „rc.exe dllproj.rc” jako krok przed kompilacją w projekcie DLL.
  3. Dodano plik dllproj.res do folderu zasobów projektu.

Mam nadzieję że to pomoże!


3

powyżej odpowiedź od @DannyBeckett bardzo mi pomogło,

Umieszczam następujący plik w pliku wsadowym i umieszczam go w tym samym folderze, w którym znajduje się ResourceHacker.exe i plik EXE, nad którym pracuję, i działa doskonale. [możesz go edytować zgodnie ze swoimi potrzebami]

    @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

[na marginesie, do skompilowania pliku res użyłem hakera zasobów, a nie GoRC]


2

W rzeczywistości możesz spróbować pobrać FVIE z łącza pobierania i spróbować edytować informacje dla dowolnego pliku .exe.

(LUB)

Możesz pobrać StampVer - znakowanie zasobów wersji Win32 z linku pobierania, co jest naprawdę przydatne dla plików .exe systemu Windows.

(LUB)

Możesz użyć narzędzia poleceń o nazwie RCEDIT . Pobierz z linku źródłowego Github, a następnie skompiluj za pomocą programu Visual Studio 2015, a następnie masz określone polecenia do zmiany wersji plików .exe. Zobacz link Dokumenty, aby uzyskać dostęp do różnych dostępnych poleceń.


1

To najlepsze narzędzie, jakie widziałem do tej pracy, umożliwia pełną kontrolę nad wszystkimi zasobami plików, w tym VersionInfo.

Zobacz: ResourceEditor autorstwa Andersa Melandera .


1
Pobieranie dla Edytora zasobów (0 bajtów) nie działa.
— Jack
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.