| [Code] | |
| var | |
| NoAdminPage: TOutputMsgWizardPage; | |
| SelectOptionsPage: TInputOptionWizardPage; | |
| MDISDIPage: TInputOptionWizardPage; | |
| HelpStylePage: TInputOptionWizardPage; | |
| INIFilename: String; | |
| function IsAdmin: boolean; | |
| begin | |
| Result := IsAdminLoggedOn or IsPowerUserLoggedOn; | |
| end; | |
| function NonAdmin: boolean; | |
| begin | |
| Result := not IsAdmin; | |
| end; | |
| procedure InitializeWizard; | |
| var | |
| option : String; | |
| index : Integer; | |
| begin | |
| NoAdminPage := CreateOutputMsgPage(wpWelcome, SetupMessage(msgInformationTitle), | |
| CustomMessage('adminprivilegesrequired'), CustomMessage('adminexplanation')); | |
| SelectOptionsPage := CreateInputOptionPage(wpSelectComponents, | |
| CustomMessage('startupt'), CustomMessage('startupq'), | |
| CustomMessage('startupi'), True, False); | |
| SelectOptionsPage.Add(CustomMessage('startup0')); | |
| SelectOptionsPage.Add(CustomMessage('startup1')); | |
| SelectOptionsPage.SelectedValueIndex := 1; | |
| MDISDIPage := CreateInputOptionPage(SelectOptionsPage.ID, | |
| CustomMessage('MDIt'), CustomMessage('MDIq'), | |
| CustomMessage('MDIi'), True, False); | |
| MDISDIPage.Add(CustomMessage('MDI0')); | |
| MDISDIPage.Add(CustomMessage('MDI1')); | |
| HelpStylePage := CreateInputOptionPage(MDISDIPage.ID, | |
| CustomMessage('HelpStylet'), CustomMessage('HelpStyleq'), | |
| CustomMessage('HelpStylei'), True, False); | |
| HelpStylePage.Add(CustomMessage('HelpStyle0')); | |
| HelpStylePage.Add(CustomMessage('HelpStyle1')); | |
| INIFilename := ExpandConstant('{param:LOADINF}'); | |
| if INIFilename <> '' then INIFilename := ExpandFilename(INIFilename); | |
| { From highest to lowest, priority is: | |
| LOADINF value | |
| PreviousData value | |
| Default from build } | |
| option := GetPreviousData('MDISDI', ''); | |
| if INIFilename <> '' then | |
| option := GetIniString('R', 'MDISDI', option, INIFilename); | |
| case option of | |
| 'MDI': index := 0; | |
| 'SDI': index := 1; | |
| else | |
| index := @MDISDI@; | |
| end; | |
| MDISDIPage.SelectedValueIndex := index; | |
| option := GetPreviousData('HelpStyle', ''); | |
| if INIFilename <> '' then | |
| option := GetIniString('R', 'HelpStyle', option, INIFilename); | |
| case option of | |
| 'plain': index := 0; | |
| 'CHM': index := 1; | |
| 'HTML': index := 1; | |
| else | |
| index := @HelpStyle@; | |
| end; | |
| HelpStylePage.SelectedValueIndex := index; | |
| { Get the save name now, because the current dir might change } | |
| INIFilename := ExpandConstant('{param:SAVEINF}'); | |
| if INIFilename <> '' then INIFilename := ExpandFilename(INIFilename); | |
| end; | |
| procedure RegisterPreviousData(PreviousDataKey: Integer); | |
| var | |
| MDISDI: String; | |
| HelpStyle: String; | |
| begin | |
| { Store the settings so we can restore them next time } | |
| case MDISDIPage.SelectedValueIndex of | |
| 0: MDISDI := 'MDI'; | |
| 1: MDISDI := 'SDI'; | |
| end; | |
| SetPreviousData(PreviousDataKey, 'MDISDI', MDISDI); | |
| if INIFilename <> '' then | |
| SetIniString('R', 'MDISDI', MDISDI, INIFilename); | |
| case HelpStylePage.SelectedValueIndex of | |
| 0: HelpStyle := 'plain'; | |
| 1: HelpStyle := 'HTML'; | |
| end; | |
| SetPreviousData(PreviousDataKey, 'HelpStyle', HelpStyle); | |
| if INIFilename <> '' then | |
| SetIniString('R', 'HelpStyle', HelpStyle, INIFilename); | |
| end; | |
| function SetCommentMarker(var lines: TArrayOfString; option: String; active: boolean) : boolean; | |
| var | |
| i : integer; | |
| old : string; | |
| begin | |
| Result := false; | |
| for i := 0 to pred(GetArrayLength(lines)) do | |
| if pos(option, lines[i]) > 0 then | |
| begin | |
| old := lines[i]; | |
| if active then | |
| lines[i][1] := ' ' | |
| else | |
| lines[i][1] := '#'; | |
| if old <> lines[i] then | |
| Result := true; | |
| exit; | |
| end; | |
| end; | |
| procedure EditOptions(); | |
| var | |
| lines : TArrayOfString; | |
| filename : String; | |
| changed : boolean; | |
| begin | |
| changed := false; | |
| filename := ExpandConstant(CurrentFilename); | |
| LoadStringsFromFile(filename, lines); | |
| if SetCommentMarker(lines, 'MDI = yes', MDISDIPage.SelectedValueIndex = 0) then changed := true; | |
| if SetCommentMarker(lines, 'MDI = no', MDISDIPage.SelectedValueIndex = 1) then changed := true; | |
| if SetCommentMarker(lines, 'options(help_type="text"', HelpStylePage.SelectedValueIndex = 0) then changed := true; | |
| if SetCommentMarker(lines, 'options(help_type="html"', HelpStylePage.SelectedValueIndex = 1) then changed := true; | |
| if changed then | |
| SaveStringsToFile(filename, lines, False); | |
| end; | |
| function ShouldSkipPage(PageID: Integer): boolean; | |
| begin | |
| if PageID = NoAdminPage.ID then Result := IsAdmin | |
| else if (PageID = MDISDIPage.ID) or (PageID = HelpStylePage.ID) then | |
| Result := SelectOptionsPage.SelectedValueIndex = 1 | |
| else Result := false; | |
| end; | |
| function UserPF(Param:String): String; | |
| begin | |
| Result := ExpandConstant('{pf}'); | |
| if (not IsAdmin) then | |
| begin | |
| try | |
| Result := ExpandConstant('{userdocs}'); | |
| except | |
| // Do nothing, user doesn't have a My Documents folder | |
| end; | |
| end; | |
| end; |