Delphi FMX 获取程序版本

欢迎加入全网最大Delphi 技术交流群 682628230

在 Delphi FMX 中,可以通过以下方法获取当前应用程序的版本号:

使用 IFMXApplicationService 接口

delphi复制

uses
  FMX.Platform;

procedure GetAppVersion;
var
  AppVersion: string;
begin
  AppVersion := TPlatformServices.Current.ApplicationServices.GetVersionString;
  ShowMessage('App Version: ' + AppVersion);
end;

该方法适用于跨平台应用程序,GetVersionString 方法会返回应用程序的版本号字符串。

使用 TOSVersion 类(适用于 Windows 平台)

delphi复制

uses
  System.OSVersion;

procedure GetAppVersion;
var
  OSVersion: TOSVersion;
begin
  OSVersion := TOSVersion.Create;
  try
    ShowMessage('App Version: ' + OSVersion.ToString);
  finally
    OSVersion.Free;
  end;
end;

TOSVersion 类提供了关于操作系统版本的信息,但也可以用于获取应用程序的版本号。

使用 Windows API(适用于 Windows 平台)

delphi复制

uses
  Winapi.Windows;

procedure GetAppVersion;
var
  VerInfoSize, VerValueSize: DWORD;
  VerInfo: Pointer;
  VerValue: PVSFixedFileInfo;
begin
  VerInfoSize := GetFileVersionInfoSize(PChar(ParamStr(0)), 0);
  if VerInfoSize > 0 then
  begin
    GetMem(VerInfo, VerInfoSize);
    try
      if GetFileVersionInfo(PChar(ParamStr(0)), 0, VerInfoSize, VerInfo) then
      begin
        VerQueryValue(VerInfo, '\', Pointer(VerValue), VerValueSize);
        ShowMessage('App Version: ' +
          IntToStr(VerValue^.dwFileVersionMS shr 16) + '.' +
          IntToStr(VerValue^.dwFileVersionMS and $FFFF) + '.' +
          IntToStr(VerValue^.dwFileVersionLS shr 16) + '.' +
          IntToStr(VerValue^.dwFileVersionLS and $FFFF));
      end;
    finally
      FreeMem(VerInfo, VerInfoSize);
    end;
  end;
end;

该方法通过调用 Windows API 获取应用程序的版本号。

使用 Android API(适用于 Android 平台)

delphi复制

uses
  Androidapi.JNI.GraphicsContentViewText,
  Androidapi.JNI.JavaTypes,
  FMX.Helpers.Android;

procedure GetAppVersion;
var
  PackageManager: JPackageManager;
  PackageInfo: JPackageInfo;
begin
  PackageManager := TAndroidHelper.Context.getPackageManager;
  PackageInfo := PackageManager.getPackageInfo(TAndroidHelper.Activity.getPackageName, 0);
  ShowMessage('App Version: ' + JStringToString(PackageInfo.versionName));
end;

该方法通过调用 Android API 获取应用程序的版本号。

使用 iOS API(适用于 iOS 平台)

delphi复制

uses
  FMX.Platform.iOS,
  iOSapi.Foundation,
  Macapi.ObjectiveC;

procedure GetAppVersion;
var
  AppBundle: NSBundle;
  AppNameKey: Pointer;
  NSAppName: NSString;
begin
  AppBundle := TNSBundle.Wrap(TNSBundle.OCClass.mainBundle);
  AppNameKey := (NSSTR('CFBundleVersion') as ILocalObject).GetObjectID;
  NSAppName := TNSString.Wrap(AppBundle.infoDictionary.objectForKey(AppNameKey));
  ShowMessage('App Version: ' + UTF8ToString(NSAppName.UTF8String));
end;

该方法通过调用 iOS API 获取应用程序的版本号。

以上方法可以根据不同的平台选择合适的实现方式来获取应用程序的版本号。

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享