如何获取包含在Inno Setup安装程序exe文件中的文件版本(exe和dll)?

4

如题,这是否可能?如果参数(例如传递给exe文件的参数)设置为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');

我有一些想法,但每个想法都基于在编译exe安装程序时构建的.txt文件,然后从中读取...

2个回答

6

使用GetVersionNumbersGetVersionNumbersString 支持函数。

GetVersionNumbersStringMajor.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;

0

谢谢!我已经找到了检查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”参数运行我的安装程序,它将显示我想要的信息页面 :-)

1
不需要检查ParamStr(0),因为这里有应用程序的完整路径。而且,如果param只使用一次,则没有必要使用该变量。最好从函数中Exit而不是仅仅打破循环(它更好地解释了意图)。最后,将用于检查(区分大小写)是否传递了“-p”命令行参数的函数命名为“GetParam”仅仅是错误的。 - TLama

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接