Вопрос Замена команды /Dir (параметр)

Xabib2302

Новичок
Всем привет. Как поменять страницы Dir и Components местами
 
Последнее редактирование:

Shegorat

Lord of Madness
Администратор
Всем привет. У меня есть код для изменения пути установки в зависимости от компонента и не работает команда /DIR
Из справки
/DIR="x:\dirname"
Overrides the default directory name displayed on the Select Destination Location wizard page. A fully qualified pathname must be specified. May include an "expand:" prefix which instructs Setup to expand any constants in the name. For example: '/DIR=expand:{pf}\My Program'.
Т.е. она заменяет только значение WizardForm.DirEdit.Text при запуске. Но при этом ваш код все равно отрабатывает, и перекрывает заданное значение. Нужно делать проверку на наличие параметра /dir, и уже от него плясать.
 

Shegorat

Lord of Madness
Администратор
Ну так как-то
Код:
function ParamExists(S: String): Boolean;
var
  i: Integer;
begin
  Result:= False;
  for i:= 0 to ParamCount() do begin
    if Pos('/'+Uppercase(S), Uppercase(ParamStr(i))) > 0 then begin
      Result:= true;
      Break;
    end;
  end;
end;

function GetCmdDirValue(): String;
var
  i: Integer;
begin
  Result:= '';
  for i:= 0 to ParamCount() do begin
    if (Pos('/DIR', Uppercase(ParamStr(i))) > 0) then begin
      Result:= Copy(ParamStr(i), 6, Length(ParamStr(i)));
      StringChange(Result, 'expand:', '');
      StringChange(Result, 'EXPAND:', '');
      Result:= ExpandConstant(Result);
      Break;;
    end;
  end;
end;

***
if (ParamExists('dir')) then
  WizardForm.DirEdit.Text:= GetCmdDirValue();
***
 

Xabib2302

Новичок
Ну так как-то
Код:
function ParamExists(S: String): Boolean;
var
  i: Integer;
begin
  Result:= False;
  for i:= 0 to ParamCount() do begin
    if Pos('/'+Uppercase(S), Uppercase(ParamStr(i))) > 0 then begin
      Result:= true;
      Break;
    end;
  end;
end;

function GetCmdDirValue(): String;
var
  i: Integer;
begin
  Result:= '';
  for i:= 0 to ParamCount() do begin
    if (Pos('/DIR', Uppercase(ParamStr(i))) > 0) then begin
      Result:= Copy(ParamStr(i), 6, Length(ParamStr(i)));
      StringChange(Result, 'expand:', '');
      StringChange(Result, 'EXPAND:', '');
      Result:= ExpandConstant(Result);
      Break;;
    end;
  end;
end;

***
if (ParamExists('dir')) then
  WizardForm.DirEdit.Text:= GetCmdDirValue();
***
а куда ставить
Код:
if (ParamExists('dir')) then
WizardForm.DirEdit.Text:= GetCmdDirValue();
 

Xabib2302

Новичок
ребята!! ну ответьте на мой вопрос!!! :help: :mad:
 
Последнее редактирование:

Shegorat

Lord of Madness
Администратор
ребята!! ну ответьте на мой вопрос!!!
Хм, ну что вы такой нетерпеливый? Я конечно понимаю, что всем хочется всё и сразу, но нужно учитывать, что у остальных просто нет времени.

Файл во вложении. Не проверял.
 

Вложения

Сверху