将所有设置设置重置为默认值

时间:2010-08-21 14:25:04

标签: windows installer installation inno-setup

有没有办法将 Inno Setup 中的所有设置设置“重置”为默认值?

我想在我的设置中添加 Reset options 按钮,然后点击该按钮会将所有选项设置为相同的值,就像用户从未更改任何内容一样,但只是单击{ {1}},NextNext

但请注意,这些值与Install略有不同,例如compile-time default values可以默认为AppDirDefaultDirName。所以我希望所有选项都默认为wizardForm.PrevAppDirdynamic defaults为:

AppDir

我希望你明白我想要完成的事情。如果已安装应用程序,则将所有选项设置为最后安装值,如果未安装应用程序,则将它们设置为默认值。

我知道设置会在启动时完成所有这些操作,但我想添加一个按钮,该按钮会将用户所做的所有更改(例如if wizardForm.PrevAppDir <> '' then result := wizardForm.PrevAppDir else result := '{#SetupSetting("DefaultDirName")}'; )恢复为其设置启动默认值。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

所以我在[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即可。当然,这不会恢复任何自定义向导选项/页面。但您可以自己轻松添加其他存储/恢复代码。