我想知道是否有人有关于如何使用TJvProgramVersionCheck组件通过HTTP执行检查的示例。
JVCL examples目录中的示例没有说明如何使用HTTP
谢谢
发布于 2011-12-19 22:09:05
您的$(JVCL)\Examples\JvProgramVersionCheck文件夹中包含的演示似乎能够做到这一点。编辑JVProgramVersionHTTPLocation的属性,并将其添加到其VersionInfoLocation列表( TStrings)中。如果需要,您还可以设置任何用户名、密码、代理和端口设置。
您还需要添加一个OnLoadFileFromRemote事件处理程序。我在演示中看不到任何解决这个需求的东西,但是源代码说:
{ Simple HTTP location class with no http logic.
The logic must be implemented manually in the OnLoadFileFromRemote event }从event接收到的参数中可以看出,您在那里执行检查:
function TJvProgramVersionFTPLocation.LoadFileFromRemoteInt(
const ARemotePath, ARemoteFileName, ALocalPath, ALocalFileName: string;
ABaseThread: TJvBaseThread): string;因此,您需要为该事件添加一个事件处理程序,然后将TJVProgramVersionCheck.LocationType属性更改为pvltHTTP并运行演示。经过测试,似乎为您提供了远程版本的服务器和文件名,以及您下载的文件的本地路径和临时文件名。事件处理程序的Result应为新下载文件的完整路径和文件名。您的事件处理程序应负责文件的实际检索。
在JvProgramVersionCheck.pas中还定义了一些额外的类型(TJvProgramVersionHTTPLocationICS和TJvProgramVersionHTTPLocationIndy,它们都受到编译器定义的保护,因此它们不存在于默认编译中。然而,设置与ICS相关的定义会导致许多编译错误(它显然是针对旧版本的ICS编写的),而设置Indy定义(然后再次设置为使用Indy10 )允许它编译,但没有改变任何行为。今天晚些时候,我将对此进行更深入的研究。
另外,要确保VersionInfoLocation条目只是URL (没有文件名);文件名本身包含在VersionInfoFileName属性中。如果你把它放在URL中,它会被重复(就像在http://localhost/Remote/ProjectVersions_http.iniProjectVersions_http.ini中一样,而且无论如何都会失败。(我在跟踪调试器试图解决该问题时发现了这一点。)
终于..。
解决方案稍微有点复杂(但不是很复杂)。下面是我所做的:
将演示复制到JvProgramVersionCheck.pas文件夹。(由于下一步的原因,需要重新编译。)
转到“项目”->“选项”->“目录和条件”,在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属性,然后将FileFormat从hffXML更改为hffIni。
删除或重命名演示文件夹中的versioninfolocal.ini。(如果您运行过一次应用程序,它会存储http位置信息,上面的更改将被覆盖。这花了一段时间来追踪。)
确保您的本地http服务器正在运行,并且ProjectVersions_http.ini文件位于web根文件夹中。然后,您应该能够运行演示。表单出现后,单击Edit History按钮查看从远程版本信息文件中检索到的信息。您还将拥有一个新的versioninfolocal.ini副本,其中包含您在上面输入的已保存配置信息。
https://stackoverflow.com/questions/8562319
复制相似问题