Wix: How to warn the user instead of completing the installation using properties?

I am looking for registry keys for the Microsoft Access Database Engine on an x64 machine. Here is my code:

<Property Id="MS_ADE_X64"> <RegistrySearch Id="MSADEX64_DIR" Root="HKLM" Key="SOFTWARE\Microsoft\Office\14.0\Access Connectivity Engine\InstallRoot" Name="Path" Type="directory" Win64="yes" > <DirectorySearch Id="MSADE_DIR" Path="[MSADEX64_DIR]" > <FileSearch Id ="ACECORE_DLL" Name ="ACECORE.DLL" /> </DirectorySearch> </RegistrySearch> </Property> <Condition Message="This application requires Microsoft Access Database Engine (X64). Please install the Microsoft Access Database Engine (X64) then run this installer again."> <![CDATA[Installed OR MS_ADE_X64]]> </Condition> 

Now here the user receives a message, and the installation completes.

Question:. How can I prevent the installation from completing and present a warning to the user with h while the installation continues?

Thanks and best regards.

+6
source share
2 answers

The best way to do this is to create your own warning dialog box. I like to use WixEdit to customize an existing dialog.

 <?xml version="1.0" encoding="UTF-8"?> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <Fragment> <!-- QuickTime is not installed warning dialog --> <UI> <Dialog Id="QtWarningDlg" Width="284" Height="73" Title="QuickTime Note" NoMinimize="yes"> <Control Id="Text" Type="Text" X="38" Y="8" Width="240" Height="40" TabSkip="no"> <Text>QuickTime version 7.5.5 or higher is required for some components to function correctly. You may proceed with installation, but be sure to install QuickTime if you will be using any of those components.</Text> </Control> <Control Id="OK" Type="PushButton" X="114" Y="52" Width="56" Height="17" Default="yes" Cancel="yes" Text="OK"> <Publish Event="EndDialog" Value="Return">1</Publish> </Control> </Dialog> </UI> </Fragment> </Wix> 

Then we plan it based on the condition

 <InstallUISequence> <Custom Action="GetQuickTimeVersion" Before="QtWarningDlg"/> <!-- Warn if QuickTime is not installed --> <Show Dialog="QtWarningDlg" After="AppSearch"> <![CDATA[NOT Installed AND ((QUICKTIME_VERSION = "") OR (QUICKTIME_VERSION < "#123043840"))]]> </Show> </InstallUISequence> 
+7
source

I also tried, but it did not work for Java Runtime.

Assigning a registry search result to a property.

 <Property Id="JAVACURRENTVERSION"> <RegistrySearch Id="JRE_KEY" Root="HKLM" Key="SOFTWARE\JavaSoft\Java Runtime Environment" Name="CurrentVersion" Type="raw" /> </Property> 

And then, using this property to conditionally show a warning,

 <UI> <Dialog Id="JavaWarningDlg" Width="284" Height="73" Title="Java Runtime" NoMinimize="yes"> <Control Id="Text" Type="Text" X="38" Y="8" Width="240" Height="40" TabSkip="no"> <Text>JRE version 1.6 or higher is required for some components to function correctly. You may proceed with installation, but be sure to install JRE if you will be using any of those components.</Text> </Control> <Control Id="OK" Type="PushButton" X="114" Y="52" Width="56" Height="17" Default="yes" Cancel="yes" Text="OK"> <Publish Event="EndDialog" Value="Return">1</Publish> </Control> </Dialog> <InstallUISequence> <!-- Warn if Java is not installed --> <Show Dialog="JavaWarningDlg" Before="ResumeDlg"> <![CDATA[NOT Installed AND JAVACURRENTVERSION < "1.6"]]> </Show> </InstallUISequence> </UI> 

This did not work in all cases, so I examined it with a detailed log and found that "PrepareDlg" was called earlier than the property assignment, so I switched the Before = " PrepareDlg " register to Before = " ResumeDlg ".

Now it works fine.

+3
source

All Articles