Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 481101
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 13, 20262026-05-13T00:57:38+00:00 2026-05-13T00:57:38+00:00

I already block installation of our software on operating systems where it is known

  • 0

I already block installation of our software on operating systems where it is known not to work like this:

<Condition Message="This software needs Windows XP or newer.">
   <![CDATA[VersionNT >= 501]]>
</Condition>

Now I would also like to display a non-blocking warning if the user tries to install the software on an operating system (VersionNT + Service Pack) that is not explicitly supported, even though it might work.

For example, we only explicitly support the latest service pack of each operating system.

How can I display such a warning?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-13T00:57:38+00:00Added an answer on May 13, 2026 at 12:57 am

    I tackled this problem in 3 parts:

    1. defining an OSWarningText property
      which is only set when a warning
      needs to be given
    2. authoring a custom warning screen
    3. Inserting the custom warning screen in the UI sequence if necessary

    1. Defining an OSWarningText property

    First, declare the property and give it the “unset” value by default:

      <Property Id="OSWarningText" Value="{}"/>
    

    To construct the actual value of the property, set an intermediary property for each possible warning. Make sure the conditions for each warning do not overlap:

      <SetProperty Id="OSWarningText1" After="AppSearch"
         Value="Detected XP SP [ServicePackLevel]. SP3 or higher is recommended.">
         <![CDATA[(VersionNT = 501) AND NOT (ServicePackLevel >= 3)]]>
      </SetProperty>
    
      <SetProperty Id="OSWarningText2" After="SetOSWarningText1"
         Value="Detected Vista SP [ServicePackLevel]. SP2 or higher is recommended.">
         <![CDATA[(VersionNT = 600) AND NOT (ServicePackLevel >= 2)]]>
      </SetProperty>
    

    Assuming the conditions don’t overlap, we can safely condense the warnings in a single property like this:

      <SetProperty Id="OSWarningText" After="SetOSWarningText2"
         Value="[OSWarningText1][OSWarningText2]" />    
    

    2. Authoring a custom warning screen.

    This is similar to the example for adding a checkbox for the desktop shortcut. Copy one of the existing dialog definitions from the wix sources, e.g. InstallDirDlg.wxs and rename it to WarningDlg.wxs.

    Set the dialog ID to Id="WarningDlg. Strip out the unnecessary controls and replace them by a warning image and our previously defined OSWarningText:

    <Control Id="OSWarning" Type="Text" X="100" Y="80" Width="250" Height="60"
        NoPrefix="yes" Text="[OSWarningText]" />
    
    <Control Id="WarningIcon" Type="Icon" X="20" Y="60" Width="64" Height="64"
       Text="Warning.ico" >
       <Binary Id="Warning.ico" SourceFile="..\icons\warning.ico"/>
    </Control>
    

    The idea is to create something like this:

    3. Inserting the custom warning screen in the UI sequence

    Now we need to make sure that the warning screen is displayed between the welcome dialog and the license agreement dialog, but only if there actually is a warning to show. This is a special case of the more general branching wizard sequences problem.

    Again, copy a predefined UI sequence from the wix sources, e.g. WixUI_InstallDir.wxs and rename the UI ID to Id="MyWixUI". Reference this in your main wxs file as <UIRef Id="MyWixUI" />. Now find and edit the event handlers for the WelcomeDlg next button.

    You can set properties in response to a button press and an extra condition, and you can show the next dialog based on a property. We’ll make use of that to handle the WelcomeDlg next button like this:

    1. reset the WelcomeDlg_Next property
      to “unset”
    2. set the WelcomeDlg_Next property to
      “WarningDlg” but only if
      OSWarningText is set
    3. set the WelcomeDlg_Next property to
      “LicenseAgreementDlg” but only if
      OSWarningText is NOT set.
    4. Show the dialog given by
      WelcomeDlg_Next, if the property was
      correctly set.

    The Wix code to do that looks like this:

            <Publish Dialog="WelcomeDlg" Control="Next"
                Property="WelcomeDlg_Next" Value="{}"
                Order="1">1</Publish>
            <Publish Dialog="WelcomeDlg" Control="Next"
                Property="WelcomeDlg_Next" Value="WarningDlg"
                Order="2">OSWarningText</Publish>
            <Publish Dialog="WelcomeDlg" Control="Next"
                Property="WelcomeDlg_Next" Value="LicenseAgreementDlg"
                Order="3">NOT OSWarningText</Publish>
            <Publish Dialog="WelcomeDlg" Control="Next"
                Event="NewDialog" Value="[WelcomeDlg_Next]"
                Order="4">WelcomeDlg_Next</Publish>
    

    Then do the equivalent for the License Agreement “back” button: it should go back to the welcome screen if there is no warning, or else to the warning screen.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I already created a rule that allows users to pass a variable like this:
Im attempting to get a block of text from a file I have already
Already found this page with some helpful hints. Problem is I need to debug
i start the product request already in a operation block NSOperationQueue * queue =
I'm trying to block login for x minutes after y failed attempts. I'm already
<div class=ads>Some text</div> Want to: show this block once a day per visitor (no
I have this block of code to read in the ISO 8601 Date/Time specification.
I've been following a few posts already on this topic. It seems that the
I already searched the site and found this: GameCenter Invitation Handler He says: As
First off: I know that AES is a block cipher and not a hashing

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.