getAll Key,Value from VarFileInfo in Inno Setup

20 Views Asked by At
function GetFileVerInfo(FileName, VerName: String): String;
var
  Len: Integer;
  FileVerInfo: array of Byte;
  Lang: array of Byte;
  Buffer: DWord;
  LangCodepage: string;
  SubBlock: string;
begin
  Result := '';
  if FileExists(FileName) then
  begin
    Len := GetFileVersionInfoSize(FileName, 0);
    if Len > 0 then
    begin
      SetArrayLength(FileVerInfo, Len);
      if GetFileVersionInfo(FileName, 0, Len, FileVerInfo[0]) then
      begin
        if VerQueryValue(FileVerInfo[0], '\VarFileInfo\Translation', Buffer, Len) then
        begin
          if Len >= 4 then
          begin
            SetArrayLength(Lang, 4);
            RtlMoveMemoryAsBytes(Lang, Buffer, 4);
            LangCodepage :=
              Format('%.2x%.2x%.2x%.2x', [Lang[1], Lang[0], Lang[3], Lang[2]]);
            SubBlock := Format('\%s\%s\%s', ['StringFileInfo', LangCodepage, VerName]);
            if VerQueryValue(FileVerInfo[0], SubBlock, Buffer, Len) then
            begin
              SetLength(Result, Len - 1);
              RtlMoveMemoryAsString(Result, Buffer, (Len - 1) * 2);
            end;
          end;
        end;
      end;
    end;
  end;
end;

Is it possible to somehow remake the code so that I don’t specify a specific key, but take everything that is there in the form of a list?

i dont know how get keys and values

0

There are 0 best solutions below