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

InstallShield 2025

Project: This information applies to the 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.
Using the mouse scroll wheel when the scrollable EULA control has focus.
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 to enable the Next button.

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

3. This is optional; if you want the I accept the terms in the license agreement option to be automatically selected after an end user reaches the end of the EULA text, perform the following in addition to the procedure described above (step 2):
a. Continuing from step 2c (mentioned above), in the Events setting, click the New Event button, and then click SetProperty. InstallShield adds a new set of rows under the Events setting.
b. In the SetProperty setting, enter the following:

LicenseViewed

c. In the Property subsetting, enter the following:

AgreeToLicense

d. In the Value, subsetting, enter the following:

Yes

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. When the end user reaches the bottom of the EULA text,

The installation sets the LicenseViewed property.
If the optional configuration is applied described in step 3, the AgreeToLicense property is automatically set to Yes, which select the I accept the terms in the license agreement option.
The Next button is then enabled 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