Bagaimana cara mengatur informasi versi untuk .exe, .dll yang sudah ada?

113

Sebagai bagian dari proses pembangunan kami, saya perlu mengatur informasi versi untuk semua binari terkompilasi kami. Beberapa binari sudah memiliki informasi versi (ditambahkan pada waktu kompilasi) dan beberapa tidak.

Saya ingin dapat menerapkan informasi berikut:

  • Nama Perusahaan
  • Pemberitahuan Hak Cipta
  • nama Produk
  • Deskripsi Produk
  • Versi File
  • Versi Produk

Semua atribut ini ditentukan oleh skrip build dan harus diterapkan setelah kompilasi. Ini adalah binari standar (bukan rakitan) yang dikompilasi dengan C ++ Builder 2007.

Bagaimana saya bisa melakukan ini?

Carl
sumber
untuk apa gunanya ResourceHacker ? bagaimana tepatnya tugas ditetapkan? dalam masalah apa UpdateResourcefungsi penggunaan , jika versi pembaruan tugas di pe yang ada
RbMm
Coba ini: alternativeto.net/software/xn-resource-editor , saya pikir ada alat rekayasa terbalik untuk melakukannya
i_thamary

Jawaban:

59

Meskipun ini bukan proses batch, Visual Studio juga dapat menambahkan / mengedit sumber file.

Cukup gunakan File-> Open-> File di .EXE atau .DLL. Ini berguna untuk memperbaiki informasi versi pasca-pembuatan, atau menambahkannya ke file yang tidak memiliki sumber daya ini.

UweBaemayr
sumber
8
Ini bekerja dengan sempurna ketika saya mencobanya. Untuk file yang tidak memiliki info versi sepenuhnya: Setelah membuka DLL di Visual Studio, buka Edit> Add Resource> Version dan klik New. Kemudian di tab Versi baru, ubah FILEVERSION dan PRODUCTVERSION, CompanyName, dll. Simpan file dan Anda sudah siap!
twasbrillig
2
@Tokopedia jawaban yang Anda kutip saya ingin bertanya sama seperti kami dapat mengotomatiskannya persis seperti saya melakukan pembuatan posting yang sama dan saya ingin mengotomatiskannya. Tapi bagaimana caranya ?
SteveScm
1
Untuk Delphi win32 dll lama saya ini tidak berhasil. Meskipun informasi dll diubah dengan benar, ketika menjalankan pemeriksaan kewarasan di atasnya Anda menyadari itu rusak.
Sthiers
3
Mencoba ini (tambahkan info versi) pada Windows 8, VS 2015 dan semuanya baik-baik saja di Windows Explorer, kecuali ... yang dapat dieksekusi tidak akan mulai lagi.
Liviu
36

Tidak seperti banyak jawaban lainnya, solusi ini menggunakan perangkat lunak yang sepenuhnya gratis.

Pertama, buat file bernama Resources.rcseperti ini:

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

Selanjutnya, gunakan GoRC untuk mengkompilasinya menjadi .resfile menggunakan:

GoRC /fo Resources.res Resources.rc

(lihat komentar saya di bawah untuk cermin GoRC.exe)

Kemudian gunakan Resource Hacker dalam mode CLI untuk menambahkannya ke yang sudah ada .exe:

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

Itu dia!

Danny Beckett
sumber
1
@CharlesB Saya sendiri menyadarinya, tapi itu tautan yang benar. Sepertinya seseorang lupa membayar host webnya! Ini binernya, saya telah mencerminkannya ke akun Assembla publik saya: assembla.com/code/danny-beckett/subversion/nodes/13/GoRC.exe
Danny Beckett
3
Anda juga dapat menggunakan Microsoft Resource Compiler sebagai pengganti GoRC. Ini tersedia dengan SDK Windows.
Pengembang Holistik
Jempol untuk Resource Hacker, saya menggunakannya berdasarkan jawaban ini dan ini adalah program yang brilian dan hebat. (tidak ada keterkaitan dengan program atau pembuat ;-)
user2109254
@UweKeim Saya sudah lama tidak menggunakan ini, tapi saya yakin itu diperlukan.
Danny Beckett
6
Sepertinya baris perintah telah berubah sedikit: ResourceHacker.exe -open Source.dll -save Changed.dll -action addoverwrite -resource Version.resSelain itu, ResourceHacker dapat mengkompilasi file .rc itu sendiri:ResourceHacker.exe -open Version.rc -save Version.res -action compile
Yusuf Tarık Günaydın
23

Atau Anda dapat memeriksa StampVer freeware untuk file exe / dll Win32.
Ini hanya akan mengubah file dan versi produk jika mereka sudah memiliki sumber versi. Itu tidak dapat menambahkan sumber versi jika tidak ada.

Ryan
sumber
19

rcedit relatif baru dan berfungsi dengan baik dari baris perintah: 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"

Ada juga modul NPM yang membungkusnya dari JavaScript dan tugas Grunt jika Anda menggunakan Grunt.

seorang kutu buku yang dibayar
sumber
5
perhatikan bahwa rcedit hanya dapat mengubah sumber daya yang ada tidak memasukkan yang baru
Bevan Collins
2
Tidak berfungsi dengan arsip sfx 7zip: / Cukup potong bagian arsip 7zip.
Mgamerz
1
mencoba ini, terus memberikan tidak dapat memuat file ketika berada di direktori yang sama dan sepertinya alat tersebut mungkin bergantung pada konfigurasi host
Arijoon
Bekerja dengan stub 7zS.sfx, bagian pertama dengan VERSIONINFO di dalam yang Anda gunakan untuk menggabungkan arsip yang mengekstrak sendiri. Secara manual Anda juga dapat mengganti nama 7zS.sfx di 7zS.exe dan mengeditnya di Visual Studio tetapi karena nomor versi berubah untuk setiap build, Anda lebih memilih file batch dengan pernyataan rcedit di dalamnya untuk mengaturnya.
AndresRohrAtlasInformatik
1
alat ini sangat buruk, lihat bug ini sebelum menerapkannya ke binari Anda: github.com/electron/rcedit/issues/51
Brun
14

Bagaimana dengan sesuatu yang seperti ini?

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

Tersedia disini dengan sumber lengkap .

filofel
sumber
Verpatch tampaknya membuat sumber versi produk yang buruk untuk saya (menggunakan /va /pvopsi). Versi ini muncul dengan benar di Windows Explorer tetapi karakter terakhir hilang saat diambil dalam kode dengan VerQueryValue. Untuk memperbaiki sumber daya yang buruk, saya melakukan ini: (1) Muat DLL di Resource Hacker. (2) Lihat sumber versi. (3) Kompilasi (ubah sesuatu lalu ubah kembali untuk mengaktifkan tombol). (4) Simpan.
dan-gph
verpatch bekerja sangat baik untuk versi x64 dan x86 dari DLL saya pada kotak dev saya namun dalam proyek pembuatan apveyor, ini hanya berfungsi untuk x64 dan tidak melakukan apa pun pada x86 dll - tidak ada kesalahan juga! ada petunjuk apa yang mungkin terjadi? Saya dapat melihat di appveyor log perintah verpatch sedang dijalankan, tidak ada kesalahan, dan dll tidak mendapatkan entah bagaimana diganti dan akhirnya tidak memiliki cap versi; untuk x64 semuanya berfungsi dengan baik di semua situasi. ada petunjuk?
Ovi
@ Ovi-Wan Kenobi: Saya tidak tahu apa itu apveyor, tapi menurut uraian Anda, menurut saya ini lebih seperti masalah apveyor. Paling buruk, jika itu memungkinkan, bersiaplah untuk beberapa debugging di lingkungan apveyor? ...
filofel
10

Ada alat ini ChangeVersion [1]

Daftar fitur (dari situs web):

  • antarmuka baris perintah
  • dukungan untuk file .EXE, .DLL dan .RES
  • perbarui FileVersion dan ProductVersion berdasarkan topeng versi
  • tambahkan / ubah / hapus string kunci versi
  • sesuaikan bendera file (debug, khusus, pribadi dll)
  • perbarui file proyek (.bdsproj | .bpr | .bpk | .dproj)
  • tambahkan / ubah ikon aplikasi utama
  • gunakan file ini dengan konfigurasi
  • Dukungan Windows Vista (perlu peningkatan)
  • mudah diintegrasikan ke dalam lingkungan build yang berkelanjutan

Pengungkapan Penuh: Saya tahu orang yang menulis alat ini, saya pernah bekerja dengannya. Tapi ini juga berarti saya tahu dia membuat perangkat lunak berkualitas;)


[1] tautannya sudah mati. Tampaknya ada versi cermin di download.cnet.com .

Sisi lain
sumber
@ Gareth Saya menambahkan tautan cermin. Selain itu, saya ragu bahwa jawaban ini memiliki nilai apa pun tanpa referensi kerja apa pun.
Serigala
5
Tautan kedua menghasilkan alat yang kedaluwarsa"Change Version v2012.9.6.0 - (C)2007-2012 The-Software-Box.com This trial version has expired"
Preet Sangha
2
Saat menjalankannya di baris perintah, dikatakan "Ubah Versi v2012.9.6.0 - (C) 2007-2012 The-Software-Box.com Versi uji coba ini telah kedaluwarsa"
RDeveloper
10

Saya melakukannya tanpa alat tambahan. Saya baru saja menambahkan file berikut ke proyek aplikasi Win32 saya.

Satu file header yang mendefinisikan beberapa konstanta daripada yang dapat kita gunakan kembali pada file resource kita dan bahkan pada kode program. Kami hanya perlu memelihara satu file. Terima kasih kepada tim Qt yang menunjukkan kepada saya cara melakukannya pada proyek Qt, sekarang juga berfungsi di aplikasi Win32 saya.

---- [version.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
pengguna3016543
sumber
2
Hanya penasaran; bagaimana Anda menghentikan windows agar tidak menimpa file .rc Anda setiap kali Anda mengubah dialog atau memodifikasi sumber daya apa pun dalam proyek? Saya telah melihat beberapa artikel seperti ini sejauh ini dan sepertinya ini akan berhasil jika Anda tidak perlu mengubah sumber daya lagi yang akan menyebabkan pembuatan otomatis oleh IDE.
shawn1874
@ shawn1874 - Sertakan baris #include <windows.h>dalam resource.hfile yang ditambahkan secara otomatis. File itu tidak dibuat ulang (catatan di bagian atas file .rc ini menunjukkan kode itu dibuat, dan dapat dimodifikasi di desainer).
CJBS
1
@CJBS yang tidak menjawab pertanyaan itu. Meskipun itu mungkin berhasil, itu tidak menjelaskan bagaimana jawaban yang diposting dapat bekerja. Dalam jawaban yang diposting, user3016543 menyertakan version.h langsung di dalam file .rc. Ada beberapa cara untuk menangani penimpaan file .rc yang saya tahu cara melakukannya. Saya hanya mempertanyakan cara jawaban khusus ini ditampilkan karena menurut saya tidak tepat.
shawn1874
Saya menduga metode itu bekerja untuknya karena komponen yang dimaksud tidak memiliki komponen dialog sehingga file tidak sering atau pernah dibuat ulang. Namun dalam aplikasi windows dengan sumber dialog MFC itu tidak akan terjadi.
shawn1874
1
Terima kasih telah mengingatkan saya tentang teknik yang pertama kali saya lihat beraksi di file sumber daya yang dikirimkan dengan WinBatch Extender SDK. Sudah begitu lama sejak saya membutuhkannya sehingga saya lupa sebagian besar detailnya. Penjelasan Anda mengembalikan semuanya.
David A. Gray
8

verpatch bagus, tetapi tidak menangani karakter unicode ...
coba ResourceLib

pengguna581430
sumber
6

Ada banyak alat, disebutkan oleh banyak jawaban bagus, saya akan memilih satu.

Peretas Sumber Daya

Saya mengunduh versi terbaru ( 5.1.7 ) dari [AngusJ]: Resource Hacker . Semua informasi yang diperlukan dapat ditemukan di halaman itu (opsi baris perintah, skrip, ...). Dalam panduan berikut, saya akan mengoperasikan 2 file yang dapat dieksekusi (tikus lab) yang (untuk alasan yang jelas) saya salin di cwd saya :

  • ResourceHacker.exe : Saya pikir akan menarik untuk mengoperasikannya sendiri
  • cmake.exe : dapat dieksekusi secara acak tanpa kumpulan Info Versi (bagian dari instalasi v3.6.3 di mesin saya)

Sebelum melangkah lebih jauh, saya ingin menyebutkan bahwa ResourceHacker memiliki keluaran terminal yang lucu , dan fragmen salin / tempel berikut mungkin menghasilkan sedikit kebingungan.

1. Penyiapan

Ini lebih seperti langkah awal, untuk berkenalan dengan lingkungan, untuk menunjukkan tidak ada bisnis funky yang terjadi, ...

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

Seperti yang terlihat, executable baik-baik saja, mereka berjalan dengan baik, dan inilah tampilan Detail mereka (yang kami pedulikan):

Img0-Initial

2. Sumberdaya

File sumber daya adalah file teks yang berisi sumber daya. Sumber daya (disederhanakan) memiliki:

  • Nama
  • Tipe
  • Nilai

Untuk lebih jelasnya periksa [MS.Docs]: Tentang File Sumber Daya . Ada banyak alat (disebutkan dalam jawaban yang ada) yang memfasilitasi pengeditan file sumber daya seperti:

  • VStudio membuat default saat memulai proyek baru
  • Seseorang dapat membuat file seperti itu secara manual
  • Tapi, karena ini tentang Resource Hacker , dan:

    • Ia mampu mengekstrak sumber daya dari executable yang ada
    • Ini memiliki sumber daya yang tertanam di dalamnya (seperti yang ditunjukkan pada gambar sebelumnya)

    Saya akan menggunakannya untuk langkah ini ( -action extract)

Selanjutnya, Agar sumber daya dapat disematkan ke .exe ( .dll , ...), sumber daya harus dikompilasi ke dalam bentuk biner, yang cocok dengan format PE . Sekali lagi, ada banyak alat yang dapat mencapai ini, tetapi seperti yang Anda duga, saya akan tetap menggunakan 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

Dalam kasus Anda, menyimpan dan mengedit file sumber daya tidak diperlukan, karena file tersebut sudah ada, saya hanya melakukannya untuk mendemonstrasikan tujuan. Di bawah ini adalah file sumber daya setelah dimodifikasi (dan sebelum dikompilasi).

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. Sematkan

Ini juga akan dilakukan oleh Resource Hacker ( -action addoverwrite). Sejak .exe s sudah disalin, saya akan mengedit sumber dayanya.

[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

Seperti yang terlihat, saya harus melakukan sedikit trik ( gainarie ) karena saya tidak bisa (setidaknya saya rasa saya tidak bisa) memodifikasi .exe saat sedang digunakan.

4. Uji

Ini adalah fase opsional, untuk memastikan bahwa:

  • Dapat dieksekusi masih berfungsi (mereka tidak kacau dalam prosesnya)
  • Sumber daya telah ditambahkan / diperbarui
[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

Dan Detail mereka :

Img1-Final

CristiFati
sumber
@ColonelPanic: Terima kasih!
CristiFati
Jawaban yang sangat bagus. Sayangnya ResourceHacker tidak lagi dipertahankan dan kehabisan memori ketika mencoba mengedit file EXE yang besar (saya mendapat kesalahan saat mencoba membuka exe 3GB).
Lews Therin
@LewsTherin: Versi terbaru (juga digunakan oleh jawaban) adalah dari 2019/01, jadi menurut saya ini cukup terawat. Masalahnya adalah 32bit . Anda dapat menghubungi penulis untuk meminta versi 64bit (saya berasumsi bahwa karena mereka sudah memiliki kode, tidak akan sulit untuk membuatnya untuk 64bit ).
CristiFati
3

Ada Resource Tuner Console dari Heaventools Software.

Resource Tuner Console adalah alat baris perintah yang memungkinkan pengembang mengotomatiskan pengeditan berbagai jenis sumber daya dalam sejumlah besar file Windows 32 dan 64-bit yang dapat dieksekusi.

Lihat secara khusus halaman Mengubah Variabel Versi dan Memperbarui Informasi Versi untuk lebih jelasnya.

Wylder
sumber
3

Sedikit terlambat ke pesta, tetapi karena saya sedang mencarinya (dan saya mungkin perlu menemukannya lagi suatu saat), inilah yang saya lakukan untuk memasukkan versi, nama perusahaan, dll. Ke dalam C ++ DLL saya di bawah VS2013 Express:

  1. Membuat dan mengedit file dllproj.rc, seperti yang ditunjukkan sebelumnya.
  2. Menambahkan baris "rc.exe dllproj.rc" sebagai langkah pra-pembuatan dalam proyek DLL.
  3. Menambahkan dllproj.res ke folder sumber daya untuk proyek tersebut.

Semoga ini membantu!

Tom Gordon
sumber
3

yang di atas jawaban dari @DannyBeckett banyak membantu saya,

Saya meletakkan yang berikut ini dalam file batch & saya menempatkannya di folder yang sama di mana ResourceHacker.exe & EXE yang saya kerjakan berada & berfungsi dengan sangat baik. [Anda dapat mengeditnya agar sesuai dengan kebutuhan Anda]

    @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

[Sebagai catatan tambahan, saya juga menggunakan peretas sumber daya untuk mengompilasi file res, bukan GoRC]

RDR
sumber
2

Anda sebenarnya dapat mencoba mengunduh FVIE dari Tautan Unduhan dan mencoba mengedit informasi untuk file .exe apa pun.

(ATAU)

Anda dapat mendownload StampVer - Win32 Version Resource Stamping dari Link Download yang sangat berguna untuk file windows .exe.

(ATAU)

Anda dapat menggunakan alat perintah yang disebut RCEDIT . Unduh dari tautan Sumber Github dan kemudian buat menggunakan Visual Studio 2015 dan kemudian Anda memiliki perintah khusus untuk mengubah versi file .exe. Lihat tautan Docs untuk berbagai perintah yang tersedia.

Subash J
sumber
1

Ini adalah alat terbaik yang pernah saya lihat untuk pekerjaan itu, memungkinkan kontrol penuh atas semua sumber daya file, termasuk VersionInfo.

Lihat: ResourceEditor oleh Anders Melander .

J Collins
sumber
1
Download Resource Editor (0 byte) rusak.
Jack