[为 Delphi XE 安装 Indy]
是的,安装过程很乏味,但把它做好是值得的。
这适用于除 SSL 之外的所有 Indy 组件。(我还没有尝试过任何 SSL 的东西。)
A.)寻找并销毁 Delphi 附带的所有 Indy 文件。这些都不好,因为 Indy 项目每天都会更新新的错误修复。如果 Delphi 选择任何旧文件而不是新的新 Indy 库,那么您将在所有不同时间从 IDE 中得到疯狂的错误,这些错误很难追踪。
一世。转到 Component-->Install Packages,然后完全删除所有以“Indy”开头的包。
ii. 关闭德尔福。
iii. 从 Delphi 的 Bin 文件夹中删除所有匹配 "dclIndy*.bpl" 和 "Indy*.bpl" 的文件。
(C:\Program Files\Embarcadero\RAD Studio\8.0\bin)
iv. 删除 Delphi 的 Lib 子文件夹中所有匹配 "Indy*.dcu" 和 "Id*.dcu"^^^ 的文件。
(C:\Program Files\Embarcadero\RAD Studio\8.0\lib\win32\debug)
(C:\Program Files\Embarcadero\RAD Studio\8.0\lib\win32\release)
^^^ 警告:注意非恰好以字母“id”开头的 Indy DCU,例如“idispids.dcu”和“idoc.dcu”
v. 删除整个 Indy10 源文件夹:
(C:\Program Files\Embarcadero\RAD Studio\8.0\source\Indy10)
B.)从http://indy.fulgan.com/ZIP/下载最新的 Indy10_XXXX.zip
(如果使用此 zip 文件执行以下任何步骤时出现编译错误或运行时错误 - 不要气馁!第二天重新下载 zip 文件,然后重试。此 zip 文件每天都会更新,任何一天都有可能出现一些错误/错误。)
C.)仅将 System、Core 和 Protocols 文件夹提取到您自己的 Indy 库文件夹中。前任。
(c:\MyDelphiComponents\Indy\Core)
(c:\MyDelphiComponents\Indy\System)
(c:\MyDelphiComponents\Indy\Protocols)
D.)启动德尔福。忽略所有失败的包对话框:这些是依赖 Indy 的 Embarcadero 包!(只需在所有错误上单击确定,并指示不应再次加载任何失败的包。)
E.)转到选项-->环境选项-->Delphi 选项-->浏览路径 - 删除以 $(BDS)\Lib\Indy10 开头的路径
F.)转到 Options-->Environment Options-->Delphi Options-->Library Path - 将步骤 C 中的新 System、Core 和 Protocols 文件夹添加到 Delphi 的库路径中。
G.)按顺序执行以下 5 项操作:(只需对有关升级项目的任何对话框说 OK。)
重要的:
在加载每个 dpk 之后和每次构建之前,转到:
项目-->选项-->描述-->构建控制
将单选按钮设置为“显式重建”。
(实际上,这是可选的,但我总是使包显式重建,因为它们似乎更容易处理,但我想听听其他人对此的看法......)
- 构建 - System\IndySystem150.dpk
- 构建 - Core\IndyCore150.dpk
- 先构建,然后安装 - Core\dclIndyCore150.dpk
- 构建 - 协议\IndyProtocols150.dpk
- 先构建,然后安装 - Protocols\dclIndyProtocols150.dpk
** 仔细检查您是否在所有软件包上设置了“显式重建”!**
H.)最后,转到 Component-->Install Packages 并找到在步骤 D 中关闭的所有依赖 Indy 的包。重新激活它们,然后重新启动 Delphi。(如果您的新 Indy 与 Delphi 发布的版本相比没有太大变化,那么这些软件包将使用新的 Indy!)
++ 注意,在重新激活这些 Embarcadero 软件包时,您可能不会立即收到任何错误,但它们可能会在以后随机弹出。例如,我刚刚安装了 Indy10_4548.zip,所有重新激活的包看起来都很好。一天后,IDE 突然向我发送了一条消息,说它在 TIdCustomHTTP 中找不到 GetRequestHeaders,因此 dclWindowsAzureManagement150.bpl 遇到了问题。所以我不得不返回并在 IDE 中禁用该 Windows Azure 包。