我正在尝试自动确定在计算机上安装的 Delphi 版本(从 Delphi 5 到 XE2)中使用哪个版本打开给定的项目,以免错误升级该项目。
在 Delphi 7 之前每个项目都有一个 .ini 格式的 .dof 文件。 Delphi 5 没有任何可能有所帮助的条目,但是从 Delphi 6 开始,有一个 [FileVersion] 部分,其中包含以下值:
- Delphi 5:N/A
- Delphi 6:6.0
- Delphi 7:7.0
所以我猜这就解决了,因为旧的 Delphi 版本与我无关。
对于 Delphi 2005 和 2006,有一个以 XML 格式表示的 .bdsproj 文件,其中包含一个版本条目: \BorlandProject\PersonalityInfo\Option\Option
在 Delphi 2005 中,它看起来像这样:
<Option Name="Version" Type="String">1.0</Option>
在 Delphi 2006 中是这样的:
<Option Name="Version">1.0</Option>
因此,我可以查看属性“Type”是否存在,并根据此决定使用 Delphi 2005 还是 2006。 请问是否有人可以查看他的 Delphi 2005 和 2006 项目,并验证这种差异?(或者您是否有更好的想法?)
编辑:我刚刚尝试了验证,并发现 Delphi 2005 并不总是添加 Type 属性。所以我现在卡住了。
编辑:也许存储在那里的 GUID 对于 Delphi 版本是唯一的?
- Delphi 2005:{87D03616-A4C7-4B5A-AF0F-0164EA60BC59}
我有所怀疑,这个GUID可能代表不同的产品(如专业版/架构师等)。但也许你可以验证一下?
从Delphi 2007开始,.dproj文件采用了不同的XML格式。我在Delphi 2007格式中未找到任何版本条目,但从Delphi 2009开始似乎有以下条目:
\project\PropertyGroup\ProjectVersion
以下是我在我的.dproj文件中找到的值:
- Delphi 2007: 不适用
- Delphi 2009: 12.0
- Delphi 2010: 12.0
- Delphi XE: 12.3
- Delphi XE2: 13.4
如果这些是正确的,我可以可靠地确定Delphi 2007、XE和XE2。但我要如何区分Delphi 2009和2010呢?
此外,这些数字对我来说看起来很奇怪。有人知道Delphi的各种更新之间是否有任何差异,例如原始的Delphi XE2发布时是否从13.0开始,在每次更新后递增小数点后面的数字?但如果是这样,Delphi XE如何获得12.3呢?
(有一个类似的问题How can I tell what version of Delphi was used to create a project但那里只有一个相对有限的答案。)
如果有其他人需要此信息:我刚刚在Delphi Wiki上添加了一个页面,该页面总结了所有答案,并为新版本的Delphi(目前为止,包括Delphi 10.4.1)添加了信息。