Inno Setup Remember selected setup type when Uninstallable=no

主宰稳场 提交于 2021-02-18 18:54:15

问题


I am creating an Inno Setup installer that is a little non traditional. I am setting Uninstallable=no but I still need to be able to remember what the user selected for the type of install if they reinstall in the future. I thought about writing the type out to a file which I was able to do. I am not sure how to set the type when the installer is run the next time however. Here is my code for storing the type.

procedure CurStepChanged(CurStep: TSetupStep);
begin
  if (CurStep = ssDone) then
    SaveStringToFile('{app}\type.dat', WizardSetupType(false), false);
end;

I know how to read this back in, but I am not sure how to set the type.

Edit:

Here is the new code

procedure CurPageChanged(CurPageID: Integer);
begin
  { We need to manually store and restore the install type since Uninstallable=no }
  if (CurPageID = wpSelectComponents) then
    WizardForm.TypesCombo.ItemIndex := GetIniInt('Settings', 'InstallType', 0, 0, 3, ExpandConstant('{app}\settings.ini'));
  if (CurPageID = wpInstalling) then
    SetIniInt('Settings', 'InstallType', WizardForm.TypesCombo.ItemIndex, ExpandConstant('{app}\settings.ini'));
end;

回答1:


Save WizardForm.TypesCombo.ItemIndex instead of the WizardSetupType and set it back when restoring the selection.

After restoring the WizardForm.TypesCombo.ItemIndex you have to call the WizardForm.TypesCombo.OnChange to update the components selection.


I'd also suggest you use INI file functions SetIniInt and GetIniInt instead of the SaveStringToFile.


Store:

SetIniInt('Settings', 'InstallType', WizardForm.TypesCombo.ItemIndex,
          ExpandConstant('{app}\settings.ini'));

Restore:

WizardForm.TypesCombo.ItemIndex :=
  GetIniInt('Settings', 'InstallType', 0, 0, 3, ExpandConstant('{app}\settings.ini'));
{ The OnChange is not called automatically when ItemIndex is set programmatically. }
{ We have to call it to update components selection. }
WizardForm.TypesCombo.OnChange(WizardForm.TypesCombo);

For an explanation of the last code line, see What does it mean if we type WizardForm.TypesCombo.OnChange(WizardForm.TypesCombo) in Inno Setup?



来源:https://stackoverflow.com/questions/35710972/inno-setup-remember-selected-setup-type-when-uninstallable-no

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!