2010-09-27 83 views
8

我正在尋找一個現成的代碼,將能夠讀取和修改德爾福.res文件。問題是我需要創建一個將一次編譯許多Delphi項目的應用程序(使用dcc32.exe文件)。但是,我必須在編譯之前更改文件版本和語言,並且據我所知,必須修改.res文件才能完成此操作。德爾福.res文件更換器

你有沒有遇到過任何代碼,可以給我一個.res文件的接口,允許我修改其中包含的數據?事情是,我只想改變這兩條信息,保持其餘的不變。這就是爲什麼我不能基於腳本編譯自己的.res文件。

從命令行執行的應用程序也可以,如果它允許使用參數調用並執行我需要的操作。

非常感謝您提前!

+0

您也可以爲QC#70567投票(不要將版本信息存儲在已編譯的.res文件中 - 以便於操作)和QC#70564(允許從命令行設置版本信息) – 2010-09-27 12:55:59

回答

10

如果你需要的是增加文件版本資源,那麼創建appver.rc文件,與brcc32以及應用中的單位之一編譯(例如appver.pas)添加{$R appver.res}(如瑪麗安注意到你必須關閉德爾福項目的選擇包括版本信息)。

我創建了一個命令行程序,在.rc文件中增加內部版本號,在SVN中用分支名稱中的新版本創建新的分支/標籤,編譯.rc.res,並構建應用程序。

.rc文件這樣的信息(波蘭語)看起來像:

#define IDR_VERSION1 1 
IDR_VERSION1 VERSIONINFO LOADONCALL MOVEABLE DISCARDABLE IMPURE 
FILEVERSION 7,28,7,17 
PRODUCTVERSION 7,28,7,17 
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK 
FILEFLAGS 0 
FILEOS VOS_DOS_WINDOWS32 
FILETYPE VFT_DLL 
FILESUBTYPE 0 
{ 
BLOCK "StringFileInfo" 
{ 
    BLOCK "041504E2" 
    { 
    VALUE "CompanyName", "xxx\0" 
    VALUE "FileDescription", "yyy\0" 
    VALUE "ProductName", "zzz\0" 
    VALUE "FileVersion", "7.28.7.17\0" 
    VALUE "ProductVersion", "7.28.7.17\0" 
    } 

} 

BLOCK "VarFileInfo" 
{ 
    VALUE "Translation", 0x0415, 1250 
} 

} 
+1

+1爲了解決原因而不是僅僅處理症狀。在您的回答中,值得一提的是,爲了使其在IDE中也能正常工作,您需要關閉項目選項中的「包含版本」。 IDE不允許你爲dll項目執行任何操作,因此可能需要手動「修改」dproj。 – 2010-09-27 09:32:56

2

退房來源:

http://code.google.com/p/gedemin/source/browse/trunk#trunk/Gedemin/Utility/IncVerRC

這是我們的工具,它讀取.RC與版本信息文件和增量版本號。我們在構建過程中使用它。下面是摘錄:

incverrc.exe ..\gedemin\gedemin.rc 
"%delphi_path%\brcc32.exe" -fogedemin.res -i..\images gedemin.rc 
"%delphi_path%\dcc32.exe" -b gedemin.dpr 

該實用工具使用由克里斯·莫里斯撰寫TIncVerRc類。