将所有设置设置重置为默认值
问题描述:
有什么方法可以将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
)恢复为其设置启动时的默认设置。我怎样才能做到这一点?
答
所以我已经在[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
。当然,这不会恢复任何自定义向导选项/页面。但是你可以自己轻松添加额外的存储/恢复代码。
重新启动setup.exe?那就是,ShellExecute(setup.exe)然后终止setup.exe的当前实例? – 2010-08-21 14:38:12
是的,这可以工作,但它是一个有点讨厌的解决方案。对于最终用户,单击“重置设置”会导致向导窗体消失并重新出现。这当然是意想不到的。但我仍然希望有一些方法可以在不重新启动整个安装过程的情况下进行。 – Paya 2010-08-21 15:04:15