Как заставить переключатель командной строки Inno Setup /DIR работать с пользовательской страницей пути
Когда я использую /DIR
переключатель командной строки
"Mysoft.exe" /VERYSILENT /installerbusiness /DIR="C:\Program Files (x86)"
Указанный путь не используется для поля пути на моей пользовательской странице:
Я использую код, основанный на Использовать два / несколько выбранных каталогов с пользовательской страницы в разделе Файлы.
Это пример кода, который я использую.
[Code]
var
Install: TInputDirWizardPage;
procedure InitializeWizard();
begin
Install :=
CreateInputDirPage(
wpSelectDir, CustomMessage('Readyinstall'),
CustomMessage('Readyinstallpc'), #13#10#13#10 + CustomMessage('Tocontinuet'),
True, 'Mysoft');
Install.Add(CustomMessage('DestFolder'));
Install.Values[0] := ('C:\Program Files\Mysoft');
{ ... }
end;
1 ответ
Если вы хотите стандартное поведение "пути установки" Inno Setup, когда включает обработку /DIR=
переключатель командной строки, вы должны связать свой пользовательский путь к стандартному.
В частности, вы должны скопировать начальное значение WizardForm.DirEdit
к вашей пользовательской коробке:
var
Page: TInputDirWizardPage;
procedure InitializeWizard();
begin
...
Page := CreateInputDirPage(...);
Page.Add(...);
Page.Values[0] := WizardForm.DirEdit.Text;
end;
Это решение обрабатывает не только /DIR=
, но также /LOADINF=
,
Чтобы дополнить код выше, вы должны скопировать значение обратно в WizardForm.DirEdit
, Таким образом, вы убедитесь, что при повторной установке / обновлении ранее выбранное значение используется повторно. Это показано в пункте 1) моего ответа на Использование двух / нескольких выбранных каталогов с пользовательской страницы в разделе "Файлы".
Если вышесказанное слишком сложно (или неочевидно) для реализации, из-за сложной логики вашего установщика, вы можете обработать /DIR=
переключить программно самостоятельно. См. Настройка значения поля пользовательской страницы Inno Setup из командной строки.
procedure InitializeWizard();
var
DirSwitchValue: string;
begin
Install := ...;
Install.Add(...);
DirSwitchValue := ExpandConstant('{param:DIR}');
if DirSwitchValue <> '' then
begin
Install.Values[0] := DirSwitchValue;
end
else
begin
Install.Values[0] := ExpandConstant('{pf}\Mysoft');
end;
end;
Это решение явно не справляется /LOADINF=
, Как обрабатывать .inf
Файлы отображаются в Inno Setup Загрузка значений по умолчанию для пользовательских настроек установки из файла (.inf) для автоматической установки.
Кроме того, с этим решением ранее использованный путь установки не будет использоваться для обновлений / переустановок. Как реализовать это, показано в Inno Setup с тремя целевыми папками.