Inno setup и DefaultDirName - PullRequest
       34

Inno setup и DefaultDirName

3 голосов
/ 14 ноября 2010

Есть ли способ установить DefaultDirName по коду в зависимости от того, какое решение принял пользователь при установке?

Позвольте мне прокомментировать: у меня есть некоторый код, который построен для двух разных систем (с использованием разных interops / ocx и тому подобного).Мои входные файлы хранятся в двух каталогах input \ A и input \ B.Я хочу иметь только один установочный файл для обеих систем.

В установочном файле я использую CreateInputOptionPage с двумя опциями, чтобы определить, какие файлы устанавливать (используя «Проверка» для каждого файла).Это работает нормально.

Но у меня также есть некоторые ShellExec по окончании установки, который в данный момент использует {app}, например, для регистрации некоторых классов .Net, и ShellExec для отмены регистрации классов .Net в InitializeUninstall (также использует{app})

Программа установки должна установить программное обеспечение в двух разных местах (в зависимости от выбора пользователя (например, c: \ software_a или c: \ software_b). Невозможно изменить это.

Так есть ли способ указать DefaultDirName до того, как файлы будут скопированы в систему, чтобы я мог использовать один и тот же ShellExec при установке и удалении? Конечно, я мог бы добавить один и тот же ShellExec для обеих систем при установке и использоватьесли проверить, какие файлы нужно зарегистрировать (в зависимости от выбора пользователя), но при удалении у меня не будет этой информации (выбор пользователя), поэтому я не могу отменить регистрацию классов .Net.

спасибо

Ответы [ 2 ]

3 голосов
/ 15 ноября 2010

В разделе кода CreateInputOptionPage вы можете установить значение, а затем использовать его в приведенном ниже фрагменте кода.Я не проверял это, но это могло бы работать.

[Setup]
DefaultDirName={code:getpath}

[Code]
function GetPath( Default: string ): string;
begin

if (CreateInputOptionPageValue1) then
 Result := ExpandConstant({sd}) + '\path1';
else
 Result := ExpandConstant({sd}) + '\path2';
end;
1 голос
/ 29 мая 2013

Если вам нужно изменить папку установки после инициализации DefaultDirName, у меня это сработало:

procedure CurPageChanged(CurPageID: Integer);
begin
  { updates the install path depending on the install type or the entered suffix }
  if CurPageID = wpSelectDir then begin
     WizardForm.DirEdit.Text := ExpandConstant('{pf}') + '\MyAppName' + GetAppSuffix('');
  end;
end;

Приветствие Chris

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...