JEDI JVCL TJvProgramVersionCheck如何使用HTTP



我想知道是否有人有一个关于如何使用TJvProgramVersionCheck组件通过HTTP执行检查的例子。

JVCL示例目录中的示例没有显示如何使用HTTP

谢谢

包含在$(JVCL)ExamplesJvProgramVersionCheck文件夹中的演示似乎能够做到这一点。编辑JVProgramVersionHTTPLocation的属性,并将URL添加到它的VersionInfoLocation列表(一个TStrings)。如果需要,您还可以设置任何用户名、密码、代理和端口设置。

您还需要添加一个OnLoadFileFromRemote事件处理程序。我在演示中没有看到任何满足这个要求的东西,但是源代码说:

{ Simple HTTP location class with no http logic.
The logic must be implemented manually in the OnLoadFileFromRemote event }

从事件接收的参数来看,您应该在那里进行检查:

function TJvProgramVersionFTPLocation.LoadFileFromRemoteInt(
  const ARemotePath, ARemoteFileName, ALocalPath, ALocalFileName: string;
  ABaseThread: TJvBaseThread): string;

因此,您需要为此事件添加一个事件处理程序,然后将TJVProgramVersionCheck.LocationType属性更改为pvltHTTP并运行演示。经过测试,您似乎已经获得了远程版本的服务器和文件名,以及下载文件的本地路径和临时文件名。事件处理程序的Result应该是新下载文件的完整路径和文件名。您的事件处理程序应该负责文件的实际检索。

JvProgramVersionCheck.pasTJvProgramVersionHTTPLocationICSTJvProgramVersionHTTPLocationIndy中定义了一些额外的类型,它们都受到编译器定义的保护,因此它们在默认编译中不存在。然而,设置ICS相关的定义会导致许多编译错误(它显然是针对旧版本的ICS编写的),设置Indy定义(然后再次设置为使用Indy10)允许它编译,但不会改变任何行为。今天晚些时候我将进一步研究这个问题。

另外,确保VersionInfoLocation条目只有URL(没有文件名);文件名本身放在VersionInfoFileName属性中。如果您将它放在URL中,它会重复(如http://localhost/Remote/ProjectVersions_http.iniProjectVersions_http.ini),并且无论如何都会失败。(我是在调试器试图解决这个问题时发现的)

最后……

解决方案稍微(但不是非常)复杂。我是这样做的:

复制JvProgramVersionCheck.pas到demo文件夹。(由于下一步需要重新编译)

进入项目->选项->目录和条件,并将以下行添加到DEFINES条目:

USE_3RDPARTY_INDY10;USE_THIRDPARTY_INDY;

从演示表单中删除JvProgramVersionHTTPLocation组件。

添加一个新的private节到表单声明:

private
  HTTPLocation: TJvProgramVersionHTTPLocationIndy;

FormCreate事件中添加以下代码:

procedure TForm1.FormCreate(Sender: TObject);
const
  RemoteFileURL = 'http://localhost/';
  RemoteFileName = 'ProjectVersions_http.ini';
begin
  HTTPLocation := TJvProgramVersionHTTPLocationIndy.Create(Self); // Self means we don't free
  HTTPLocation.VersionInfoLocationPathList.Add(RemoteFileURL);
  HTTPLocation.VersionInfoFileName := RemoteFileName;
  ProgramVersionCheck.LocationHTTP := HTTPLocation;
  ProgramVersionCheck.LocationType := pvltHTTP;
  VersionCheck;  // This line is already there
end;

ProgramVersionCheck组件属性中,展开VersionInfoFileOptions属性,将FileFormathffXML改为hffIni

删除或重命名演示文件夹中的versioninfolocal.ini。(如果你运行过一次应用程序,它会存储http位置信息,上面的更改会被覆盖。我花了一点时间才找到。)

确保您的本地http服务器正在运行,并且ProjectVersions_http.ini文件位于web根文件夹中。然后,您应该能够运行演示。表单出现后,单击Edit History按钮以查看从远程版本信息文件检索到的信息。您还将拥有versioninfolocal.ini的新副本,其中包含您在上面输入的保存配置信息。

相关内容

  • 没有找到相关文章

最新更新