有没有办法将 Inno Setup 中的所有设置设置“重置”为默认值?
我想在我的设置中添加 Reset options
按钮,然后点击该按钮会将所有选项设置为相同的值,就像用户从未更改任何内容一样,但只是单击{ {1}},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")}';
)恢复为其设置启动默认值。我怎么能这样做?
答案 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
即可。当然,这不会恢复任何自定义向导选项/页面。但您可以自己轻松添加其他存储/恢复代码。