如何将参数传递给Inno Setup命令行编译器?

时间:2009-02-04 18:42:30

标签: inno-setup

有人建议在IS新闻组中使用/ D =但是使用版本5.2.3附带的iscc.exe会出现“未知选项:”错误。

然后在脚本中,如何使用命令行参数的值?

3 个答案:

答案 0 :(得分:23)

正如MicSim所说,你需要预处理器。它包含在最新的ISPack中。一旦安装完毕,iscc支持/ D.

然后您可以使用这样定义的值(假设您已完成/DVERSION_NAME = 1.23):

AppVerName=MyApplication v{#VERSION_NAME}

答案 1 :(得分:5)

来自Inno Setup帮助文件:

  

Inno Setup预处理器取代了   标准的Inno设置命令行   编译器(ISCC.exe)由扩展   版。这个扩展版本   提供额外的控制参数   Inno Setup预处理器。

“额外参数”包括/ d选项。

答案 2 :(得分:-2)

如果要从inno中的代码解析命令行参数,请使用与此类似的方法。只需从命令行调用inno脚本,如下所示:

C:\MyInstallDirectory>MyInnoSetup.exe -myParam parameterValue

然后你可以在任何需要的地方调用GetCommandLineParam:

myVariable := GetCommandLineParam('-myParam');

// ============================================= =====================

{ Allows for standard command line parsing assuming a key/value organization }
function GetCommandlineParam (inParam: String):String;
var
  LoopVar : Integer;
  BreakLoop : Boolean;
begin
  { Init the variable to known values }
  LoopVar :=0;
  Result := '';
  BreakLoop := False;

  { Loop through the passed in arry to find the parameter }
  while ( (LoopVar < ParamCount) and
          (not BreakLoop) ) do
  begin
    { Determine if the looked for parameter is the next value }
    if ( (ParamStr(LoopVar) = inParam) and
         ( (LoopVar+1) < ParamCount )) then
    begin
      { Set the return result equal to the next command line parameter }
      Result := ParamStr(LoopVar+1);

      { Break the loop }
      BreakLoop := True;
    end

    { Increment the loop variable }
    LoopVar := LoopVar + 1;
  end;
end;

希望这会有所帮助......