Сброс всех настроек настройки до значений по умолчанию - PullRequest
0 голосов
/ 21 августа 2010

Есть ли способ "сбросить" все настройки в Inno Setup на значения по умолчанию?

Я хочу добавить кнопку Reset options в мойустановка и нажатие на эту кнопку установит для всех параметров одно и то же значение, как если бы пользователь никогда ничего не менял, а просто щелкал Next, Next, Install.

Но обратите внимание, что этиЗначения эля немного отличаются от compile-time default values, например, AppDir может по умолчанию установить DefaultDirName или wizardForm.PrevAppDir.Поэтому я хочу, чтобы все параметры по умолчанию были dynamic defaults, что для AppDir:

if wizardForm.PrevAppDir <> '' then
    result := wizardForm.PrevAppDir
else
    result := '{#SetupSetting("DefaultDirName")}';

Надеюсь, вы понимаете, чего я хочу достичь.Если приложение уже установлено, задайте для всех параметров значения последней установки, если приложение не установлено, а затем установите для них значения по умолчанию.

Я знаю, что установка делает все это при запуске,но я хочу добавить кнопку, которая вернула бы все сделанные пользователем изменения (например, в wpSelectComponents) к их настройкам по умолчанию при запуске.Как я могу это сделать?

1 Ответ

0 голосов
/ 22 августа 2010

Итак, я решил это в [Code].Вся информация доступна через глобальный объект WizardForm, поэтому, когда страницы конфигурации отображаются впервые, вы сохраняете эти значения в своих переменных.Затем, когда вам нужно сбросить конфигурацию, вы просто восстанавливаете все настройки через WizardForm снова.Я не буду вставлять здесь весь код, так как он довольно длинный (172 LOC), но есть только часть AppDir:

[Code]
var storedAppDir : string;
    hasAppDir : boolean;

procedure OnAppDir;
begin
    if not hasAppDir then begin
        storedAppDir := wizardForm.DirEdit.Text;
        hasAppDir := true;
    end;
end;

procedure RestoreAppDir;
begin
    if hasAppDir then begin
        wizardForm.DirEdit.Text := storedAppDir;
    end;
end;

procedure InitializeDefaults;
begin
    //hasUserInfo := false;
    hasAppDir := false;
    //hasComponents := false;
    //hasProgramGroup := false;
    //hasTasks := false;
end;

procedure RestoreDefaults;
begin
    //RestoreUserInfo;
    RestoreAppDir;
    //RestoreComponents;
    //RestoreProgramGroup;
    //RestoreTasks;
end;

procedure DefaultsCurPageChanged(CurPageID : integer);
begin
    case CurPageID of
        //wpUserInfo: OnUserInfo;
        wpSelectDir: OnAppDir;
        //wpSelectComponents: OnComponents;
        //wpSelectProgramGroup: OnProgramGroup;
        //wpSelectTasks: OnTasks;
    end;
end;

procedure InitializeWizard;
begin
    InitializeDefaults;
end;

procedure CurPageChanged(CurPageID : Integer);
begin
    DefaultsCurPageChanged(CurPageID);
end;

А когда вам нужно сбросить всю конфигурацию, просто позвонитеRestoreDefaults.Конечно, это не восстановит никаких пользовательских настроек / страниц мастера.Но вы можете легко добавить дополнительное хранилище / восстановление кода.

...