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:
2. Kaynaklar
Kaynak dosyaları, kaynakları içeren metin dosyalarıdır. Bir kaynak (basitleştirilmiş) şunları içerir:
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:
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ı :
UpdateResource
işlevi, eğer mevcut pe görev güncelleme sürümü