我需要將我的delphi項目的版本設置爲與另一個項目(不是delphi)相同的構建腳本的一部分。有沒有辦法通過IDE來控制版本號,例如編譯器的命令行參數或類似的東西?由於更改構建時的版本號
回答
包括像
{$R 'version.res'}
在您的項目
線。並用您的版本信息創建一個version.rc文件。你將不得不使用brcc32在老的Delphi版本中自己構建資源。在較新的Delphi版本中,您可以使用
{$R 'version.res' 'version.rc'}
讓IDE自動爲您構建它。
最簡單的version.rc看起來是這樣的:
1 VERSIONINFO
FILEVERSION 9999, 9999, 99, 18048
PRODUCTVERSION 9999, 9999, 99, 18048
FILEOS 0x00000004L // comment: VOS_WINDOWS32
FILETYPE VFT_APP
{
BLOCK "VarFileInfo"
{
VALUE "Translation", 0x409, 0x4E4 // comment: 0x4E4 = 1252
}
BLOCK "StringFileInfo"
{
BLOCK "040904E4"
{
VALUE "CompanyName", "Company Name\0"
VALUE "FileVersion", "9999.9999.99.18048\0"
VALUE "LegalCopyright", "Copyright \0"
VALUE "ProductName", "Product Name\0"
VALUE "ProductVersion", "9999.9999.99.18048\0"
VALUE "Homepage", "http://www.mydomain.com\0"
}
}
}
欲瞭解更多信息,請參閱MSDN上3210結構。
+1,因爲這是我使用的解決方案,但您確實需要確保刪除version.res,否則對version.rc的更改不會被鏈接器注意到。 –
@BrianFrost:你使用的是什麼版本的Delphi?我從來沒有遇到過這個問題。你確實在項目選項中關閉了「包含版本信息」? –
我的錯誤。我發現當我移動到* .rc中的#include以用於版本編號時,我需要刪除* .res,所以我沒有修改* .rc而是隻包含我的包含文件,它只有實際的版本號。 –
Marjan在上面給出了一個很好的答案,但我的回答稍微回答了一些問題。考慮這個RC文件:
VS_VERSION_INFO VERSIONINFO
#include "..\Ver_Num_Application.txt"
#define APPLICATION_NAME "My amazing project\0"
#define VER_NUM_ARTWORKS 4
#include "..\Libraries\Paslib32\Ver_Num_Library.txt"
#define COMPANY_NAME "My company\0"
FILEVERSION VER_NUM_ARTWORKS, VER_NUM_LIBRARY, VER_NUM_APPLICATION, 1000
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x9L
#else
FILEFLAGS 0x8L
#endif
FILEOS 0x4L
FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904b0"
BEGIN
VALUE "CompanyName", COMPANY_NAME
VALUE "FileDescription", APPLICATION_NAME
VALUE "LegalCopyright", "Copyright (C) "COMPANY_NAME
VALUE "ProductName", APPLICATION_NAME
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1200
END
END
在使用幾個#include語句的好處是,你可以獨自離開RC文件,然後簡單地修改(甚至自動生成)的* .TXT包括像文件:
Ver_Num_Application.txt:
#define VER_NUM_APPLICATION 6
Ver_Num_Library.txt:
#define VER_NUM_LIBRARY 156
注意,現在你必須運行您的構建,以強制鏈接從生成它們之前刪除* .RES文件(可能改變)的版本號。
使用條件定義,在dpr中使用{$ R ...}不同的version.res/rc對會不會更容易? IE'{$ ifdef DEBUG} {$ R version.res debugversion.rc} {$ ELSE} {$ R version.res version.rc} {$ ENDIF}'這不像其他信息會經常改變... –
真正。我想我想爲我的所有項目提供一個'標準'RC文件,並且需要一個擴展名爲* .txt的文件以記事本打開。 –
Aaww come'on Brian,我可以理解一個「標準」文件,但是一個txt文件?我確定你知道如何將.RC文件與記事本關聯爲默認編輯器? ;-) –
- 1. 使用maven構建時動態更改版本號碼
- 2. 構建測試版本號
- 3. Windows mobile,更改版本號
- 4. 將Octopack nuget版本號更改爲teamcity的內部版本號
- 5. 無法更改Android的版本號和版本號
- 6. 腳本編號jenkins構建版本
- 7. 如何從構建腳本更新Bamboo內部版本號?
- 8. 如何在構建後修改程序集的版本號?
- 9. 重大更改的版本號
- 10. 更改構建工具版本是否會使gradle更慢地構建項目?
- 11. Ant構建閱讀版本號
- 12. 自動項目構建版本號
- 13. 使用Mercurial自動構建版本號
- 14. 版本更改時出錯
- 15. 根據構建版本上的Android版本更改主題和樣式
- 16. Maven構件的版本號
- 17. 的MSBuild更新與SVN構建版本
- 18. iOS App - 更改版本號方案
- 19. 更改SharePoint列表項版本號
- 20. 更改SQLite數據庫版本號
- 21. TFS。更改編號。 「獲取版本」
- 22. 如何更改構建定義的Scala版本?
- 23. 如何在Xcode中更改構建的SDK版本?
- 24. 在構建的二進制文件中更改版本信息
- 25. Git多個版本分支,構建自動增量版本號
- 26. 在構建步驟和構建配置中保留版本號
- 27. 如何更改Microsoft架構版本
- 28. 定位GAC程序集,如果只有構建版本或修訂版本號發生更改
- 29. 當應用名稱更改時,應用的版本號?
- 30. Android Studio構建版本的舊版本
這就是爲什麼您應該停止讓IDE控制版本資源並將您自己的版本資源生成腳本編寫爲預生成操作 –
@david您是否有指示如何做到這一點? –
看看類似FinalBuilder的東西,它可以讓你設置所有的EXE等到相同的內部編號,並確保一致的編譯參數等。 – mj2008