Requiring End Users to Scroll Through the EULA in the LicenseAgreement Dialog

InstallShield 2016

Project • This information applies to Basic MSI projects.

InstallShield includes support for disabling the Next button on the LicenseAgreement dialog until the end user reaches the end of the End-User License Agreement (EULA) text in the scrollable EULA control through one of the following methods:

Using the scroll bar.
Pressing PAGE DOWN when the scrollable EULA control has focus.
Pressing CTRL+PAGE DOWN when the scrollable EULA control has focus.
Pressing the DOWN ARROW key when the scrollable EULA control has focus.
Right-clicking the scroll bar and then clicking Bottom.

The end user must also select the I accept the terms in the license agreement option before the Next button is enabled.

The LicenseAgreement dialog requires end users to select the I accept option by default. If you also want to require end users to reach the end of the EULA text, perform the following task.

To require end users to reach the end of the EULA text in the scrollable EULA control:

1. Add to your project a new MSI DLL custom action called WatchScroll:
a. In the View List under Behavior and Logic, click Custom Actions and Sequences.
b. Right-click the Custom Actions explorer, point to New MSI DLL, and then click Stored in Binary table. InstallShield adds a new custom action called NewCustomActionN, where N is a successive number.
c. Change the name of the custom action to WatchScroll.
d. In the pane on the right, configure the following settings for this custom action:
DLL Filename: <ISRedistPlatformDependentFolder>\EulaScrollWatcher.dll
Function Name: WatchScroll
Return Processing: Asynchronous (Waits for exit code)
In-Script Execution: Immediate Execution
Execution Scheduling: Always execute

For all other settings, leave the default values. The value of the MSI Type Number setting should be 129.

2. Edit the LicenseAgreement dialog so that it launches the appropriate custom action:
a. In the View List under User Interface, click Dialogs.
b. In the Dialogs explorer, expand the All Dialogs folder, and expand the LicenseAgreement item, and then click Behavior.
c. In the center pane that lists the LicenseAgreement controls, click the ScrollableText control named Memo. This is the control that contains the text of the EULA. Its settings are displayed in the right pane.
d. In the Events setting, click the New Event button, and then click DoAction. InstallShield adds a new set of rows under the Events setting.
e. In the DoAction setting, enter the following:

Not LicenseViewed AND Not ISLicenseWatching

f. In the Action subsetting, specify the following action name:

WatchScroll

g. In the center pane that lists the LicenseAgreement controls, click the push button control named Next.
h. In the Conditions setting, click the New Condition button, and then click Disable. InstallShield adds a Disable setting.
i. In the Disable setting, enter the following:

AgreeToLicense <> "Yes" OR Not LicenseViewed

j. In the Conditions setting, click the New Condition button, and then click Enable. InstallShield adds an Enable setting.
k. In the Enable setting, enter the following:

AgreeToLicense = "Yes" AND LicenseViewed

At run time, the installation monitors the EULA control in an asynchronous custom action. While the custom action is running, the ISLicenseWatching property is set. Once the custom action is finished, it removes the ISLicenseWatching property. This avoids the hourglass flicker otherwise seen when end users scroll through the EULA text. Once the end user reaches the bottom of the EULA text, the installation sets the LicenseViewed property and manually enables the Next button if necessary according to the Next button’s conditions. The Next button is found via its text as stored in the Control table; therefore, you can use the aforementioned procedure with any language transform as long as the control is named Next.

See Also