Date: Thu, 11 Mar 1999 21:)34 +0800
To: Patch-author <patch-author@cpatch.org>
From: Kii Ali <kiiali@cpatch.org>
Subject: VersionInfo 的觀念
您好,弟是_Kii_Ali
其實「版本建置」的觀念,或許有人很清楚,弟順便把所知的整理出來
,並試著如何修改它。如果有錯誤,還請指正。
底下是用 BC++ 5.02 把jqjq 版 winamp 2.09 的 versioninfo 匯出來,
vc 會有一些小小不同。會在文中說明。請先複習底下的各項項目。
▓0.範例
1 VERSIONINFO
FILEVERSION 2, 0, 0, 5
PRODUCTVERSION 2, 0, 0, 5
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
FILEFLAGS VS_FF_PRIVATEBUILD | VS_FF_SPECIALBUILD
FILEOS VOS_NT_WINDOWS32
FILETYPE VFT_DLL
{
BLOCK "StringFileInfo"
{
BLOCK "040904b0"
{
VALUE "Comments", "Visit
http://www.winamp.com/ for updates "
VALUE "CompanyName", "Nullsoft "
VALUE "FileDescription", "Winamp "
VALUE "FileVersion", "2.05 "
VALUE "InternalName", "WINAMP "
VALUE "LegalCopyright", "Copyright 251 1997-1998, Nullsoft, Inc. "
VALUE "LegalTrademarks", "Nullsoft and Winamp are trademarks of Nullsoft, Inc. "
VALUE "OriginalFilename", "Winamp.exe "
VALUE "PrivateBuild", "1 "
VALUE "ProductName", "Nullsoft Winamp "
VALUE "ProductVersion", "2.05 "
VALUE "SpecialBuild", "1 "
}
}
BLOCK "VarFileInfo"
{
VALUE "Translation", 1033, 1200
}
}
▓1.版本標示
1.1在 nt 是利用這一段來辨認,「檔案版本」及「產品版本」
FILEVERSION 2, 0, 0, 5
PRODUCTVERSION 2, 0, 0, 5
一定要用這個「逗號空一格」的四位數字格式,並且只能用數字,而
不能用文字。否則 bc 或 vc 會無法 compile 。這樣在 nt 顯示出來
的結果就會變成 2.0.0.5 。
當然您可以在每個空格填到滿,比如 2, 0, 1033, 2 ,這樣就會顯示
2.0.1033.2 這種版本號碼。
你可以看到某些比較偷懶的版本會只寫 1, 0, 0, 1 ,這是內定值,代表
原作者偷懶的。
1.2 在 win98則是利用這一段來辨認與顯示。
VALUE "FileVersion", "2.05 "
VALUE "ProductVersion", "2.05 "
這就可以「做怪」填入文字了。比如我曾填過 1.29 (976) 這種版號。
當然您要跟上一段填不一樣也沒關係。最好填一樣,比如上面可以填
1, 29, 976, 0 這種版本號碼。
▓2.語系標示
bc 與 vc 的情形不同。您可以看到前後兩段的數字相關的。
BLOCK "040904b0"
VALUE "Translation", 1033, 1200 (bc++ 顯示)
VALUE "Translation", 0x409, 1200 (vc++ 顯示)
我們把 BLOCK "040904b0" 的數字分成兩段。0409 + 04b0
頭四個數字 0409 代表使用的語系,剛好跟底下的 1033 或 0x409 相
符。BC 裡面的 1033 這個數字是這樣來的,0x16^3 + 4x16^2 +
0x16^1 + 9x16^0 = 1033 ,原來是十六進位。0409 剛好是英文語系,
0409 是中文(繁體)語系,0809 是中文 (簡體)語系,這些可以由對照
表查到。
後四個數字 04b0 則是另一個編碼方式。(1200) 是指 unicode 的方式
。某些版本則會填上 (950) 代表 Windows (Taiwan) ,現在已多半不用
這種編碼方式了。絕大部分都是使用 (1200) 來表示。
如果上面看不懂沒關係,這個版本數字(繁體中文)照抄就好了。這兩個
數字如果不能配合,將導致 VersionInfo 無法顯示。
BLOCK "040404b0"
VALUE "Translation", 1028, 1200 (bc++ 顯示)
VALUE "Translation", 0x404, 1200 (vc++ 顯示)
▓3.檔案標示
3.1.下面是「檔案旗標mask」「檔案型態」、「適用作業系統」等。
通常這個我們不用改。
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
FILEOS VOS_NT_WINDOWS32
FILETYPE VFT_DLL
3.2.「檔案旗標」下面這個不常出現,通常會伴隨幾個說明項一起出現。
FILEFLAGS VS_FF_PRIVATEBUILD | VS_FF_SPECIALBUILD
VALUE "PrivateBuild", "1 "
VALUE "SpecialBuild", "1 "
▓4.各項說明
底下各個 Value 都會在 Win95, NT 的「內容」裡面出現。在 Win98
裡面的版本是用 FileVersion ,而 nt 卻不是用這個來辨認。
備註 VALUE "Comments", "Visit
http://www.winamp.com/ for updates "
公司名稱 VALUE "CompanyName", "Nullsoft "
*說明 VALUE "FileDescription", "Winamp "
*檔案版本 VALUE "FileVersion", "2.05 "
內部名稱 VALUE "InternalName", "WINAMP "
*著作權 VALUE "LegalCopyright", "Copyright 251 1997-1998, Nullsoft, Inc. "
合法商標 VALUE "LegalTrademarks", "Nullsoft and Winamp are trademarks "
原始檔名 VALUE "OriginalFilename", "Winamp.exe "
專用建置說明 VALUE "PrivateBuild", "1 "
產品名稱 VALUE "ProductName", "Nullsoft Winamp "
產品版本 VALUE "ProductVersion", "2.05 "
特殊建置說明 VALUE "SpecialBuild", "1 "
有 * 星號的部分是顯示在上面的。
不要忘了 BC++ 各項的 Value 值尾巴都有結束號碼 ,忘了填就會
跟下面的值連起來合併。VC++ 的值是 ,略不一樣。上次 Tang 建議
說在 "SpecialBuild" 填入一些辦識字串,而儘可能不在 about 畫面。
我是這樣填的,您參考看看。
VALUE "SpecialBuild", "Chinese version translated, Kii Ali, at Chinese Patch Association. "
更狠一點,可以這樣做,連「特殊建置」都不用了。
VALUE "cpatch", "Kii Ali "
在BC++ 裡面唯一的缺點是,各項 value 不能填入中文,否則 compile
之後一定變成亂碼。而 VC++ 沒有這種問題。目前尚無解決方案。