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


Sebagai bagian dari proses pembangunan kami, saya perlu mengatur informasi versi untuk semua biner yang dikompilasi. 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?


75
2017-11-12 15:16


asal


Jawaban:


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

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


38
2017-07-15 19:38



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

Pertama, buat file bernama Resources.rc seperti 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 ke a .res file menggunakan:

GoRC /fo Resources.res Resources.rc

(lihat komentar saya di bawah ini untuk sebuah 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!


21
2017-09-17 00:37



Atau Anda bisa melihat freeware StampVer untuk file Win32 exe / dll.
Itu hanya akan mengubah file dan versi produk meskipun jika mereka memiliki sumber daya versi sudah. Tidak dapat menambahkan sumber daya versi jika tidak ada.


21
2018-04-30 18:12



Bagaimana dengan sesuatu yang seperti ini?

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

Tersedia di sini dengan sumber lengkap.


13
2018-01-21 18:12



rcedit relatif baru dan bekerja 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 sebuah Modul NPM yang membungkusnya dari JavaScript dan Tugas Grunt jika Anda menggunakan Grunt.


11
2018-02-03 22:26



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
  • menyesuaikan bendera file (debug, khusus, pribadi dll)
  • perbarui file proyek (.bdsproj | .bpr | .bpk | .dproj)
  • tambah / ubah ikon aplikasi utama
  • gunakan file ini dengan konfigurasi
  • Dukungan Windows Vista (peningkatan kebutuhan)
  • mudah diintegrasikan ke dalam lingkungan pembangunan berkelanjutan

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


[1] tautannya mati. Sepertinya ada versi mirror di download.cnet.com.


10
2017-11-12 15:47



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


8
2018-01-19 12:44



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

Satu file header yang mendefinisikan beberapa konstanta daripada yang dapat kita gunakan kembali pada file sumber daya kita dan bahkan pada kode program. Kami hanya perlu mempertahankan satu file. Terima kasih kepada tim Qt yang menunjukkan kepada saya bagaimana melakukannya pada proyek Qt, sekarang juga berfungsi pada 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 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

4
2018-02-16 10:06