Summary
How to create a custom dialog with a mutually exclusive featureSynopsis
This article provides a quick highlight on SelectionTree control, and its limitations in the scope of MSI, and describes an alternative method to enable mutually exclusive features.Discussion
In a Basic MSI project, SelectionTree control enables users to change the selection state of features in the Feature table. This control is created with the WC_TREEVIEW class with the following styles:- WS_BORDER
- TVS_HASLIINES
- TVS_HASBUTTONS
- TVS_LINESATROOT
- TVS_DISABLERAGDROP
- TVS_SHOWSELALWAYS
- WS_CHILD
- WS_TABSTOP
- WS_GROUP
The SelectionTree control will automatically publish the following control events,
- SelectionAction
- SelectionBrowse
- SelectionDescription
- SelectionNoItems
- SelectionPath
- SelectionPathOn
- SelectionSize
Alternative method to enable mutually exclusive feature selection In a situation that only one (1) feature can be selected and installed from a set of given features, the SelectionTree control used in Developer standard dialog is constrained by technology. One alternative is to use a ListBox control to manipulate feature selection.
The steps to create a custom dialog with ListBox control populated with features in the project are as followed.
- Create an interior dialog
- Add ListBox control to dialog
- Populate ListBox control
- Define feature selection
Step 1: Create an interior dialog as shown below
Figure 1: Blank Interior Dialog
Step 2: Add ListBox control to dialog
Figure 2: ListBox control button
Figure 3: Custom Feature Selection Dialog?
Step 3: Populate ListBox control
Figure 4 shows the complete list of attributes available to ListBox control. We should familiarize ourselves with, at least, the following property names, Property and Items.
Figure 4: ListBox Control Attributes
Select and click on property name Items in Figure 4 to bring up dialog (Figure 5).
Figure 5: Add ListBox Item Dialog
Click on Add button bring up dialog (Figure 6) to add individual feature into ListBox control. String entered for Value is used internally by MSI, and will not be visible to users at runtime. String entered for Text will be displayed to users. Value and Text do not have to have the same string. If Text is left blank, string entered for Value will be used for Text as well.
Figure 6: Add Items
Step 4: Define feature selection Given a set of features as shown in Figure 7, set Install Level of all features to a number higher than the value of INSTALLLEVEL property. The default INSTALLLEVEL is 100. By doing that, it is to initialize all features to be not selected for installation by default.
Figure 7: Existing Features
Add AddLocal events to Next button as in Figure 8. It will select a feature for installation based on user?s selection. You can add other necessary events per your installation requirements. AddLocal event takes a string argument, and does not resolve the string. When a list item is selected, the property of ListBox control will contain the string of Value column in Figure 5.
Figure 8: AddLocal Events on Next button
Figure 9 shows how the dialog will appear at runtime. To set a default selection, you can assign a value to the property of ListBox control in Property Manager in IDE.
Figure 9: Feature Selection Dialog at Runtime
Was this helpful?
Related Articles
Mutually Exclusive Features in a Suite Install 3Number of Views Disabling Custom Dialog Box Controls 3Number of Views Creating Custom Platform Expressions 4Number of Views Display a Custom Dialog Depending on the Value of a Custom MSI Property 3Number of Views Creating Custom Auto-WriteUp Rules 4Number of Views
Revenera Assistant
Online
Hi, I am Reva - Ask me anything.
Updates
No new updates
Chat
Home
Updates
/**/
Thanks for the feedback!
Your feedback has been saved.Rate this response:
1
2
3
4
5
Add Additional feedback ( Optional )
0/240
English
English
Language changed successfully
Something went wrong
Email sent successfully
Something went wrong
Case create successfully
Are you sure you want to cancel
the case creation?
Please select a product to submit the case.
Please select a product version to submit the case.
0/255
Upload Attachment
File Upload
Maximum file
size allowed is 3 MB.
File type
not supported.
Supported file types:
Documents (.txt, .doc, .docx, .pdf), Images (.jpg, .png), Comma Separated Files
(.csv) Speadsheets (.xlsx, .xls)
Are you sure you want to cancel the case creation?
Case closed successfully
File Upload
Maximum file size allowed is 3 MB.
File type not supported.
Supported file types:
Documents (.txt, .doc, .docx, .pdf), Images (.jpg, .png), Comma Separated Files
(.csv) Speadsheets (.xlsx, .xls)
Are you sure you want to close this case
| Products | Region | Phone Numbers |
|---|---|---|
| FlexNet Operations FlexNet Embedded FlexNet Publisher FlexNet Connect FlexNet Code Insight InstallAnywhere InstallShield |
North America * |
+1 630-332-2513 (toll) +1 877-279-2853 (toll-free in North America) |
| Europe * |
+44 1925 944367 (toll) +44 800 047 8642 (toll-free in Europe) |
|
| Japan * | +81 3-4540-5335 (select option 2) | |
| Australia * |
+61 3 9895 2177 +61 1800 560 603 (toll-free in Australia) |
|
|
Usage Intelligence (formerly
Revulytics) Compliance Intelligence |
Please use the Case Portal to submit your support ticket or reach out to your Revenera contact. | |
File Upload
Maximum file
size allowed is 3 MB.
File type
not supported.
Supported file types:
Documents (.txt, .doc, .docx, .pdf), Images (.jpg, .png), Comma Separated Files
(.csv) Speadsheets (.xlsx, .xls)
Revenera Assistant
© 2026 Flexera Software. All Rights Reserved.
Case id: 00001065
Activity: Status change: 2 hours ago