Как предавате параметри на компилатора на командния ред на Inno Setup?

Беше предложено в дискусионната група IS да се използва /D=, но използвайки iscc.exe, който дойде с версия 5.2.3, получавам грешка „Неизвестна опция:“.

След това в скрипта, как използвате стойността на параметъра на командния ред?


person AlanKley    schedule 04.02.2009    source източник
comment
Благодаря на всички за отговорите. Всички бяха полезни. Мразя да избирам само един като предпочитан отговор.   -  person AlanKley    schedule 05.02.2009


Отговори (3)


Вие, както казва MicSim, имате нужда от препроцесор. Включен е в най-новия ISPack. След като бъде инсталиран, iscc поддържа /D.

След това можете да използвате стойностите, дефинирани по този начин (ако приемем, че сте направили /DVERSION_NAME=1.23):

AppVerName=MyApplication v{#VERSION_NAME}
person Jon Bright    schedule 04.02.2009
comment
Това вече е вградено в Inno Setup 5, така че не е необходимо да изтегляте допълнителни пакети. - person Steve Hanov; 10.08.2012
comment
Това не е част от документацията. Моля, включете малко полезна информация тук: jrsoftware.org/ishelp/index.php?topic =setupcmdline - person vezenkov; 29.07.2015

От помощния файл за настройка на Inno:

Inno Setup Preprocessor замества стандартния компилатор на командния ред на Inno Setup (ISCC.exe) с разширена версия. Тази разширена версия предоставя допълнителни параметри за управление на Inno Setup Preprocessor.

„Допълнителните параметри“ включват опцията /d.

person jdigital    schedule 04.02.2009

Ако искате да анализирате аргументите на командния ред от кода в 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;

Надявам се това да помогне...

person Steven Dunn    schedule 03.03.2011
comment

В Xcode 3, ако щракна два пъти върху xib файл, той не го отваря с инструмента за създаване на интерфейси. Не прави абсолютно нищо. Как мога да разреша това? Имам Xcode 3 с инсталиран iPhone SDK 4.0.2.

- person jachguate; 03.03.2011
comment
Моля, изтрийте този отговор - добавя объркване и не е подходящ за въпроса. - person SlowLearner; 23.10.2016
comment
Да, различно е, но това отговаря на проблемите ми. Така че благодаря - person JavaJade; 02.08.2017
comment
Знаех, че някой ще даде този отговор - не е свързан с въпроса, но ми помогна. Благодаря :) - person shahar eldad; 14.04.2021