Как получить версии файлов (exe и dll), которые включены в exno установочный файл inno setup?

Как в теме, возможно ли это? И я хочу отобразить их на одной странице установщика, если для параметра (например, параметр передан в исполняемый файл) установлено значение true.

Я знаю, как отобразить какую-то страницу:

if dev then
    PageWersjePlikow :=
        CreateOutputMsgMemoPage(
            1, 'Wersje plików zawarte w     instalatorze',
            'Lista plików niewidoczna dla klienta',
            'Pliki:', 'TU WPISAĆ WERSJE PLIKÓW');

У меня есть некоторые идеи, но каждая идея основана на файле.txt, который создается при компиляции exe-установщика, а затем читается из него...

2 ответа

Решение

Использование GetVersionNumbers или же GetVersionNumbersString вспомогательные функции.

GetVersionNumbersString возвращает версию в формате Major.Minor.Rev.Build,

Если вам нужен другой формат, вам нужно использовать GetVersionNumbers и отформатируйте компоненты версии так, как вам нужно (например, Major.Minor.Rev):

function MyGetVersionNumbersString(const Filename: String; var Version: String): Boolean;
var
  MS, LS: Cardinal;
  Major, Minor, Rev, Build: Cardinal;
begin
  Result := GetVersionNumbers(Filename, MS, LS);

  if Result then
  begin
    Major := MS shr 16;
    Minor := MS and $FFFF;
    Rev := LS shr 16;
    Build := LS and $FFFF;
    Version := Format('%d.%d.%d', [Major, Minor, Rev]);
  end
end;

Спасибо! Я нашел решение для проверки параметра cmd:

function GetParam: Boolean;
var
   param: string;
   i: integer;
begin
   Result := False;
   for i:= 0 to ParamCount do
   begin   
      param := ParamStr(i);
      if (param = '-p') then
      begin
         Result := True;
         break;
      end;      
   end;   
end; 

С моей функцией я могу просто запустить мой установщик с параметром -p, и он покажет мою страницу, содержащую информацию, которую я хочу:-)

Другие вопросы по тегам