问题描述
我正在创建一个有点不传统的Inno Setup安装程序.我正在设置 Uninstallable = no
,但是如果以后他们重新安装,我仍然需要记住用户为安装类型选择的内容.我考虑过将类型写到一个我可以做到的文件中.但是,我不确定下次运行安装程序时如何设置类型.这是我用于存储类型的代码.
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.
这是新代码
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;
推荐答案
保存 WizardForm.TypesCombo.ItemIndex
而不是 WizardSetupType
,并在还原选择时将其重新设置.
Save WizardForm.TypesCombo.ItemIndex
instead of the WizardSetupType
and set it back when restoring the selection.
还原 WizardForm.TypesCombo.ItemIndex
后,您必须调用 WizardForm.TypesCombo.OnChange
来更新组件选择.
After restoring the WizardForm.TypesCombo.ItemIndex
you have to call the WizardForm.TypesCombo.OnChange
to update the components selection.
我还建议您使用INI文件功能 SetIniInt
和 GetIniInt
代替 SaveStringToFile
.
I'd also suggest you use INI file functions SetIniInt
and GetIniInt
instead of the SaveStringToFile
.
商店:
SetIniInt('Settings', 'InstallType', WizardForm.TypesCombo.ItemIndex,
ExpandConstant('{app}\settings.ini'));
还原:
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);
有关最后一行代码的说明,请参见如果我们键入WizardForm.TypesCombo.OnChange(WizardForm,这是什么意思.TypesCombo)在Inno设置中?
这篇关于Inno Setup记住当Uninstallable = no时选择的安装类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!