// 是否显示“选择安装给谁”选项,这里我认为显示的条件是:NT 平台,且为 Amdin 用户 function ShowSelectUserTask: Boolean; begin Result := UsingWinNT and IsAdminLoggedOn; end;
// 判断“选择安装给谁”选项值 function CheckInstallFor(Task: string): Boolean; begin if UsingWinNT then begin Result := IsTaskSelected(Task); if Result and (Task = 'forallusers') then Result := ShowSelectUserTask; end else Result := Task = 'forallusers'; end;
// 安装向导页面改变事件 procedure CurPageChanged(CurPageID: Integer); var I: Integer; WinVer: TWindowsVersion; begin if (CurPageID = wpSelectTasks) then begin // 当前页为 附加任务 选择页 GetWindowsVersionEx(WinVer); if UsingWinNT and (not IsAdminLoggedOn or (WinVer.Major > 5)) then begin // NT 平台,且 不是 Admin 用户 或 是 Vista 系统 for I := 0 to WizardForm.TasksList.Items.Count - 1 do begin if WizardForm.TasksList.ItemCaption = ExpandConstant('{cm:cmCurrentUserOnly}') then WizardForm.TasksList.Checked := True; // 默认选择为 安装给当前用户 end; end; end; end;
// 安装步骤改变事件 procedure CurStepChanged(CurStep: TSetupStep); var S: string; ResultCode: Integer; begin if CurStep = ssInstall then begin // 安装将要开始执行 // 这里可以根据自己需要,执行特定代码。我这里只是显示一下选项值 if IsTaskSelected('forallusers') then MsgBox(ExpandConstant('{cm:cmSelectUser}') + ' ' + ExpandConstant('{cm:cmCurrentUserOnly}'), mbInformation, MB_OK) else MsgBox(ExpandConstant('{cm:cmSelectUser}') + ' ' + ExpandConstant('{cm:cmAllUsers}'), mbInformation, MB_OK); end; end;