高見知英の技術ログ

技術関係のログをQiitaから移行してきました。プログラミングのほか、使っているアプリの細かい仕様についてなど書いていきます。

Lazarusアプリのバージョン情報を取得する

このブログはLazarus(FreePascal)アドベントカレンダー9日目の記事です。

qiita.com

Delphiでアプリケーションのバージョン情報を取得するには、FileInfoユニットにあるTVersionInfoクラスを用います。

procedure TAboutDialog.FormCreate(Sender: TObject);
var
  VersionInfo: TVersionInfo;
begin
  VersionInfo := TVersionInfo.Create;
  try
    VersionInfo.Load(HINSTANCE);
    Self.VersionString.Caption:=Format('Version %d.%d.%d.%d', 
      [VersionInfo.FixedInfo.FileVersion[0],
        VersionInfo.FixedInfo.FileVersion[1],
        VersionInfo.FixedInfo.FileVersion[2],
        VersionInfo.FixedInfo.FileVersion[3]]);
  finally
    VersionInfo.Free;
  end;
end;

もちろん事前にプロジェクトのオプションより、バージョン番号を設定しておく必要があります。

f:id:TakamiChie:20211206101714p:plain
プロジェクトのオプション

TVersionInfo.VersionInfo.FixedInfo.FileVersionプロパティにバージョン番号が入っています。配列の要素は頭からメジャーバージョン、マイナーバージョン、リビジョン、ビルド番号となっています。

Lazarusにはコンパイルの度にビルド番号をインクリメントするというオプションがあります。これをチェックしておくと実行メニューの構築を実行したときに1インクリメントされます(コンパイルや実行ではダメなようです)。

個人的にはMicrosoft風に日付に関連する値にしてみたいところですが、このへんはツールを作るなりなんなりして対応するしかなさそうですね。