HTTPを介してチェックを実行するTJvProgramVersionCheckコンポーネントの使用方法の例があるかどうかは疑問です。 JVCL例のディレクトリ内JEDI JVCL TJvProgramVersionCheck HTTPの使用方法
の例では、HTTP
を使用する方法を示していないあなたの$(JVCL)\Examples\JvProgramVersionCheck
フォルダに含まれてデモがそうすることができるように思わあなた
HTTPを介してチェックを実行するTJvProgramVersionCheckコンポーネントの使用方法の例があるかどうかは疑問です。 JVCL例のディレクトリ内JEDI JVCL TJvProgramVersionCheck HTTPの使用方法
の例では、HTTP
を使用する方法を示していないあなたの$(JVCL)\Examples\JvProgramVersionCheck
フォルダに含まれてデモがそうすることができるように思わあなた
に感謝します。 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.pas
で定義された追加のタイプのカップル、(TJvProgramVersionHTTPLocationICS
とTJvProgramVersionHTTPLocationIndy
、コンパイラによって保護され、両方がそう、彼らはデフォルトのコンパイルには存在しない定義されています。しかし、関連する設定ICS
は(コンパイルエラーの多くが生じて定義があります。明らかに古いバージョンのICS
に対して書かれている)、Indy
を定義して(そして、代わりにIndy10
を使用するように設定して)コンパイルすることはできましたが、動作を変更しませんでした。
また、VersionInfoLocation
のエントリはURL(ファイル名なし)のみであることを確認してください; fiファイル名はVersionInfoFileName
になります。あなたがURLに入れた場合、それはhttp://localhost/Remote/ProjectVersions_http.iniProjectVersions_http.ini
のように(繰り返しますと、とにかく失敗します。この問題を解決しようとデバッガを通じてトレースしながら(私はこれを見つけました。)
最後に...
溶液はわずかである(ただし、大幅に)複雑ここに私がやったことだ:。
コピーJvProgramVersionCheck.pas
デモフォルダに(それが原因で次のステップを再コンパイルする必要があります。)
移動]> [オプション]プロジェクト - します。 > Directories and Conditionalsを開き、次の行をDEFINES
エントリに追加します。
USE_3RDPARTY_INDY10;USE_THIRDPARTY_INDY;
デモフォームからJvProgramVersionHTTPLocation
コンポーネントを削除します。
フォーム宣言に新しいprivate
セクションを追加し、ProgramVersionCheck
コンポーネントプロパティで
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;
VersionInfoFileOptions
プロパティを展開し、次のコードを追加し、FormCreate
場合に
private
HTTPLocation: TJvProgramVersionHTTPLocationIndy;
FileFormat
をhffXML
からhffIni
に変更します。
デモのフォルダからversioninfolocal.ini
を削除するか、名前を変更してください。 (アプリケーションを一度実行すると、httpの位置情報が保存され、上記の変更が上書きされます)これはしばらく時間がかかります)
ローカルhttpサーバが稼働していることと、ProjectVersions_http.ini
ファイルWebルートフォルダにあります。デモを実行できるはずです。フォームが表示されたら、Edit History
ボタンをクリックして、リモートバージョン情報ファイルから取得した情報を確認します。上記で入力した保存済みの設定情報を持つversioninfolocal.ini
の新しいコピーもあります。
VersionInfoLocationにhttp://127.0.0.1/ProjectVersions_http.iniを追加し、TJVProgramVersionCheck.LocationTypeプロパティをpvltHTTPに変更しましたが、まだ動作しません。ブラウザにhttp://127.0.0.1/ProjectVersions_http.iniを貼り付けると、iniファイルをダウンロードできます。 –
"動作しません"とはどういう意味ですか? –
httpサーバーに連絡しようもしません –
詳細なエラー情報を提供する必要があります。下記のコメントの「動作しません」というメッセージはどこにも表示されません。 –