Var olan bir .exe, .dll için sürüm bilgilerini nasıl ayarlarım?


114

Oluşturma sürecimizin bir parçası olarak, derlenmiş tüm ikili dosyalarımızın sürüm bilgilerini ayarlamam gerekiyor. İkili dosyaların bazıları zaten sürüm bilgisine sahipken (derleme zamanında eklenir) bazılarında yoktur.

Aşağıdaki bilgileri uygulayabilmek istiyorum:

  • Şirket Adı
  • Telif Hakkı Bildirimi
  • Ürün adı
  • Ürün Açıklaması
  • Dosya Sürümü
  • Ürün Sürümü

Bu özniteliklerin tümü, derleme betiği tarafından belirlenir ve derlemeden sonra uygulanmalıdır. Bunlar, C ++ Builder 2007 ile derlenen standart ikili dosyalardır (derlemeler değil).

Bunu nasıl yapabilirim?


ResourceHacker ne için ? görev tam olarak nasıl belirlenir? sorun ne kullanımı halinde UpdateResourceişlevi, eğer mevcut pe görev güncelleme sürümü
rbmm

Bunu deneyin: alternativeto.net/software/xn-resource-editor , bence bunu yapan tersine mühendislik araçları var
i_thamary

Yanıtlar:


60

Toplu işlem olmasa da, Visual Studio dosya kaynaklarını ekleyebilir / düzenleyebilir.

Sadece .exe veya .DLL'de Dosya-> Aç-> Dosya'yı kullanın. Bu, sürüm bilgilerini derleme sonrası düzeltmek veya başlangıçta bu kaynaklara sahip olmayan dosyalara eklemek için kullanışlıdır.


8
Bu, denediğimde mükemmel çalıştı. Sürüm bilgisinin tamamen eksik olduğu bir dosya için: DLL'yi Visual Studio'da açtıktan sonra, Düzenle> Kaynak Ekle> Sürüm'e gidin ve Yeni'ye tıklayın. Ardından yeni Sürüm sekmesinde, FILEVERSION ve PRODUCTVERSION, CompanyName, vb. Değerlerini değiştirin. Dosyaları kaydedin ve hazırsınız!
twasbrillig

2
@UweBaemayr. Aldığın cevap, sormak istiyorum, tıpkı otomatikleştirebildiğimiz gibi, tam olarak aynı post yapısını yapıyorum ve otomatikleştirmek istiyorum. Ama nasıl ?
SteveScm

1
Eski Delphi win32 dll için bu çalışmıyor. Dll bilgileri doğru bir şekilde değiştirilse de, üzerinde akıl sağlığı kontrolleri çalıştırdığınızda bozuk olduğunu anlarsınız.
sthiers

3
Bunu Windows 8, VS 2015'te denedim (sürüm bilgisi ekle) ve hepsi Windows Gezgini'nde iyi, ancak ... çalıştırılabilir artık başlamayacak.
Liviu

37

Diğer cevapların çoğunun aksine, bu çözüm tamamen özgür yazılım kullanıyor.

Öncelikle şuna Resources.rcbenzer bir dosya oluşturun :

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

Ardından, GoRC'yi.res kullanarak onu bir dosyaya derlemek için kullanın :

GoRC /fo Resources.res Resources.rc

(aynası için aşağıdaki yorumuma bakın GoRC.exe)

Ardından CLI modunda Resource Hacker'ı mevcut bir şuna eklemek için kullanın .exe:

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

Bu kadar!


1
@CharlesB Bunu ben de fark ettim, ama bu doğru bağlantı. Görünüşe göre birisi web barındırıcısına ödeme yapmayı unutmuş! İşte ikili, bunu genel Assembla hesabıma yansıttım: assembla.com/code/danny-beckett/subversion/nodes/13/GoRC.exe
Danny Beckett

3
GoRC yerine Microsoft Resource Compiler'ı da kullanabilirsiniz . Windows SDK ile kullanılabilir.
Bütünsel Geliştirici

Resource Hacker'ı beğeniyorum, bu cevaba dayanarak kullandım ve harika, harika bir program. (program veya oluşturucu ile yakınlık yok ;-)
user2109254

@UweKeim Bunu bir süredir kullanmadım, ama gerekli olduklarından oldukça eminim.
Danny Beckett

6
Komut satırı biraz değişmiş gibi görünüyor: ResourceHacker.exe -open Source.dll -save Changed.dll -action addoverwrite -resource Version.resAyrıca, ResourceHacker .rc dosyasını kendi kendine derleyebilir:ResourceHacker.exe -open Version.rc -save Version.res -action compile
Yusuf Tarık Günaydın

23

Veya Win32 exe / dll dosyaları için ücretsiz StampVer yazılımına bakabilirsiniz .
Halihazırda bir sürüm kaynağına sahiplerse, yalnızca dosya ve ürün sürümlerini değiştirecektir. Bir sürüm kaynağı yoksa ekleyemez.


19

rcedit göreceli olarak yenidir ve komut satırından iyi çalışır: 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"

Ayrıca, onu JavaScript'ten saran bir NPM modülü ve Grunt kullanmanız durumunda bir Grunt görevi de var.


5
rcedit'in yalnızca mevcut kaynakları değiştirebileceğini unutmayın, yenilerini eklemeyin
Bevan Collins

2
7zip sfx arşivleriyle çalışmaz: / Sadece 7zip arşiv bölümünü keser.
Mgamerz

1
bunu denedi, aynı
dizindeyken

Kendi kendine açılan bir arşivi birleştirmek için kullandığınız VERSIONINFO'nun bulunduğu ilk bölüm olan 7zS.sfx saplama ile çalışır. 7zS.exe'deki 7zS.sfx'i manuel olarak yeniden adlandırabilir ve Visual Studio'da düzenleyebilirsiniz, ancak sürüm numarası her derleme için değiştiğinden, onu ayarlamak için içinde rcedit ifadeleri bulunan bir toplu iş dosyasını tercih edersiniz.
AndresRohrAtlasInformatik

1
bu araç çok kötü, lütfen ikili dosyalarınıza uygulamadan önce bu hataya bakın: github.com/electron/rcedit/issues/51
Brun

14

Böyle bir şeye ne dersin?

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

Mevcut tüm koduyla birlikte burada .


Verpatch benim için kötü bir ürün sürümü kaynağı oluşturmuş gibi görünüyordu ( /va /pvseçeneği kullanarak ). Sürüm, Windows Gezgini'nde doğru bir şekilde görünüyordu, ancak ile kodda alındığında son karakter eksikti VerQueryValue. Kötü kaynağı düzeltmek için şunu yaptım: (1) DLL'yi Resource Hacker'a yükleyin. (2) Sürüm kaynağını görüntüleyin. (3) Derleyin (bir şeyi değiştirin ve düğmeyi etkinleştirmek için yeniden değiştirin). (4) Kaydedin.
dan-gph

verpatch, dev kutumdaki DLL'lerimin hem x64 hem de x86 sürümleri için harika çalışıyor ancak apveyor build projesinde yalnızca x64 için çalışıyor ve x86 dll için kesinlikle hiçbir şey yapmıyor - hata da yok! ne olabileceğine dair herhangi bir ipucu? Uygulayıcı günlüğünde verpatch komutunun çalıştığını, hata olmadığını ve dll'nin bir şekilde değiştirilmediğini ve sonunda sürüm damgasına sahip olmadığını görebiliyorum; x64 için her şey her durumda iyi çalışır. herhangi bir ipucu lütfen?
Ovi

@ Ovi-Wan Kenobi: Apveyorun ne olduğunu bilmiyordum, ama açıklamanıza göre, bana daha çok bir apveyor problemi gibi geliyor. En kötüsü, eğer bu mümkünse, apveyor ortamında bazı hata ayıklamaya hazır mısınız? ...
filofel

11

Bu araç var ChangeVersion [1]

Özelliklerin listesi (web sitesinden):

  • komut satırı arayüzü
  • .exe, .DLL ve .RES dosyaları için destek
  • FileVersion ve ProductVersion'ı bir sürüm maskesine göre güncelleyin
  • sürüm anahtar dizelerini ekle / değiştir / kaldır
  • dosya bayraklarını ayarlayın (hata ayıklama, özel, özel vb.)
  • proje dosyalarını güncelleme (.bdsproj | .bpr | .bpk | .dproj)
  • ana uygulama simgesini ekle / değiştir
  • ini dosyasını yapılandırmayla kullan
  • Windows Vista desteği (yükseltme gerektirir)
  • sürekli bir yapı ortamına entegre edilmesi kolay

Tam Açıklama: Bu aracı yazan adamı tanıyorum, onunla çalışıyordum. Ama bu aynı zamanda onun kaliteli yazılım yaptığını bildiğim anlamına da geliyor;)


[1] bağlantı kesildi. Download.cnet.com adresinde yansıtılmış bir sürüm var gibi görünüyor .


@Gareth Bir ayna bağlantısı ekledim. Diğer yandan, bu cevabın herhangi bir çalışma referansı olmaksızın herhangi bir değeri olduğundan şüpheliyim.
Kurt

5
İkinci bağlantı süresi dolmuş bir araçla sonuçlanıyor"Change Version v2012.9.6.0 - (C)2007-2012 The-Software-Box.com This trial version has expired"
Preet Sangha

2
Komut satırında çalıştırırken, "Sürümü Değiştir v2012.9.6.0 - (C) 2007-2012 The-Software-Box.com Bu deneme sürümünün süresi doldu"
yazıyor

10

Ek bir alet kullanmadan yapıyorum. Win32 uygulama projeme aşağıdaki dosyaları ekledim.

Kaynak dosyamızda ve hatta program kodunda yeniden kullanabileceğimiz bazı sabitleri tanımlayan bir başlık dosyası. Sadece bir dosyaya ihtiyacımız var. Bana bir Qt projesinde nasıl yapılacağını gösteren Qt ekibi sayesinde, şimdi Win32 uygulamamda da çalışıyor.

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

2
Sadece merak; bir iletişim kutusunu her değiştirdiğinizde veya projedeki herhangi bir kaynağı değiştirdiğinizde pencerelerin .rc dosyanızın üzerine yazmasını nasıl durdurdunuz? Şimdiye kadar bunun gibi birkaç makale gördüm ve IDE tarafından otomatik oluşturmaya neden olacak bir kaynağı bir daha değiştirmek zorunda kalmazsanız işe yarayacak gibi görünüyor.
shawn1874

@ shawn1874 - satırını ekleyin #include <windows.h>içinde resource.hotomatik olarak eklediği dosyası. Bu dosya yeniden oluşturulmaz (.rc dosyasının üst kısmına, kodun üretildiğini gösterir ve tasarımcıda değiştirilebilir).
CJBS

1
@CJBS sorusuna cevap vermiyor. Bu işe yarayabilir, ancak gönderilen yanıtın nasıl çalışabileceğini açıklamaz. Gönderilen yanıtta user3016543, version.h dosyasını doğrudan .rc dosyasına dahil eder. .Rc dosyasının üzerine yazma işlemiyle başa çıkmanın nasıl yapılacağını bildiğim birkaç yolu vardır. Sadece bu cevabın gösterilme şeklini sorguluyorum çünkü bana doğru görünmüyor.
shawn1874

Bu yöntemin onun için çalıştığını tahmin ediyorum çünkü söz konusu bileşenin iletişim kutusu bileşenleri yok, bu nedenle dosya sık sık veya hiç yeniden oluşturulmaz. Ancak, MFC iletişim kaynaklarına sahip bir Windows uygulamasında durum böyle olmaz.
shawn1874

1
WinBatch Extender SDK ile birlikte gelen bir kaynak dosyasında ilk kez çalışırken gördüğüm bir tekniği hatırlattığınız için teşekkürler. Ona ihtiyacım olmayalı o kadar uzun zaman olmuştu ki ayrıntıların çoğunu unutmuştum. Açıklamanız hepsini geri getirdi.
David A. Gray


6

Pek çok harika yanıtın bahsettiği birden fazla araç var, birini seçeceğim.

Kaynak Hacker

En son sürümü ( 5.1.7 ) [AngusJ]: Resource Hacker'dan indirdim . Gerekli tüm bilgiler bu sayfada bulunabilir (komut satırı seçenekleri, komut dosyaları, ...). Aşağıdaki izlenecek yolda, (açık nedenlerden dolayı) cwd'mde kopyaladığım 2 çalıştırılabilir dosya (laboratuvar faresi) üzerinde çalışacağım :

  • ResourceHacker.exe : Kendi kendine işlem yapmanın ilginç olacağını düşündüm
  • cmake.exe : Sürüm Bilgisi ayarlanmadan rastgele çalıştırılabilir ( makinemde v3.6.3 kurulumunun bir parçası )

Daha ileri gitmeden önce, ResourceHacker'ın komik bir terminal çıktısına sahip olduğunu ve aşağıdaki kopyala / yapıştır parçalarının biraz kafa karışıklığı yaratabileceğinden bahsetmek istiyorum .

1. Kurulum

Bu daha çok bir ön adım gibi, çevreyi tanımak, hiçbir garip iş olmadığını göstermek için ...

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

Görüldüğü gibi, çalıştırılabilir dosyalar iyi durumda, iyi çalışıyorlar ve işte Ayrıntıları (bizim önemsediğimiz) şöyle görünüyor:

Img0-Başlangıç

2. Kaynaklar

Kaynak dosyaları, kaynakları içeren metin dosyalarıdır. Bir kaynak (basitleştirilmiş) şunları içerir:

  • ad
  • tip
  • değer

Daha fazla ayrıntı için [MS.Docs]: Kaynak Dosyaları Hakkında bölümüne bakın . Aşağıdakiler gibi kaynak dosyası düzenlemeyi kolaylaştıran birçok araç (mevcut yanıtlarda belirtilmiştir) vardır:

  • VStudio , yeni bir proje başlatırken varsayılan bir tane oluşturur
  • Böyle bir dosyayı manuel olarak oluşturabilirsiniz
  • Ancak, Kaynak Hacker ile ilgili olduğundan ve:

    • Mevcut bir yürütülebilir dosyadan kaynakları çıkarabilir
    • İçine gömülü kaynakları vardır (önceki resimde gösterildiği gibi)

    Bunu bu adım için kullanacağım ( -action extract)

Daha sonra, bir kaynağın bir .exe ( .dll , ...) içine gömülebilmesi için, PE biçimine uyan bir ikili biçimde derlenmesi gerekir . Yine, bunu başarabilecek birçok araç var, ancak muhtemelen tahmin ettiğiniz gibi Resource Hacker ( ) 'a bağlı kalacağım .-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

Sizin durumunuzda, kaynak dosyasını kaydetmeniz ve düzenlemeniz gerekmeyecektir, çünkü dosya zaten mevcut olacaktır, bunu sadece gösteri amaçlı yaptım. Aşağıda, değiştirildikten sonra (ve dolayısıyla derlenmeden önce) kaynak dosyası bulunmaktadır.

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. Yerleştir

Bu aynı zamanda Resource Hacker ( -action addoverwrite) tarafından gerçekleştirilecektir . Yana .exe ler zaten yerinde kaynaklarını düzenlemek için gidiyorum kopyalanır.

[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

Görüldüğü gibi, ben da küçük bir hile (zorundaydı gainarie ı değiştirmek (en azından ben sanmıyorum) olamaz gibi) .exe kullanımda iken.

4. Test

Bu, aşağıdakilerden emin olmak için isteğe bağlı bir aşamadır:

  • Yürütülebilir dosyalar hala çalışıyor (süreçte hata yapmadılar)
  • Kaynaklar eklendi / güncellendi
[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

Ve Ayrıntıları :

İmg1-Final


@ColonelPanic: Teşekkürler!
CristiFati

Çok güzel cevap. Maalesef ResourceHacker artık bakım yapılmıyor ve büyük bir EXE dosyasını düzenlemeye çalışırken bellek yetersiz kalıyor (3GB exe'yi açmaya çalışırken hata aldım).
Lews Therin

@LewsTherin: En son sürüm (cevap tarafından da kullanılıyor) 2019 / 01'den, bu yüzden oldukça korunuyor diyebilirim. Sorun, 32bit olmasıdır . 64bit versiyon isteyen yazarlarla iletişime geçebilirsiniz (koda zaten sahip oldukları için 64bit için inşa etmenin zor olmayacağını varsayıyorum ).
CristiFati


3

Partiye biraz geç kaldım, ama onu aradığımdan (ve bazen tekrar bulmam gerekebilir), işte sürüm, şirket adı vb. VS2013 Express altındaki C ++ DLL'ime eklemek için yaptım:

  1. Daha önce belirtildiği gibi bir dllproj.rc dosyası oluşturulmuş ve düzenlenmiştir.
  2. DLL projesine ön derleme adımı olarak "rc.exe dllproj.rc" satırı eklendi.
  3. Proje için kaynak klasörüne dllproj.res eklendi.

Bu yardımcı olur umarım!


3

Yukarıdaki @DannyBeckett gelen cevabı bana çok yardımcı oldu,

Aşağıdakileri bir toplu iş dosyasına koydum ve ResourceHacker.exe ve üzerinde çalıştığım EXE'nin bulunduğu ve mükemmel çalıştığı aynı klasöre yerleştiriyorum. [ihtiyaçlarınıza uyacak şekilde düzenleyebilirsiniz]

    @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

[ek not olarak kaynak korsanını GoRC'yi değil res dosyasını derlemek için kullandım]


2

Aslında indirmeyi deneyebilirsiniz FVIE gelen Download Link ve herhangi .exe dosyası için bilgi düzenlemeyi deneyin.

(VEYA)

Sen indirebilirsiniz Win32 sürümü Kaynak Damgalama - StampVer gelen Download Link gerçekten yararlı pencereler dosyaları .exe içindir.

(VEYA)

RCEDIT adlı bir komut aracı kullanabilirsiniz . Github Kaynak bağlantısından indirin ve ardından Visual Studio 2015 kullanarak oluşturun ve ardından .exe dosyalarının sürümünü değiştirmek için belirli komutlarınız olur. Kullanılabilen çeşitli komutlar için Dokümanlar bağlantısına bakın .


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.