HTTP 経由でチェックを実行する TJvProgramVersionCheck コンポーネントの使用方法の例を誰かが持っているかどうか疑問に思っています。
JVCL のサンプル ディレクトリの例では、HTTP の使用方法が示されていません。
ありがとうございました
あなたのフォルダに含まれているデモは$(JVCL)\Examples\JvProgramVersionCheck
そうできるようです。のプロパティを編集し、そのリストJVProgramVersionHTTPLocation
に URL を追加しますVersionInfoLocation
(a 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.pas
, (TJvProgramVersionHTTPLocationICS
およびで定義された追加の型がいくつかありますTJvProgramVersionHTTPLocationIndy
。両方ともコンパイラ定義によって保護されているため、デフォルトのコンパイルには存在しません。ただし、ICS
関連する定義を設定すると、多くのコンパイル エラーが発生しました (古いバージョンに対して書かれたようです)。 of ICS
)、およびIndy
定義を設定する (そして、代わりに使用するために再度設定するIndy10
) と、コンパイルは許可されましたが、動作はまったく変更されませんでした。
また、VersionInfoLocation
エントリが URL のみ (ファイル名なし) であることを確認してください。ファイル名自体はVersionInfoFileName
プロパティに入ります。URL に入れると、繰り返されます (のようにhttp://localhost/Remote/ProjectVersions_http.iniProjectVersions_http.ini
、とにかく失敗します。(問題を解決しようとしてデバッガーをトレースしているときにこれを見つけました。)
ついに...
解決策は少し (大幅ではありませんが) 複雑です。これが私がしたことです:
JvProgramVersionCheck.pas
demo フォルダーにコピーします。(次のステップのため、再コンパイルする必要があります。)
Project->Options->Directories and Conditionals に移動し、次の行を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
上記で入力した設定情報が保存された の新しいコピーも作成されます。