<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"  xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
  <Fragment>
    <!--
      Check, if upgrade wizard was built 
      It currently requires MFC, which is not in SDK 
      neither in express edítions of VS.
    -->
    <?ifndef HaveUpgradeWizard ?>
      <?define HaveUpgradeWizard="1"?>
    <?endif?>

    <!-- If Innodb is compiled in, enable "optimize for transactions" checkbox -->
    <?ifndef HaveInnodb ?>
      <?define HaveInnodb="1"?>
    <?endif?>

    <Property Id="PortTemplate" Value="#####" />
    <?if $(var.HaveInnodb) = "1" ?>
      <Property Id="BufferPoolSizeTemplate" Value="#######" />
    <?endif?>
    <!--
      Installation parameters that can be passed via msiexec command line
      For "booleans" (like skip networking), just providing any value means property set to "yes".
    -->
    <!-- instalation directory (default under program files)-->
    <!--- (defined elsewhere) <Property Id="INSTALLDIR" Secure="yes" /> -->

    <!-- Database data directory (default under INSTALLDIR\data) -->
    <!--- (defined elsewhere) <Property Id="DATADIR" Secure="yes"/> -->

    <!-- Service name of database instanced (default MySQL in GUI, nothing with command line) -->
    <!--  (defined elsewhere) <Property Id="SERVICENAME" Secure="yes" /> -->

    <!-- Root password -->
    <Property Id="PASSWORD" Hidden="yes" Secure="yes" />
    <Property Id="ESCAPEDPASSWORD" Hidden="yes" Secure="yes" />
    <!-- Database port -->
    <Property Id="PORT" Value="3306" Secure="yes"/>
    <!-- Whether to allow remote access for root user -->
    <Property Id="ALLOWREMOTEROOTACCESS" Secure="yes" />
    <!-- Skip networking. This will switch configuration to use named pipe-->
    <Property Id="SKIPNETWORKING" Secure="yes"/>
    <!-- Whether to keep default (unauthenticated) user. Default is no-->
    <Property Id="DEFAULTUSER" Secure="yes"/>
    <!-- Set server character set to UTF8 -->
    <Property Id="UTF8" Secure="yes"/>
    <!-- Whether to data on uninstall (default yes, after asking user consent) -->
    <Property Id="CLEANUPDATA" Secure="yes" Value="1"/>
    <!-- Force per machine installation -->
    <Property Id="ALLUSERS" Secure="yes" Value="1"/>
    <!-- Disable advertised shortcuts weirdness -->
    <Property Id="DISABLEADVTSHORTCUTS" Secure="yes" Value="1"/>

    <!-- Quick configuration : set default storage engine to innodb, use strict sql_mode -->
    <Property Id="STDCONFIG" Secure="yes" Value="1"/>

    <!-- Innodb Buffer pool size in MB-->
    <Property Id="BUFFERPOOLSIZE" Secure="yes"/>
    <!-- Innodb page size -->
    <Property Id="PAGESIZE" Secure="yes" Value="16K"/>

    <CustomAction Id="LaunchUrl" BinaryKey="WixCA" DllEntry="WixShellExec"  Execute="immediate" Return="check" Impersonate="yes" />



    <!-- 
      User interface dialogs 
     -->
    <WixVariable Id='WixUIBannerBmp' Value='@SRCDIR@\WixUIBannerBmp.jpg' />
    <WixVariable Id='WixUIDialogBmp' Value='@SRCDIR@\WixUIDialogBmp.jpg' />
    <UI>

      <!-- Dialog on uninstall of the database -->
      <Dialog Id="ConfirmDataCleanupDlg" Width="370" Height="270" Title="[ProductName] Setup" NoMinimize="yes">

        <!--<Control Id="CleanupDataCheckBox" Type="CheckBox" X="20" Y="100" Height="30" Property="CLEANUPDATA" Width="300" CheckBoxValue="1"
                Text="{\Font1}Remove default database directory &#xD;&#xA;'[DATADIR]'"/>
                -->
        <Control Id="RemoveDatadirButton" Type="PushButton" X="40" Y="65" Width="80" Height="18"
                  Text="Remove data">
          <Publish Property="CLEANUPDATA" Value="1">1</Publish>
          <Publish Event="NewDialog" Value="VerifyReadyDlg">WixUI_InstallMode</Publish>
          <Publish Event="EndDialog" Value="Return">NOT WixUI_InstallMode</Publish>

        </Control>
        <Control Id="RemoveDatadirText" Type="Text" X="60" Y="85" Width="280" Height="30">
          <Text>Remove [DATADIR]. Ensures proper cleanup on uninstall.</Text>
        </Control>

        <Control Id="KeepDatadirButton" Type="PushButton" X="40" Y="128" Width="80" Height="18"
                 Text="Keep data">
          <Publish Property="CLEANUPDATA">1</Publish>
          <Publish Event="NewDialog" Value="VerifyReadyDlg">WixUI_InstallMode</Publish>
          <Publish Event="EndDialog" Value="Return">NOT WixUI_InstallMode</Publish>
        </Control>
        <Control Id="KeepDataDirText" Type="Text" X="60" Y="148" Width="280" Height="70" >
          <Text>Do not remove [DATADIR]. Choose this option if you intend to use data in the future</Text>
        </Control>


        <!-- Navigation buttons-->
        <Control Id="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Text="&amp;Back">
          <Publish Event="NewDialog" Value="CustomizeDlg">WixUI_InstallMode="Change"</Publish>
          <Condition Action="disable">NOT WixUI_InstallMode</Condition>
        </Control>
        <Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Disabled="yes" Text="&amp;Next">
          <Publish Event="NewDialog" Value="VerifyReadyDlg">WixUI_InstallMode</Publish>
          <Publish Event="EndDialog" Value="Return">NOT WixUI_InstallMode</Publish>
        </Control>
        <Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="Cancel">
          <Publish Event="SpawnDialog" Value="CancelDlg">1</Publish>
        </Control>
        <Control Id="BannerBitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="44" TabSkip="no" Text="WixUI_Bmp_Banner" />
        <Control Id="Description" Type="Text" X="25" Y="23" Width="280" Height="15" Transparent="yes" NoPrefix="yes">
          <Text>Remove default [ProductName] database</Text>
        </Control>
        <Control Id="BottomLine" Type="Line" X="0" Y="234" Width="370" Height="0" />
        <Control Id="Title" Type="Text" X="15" Y="6" Width="200" Height="15" Transparent="yes" NoPrefix="yes">
          <Text>{\WixUI_Font_Title}Default instance properties</Text>
        </Control>
        <Control Id="BannerLine" Type="Line" X="0" Y="44" Width="370" Height="0" />
      </Dialog>

      <!-- Dialog new or upgrade instance -->

      <Property Id="CreateOrUpgradeChoice" Value="Create"/>
      
      <Dialog Id="NewOrUpgradeInstanceDlg" Width="370" Height="270" Title="[ProductName] Setup" NoMinimize="yes">
        <Control Id="Text" Type="Text" X="40" Y="65" Width="270" Height="30">
          <Text>Setup found existing database instances that can be upgraded to [ProductName].You can create a new instance and/or upgrade existing one.
          </Text>
        </Control>

        <Control Id="CreateOrUpgradeButton" 
                 Type="RadioButtonGroup" X="40" Y="100" Width="300" Height="70" 
                 Property="CreateOrUpgradeChoice" Text="Specify what to do">
          <RadioButtonGroup Property="CreateOrUpgradeChoice">
            <RadioButton Value="Create" X="0" Y="0" Width="300" Height="25"
                  Text="{\Font1}Create new database instance."/>
            <RadioButton Value="Upgrade" X="0" Y="30" Width="300" Height="25"
                  Text="{\Font1}Do not create a new database. Optionally upgrade existing instances." />
          </RadioButtonGroup>
        </Control>

        <Control Id="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Text="&amp;Back">
          <Publish Event="NewDialog" Value="LicenseAgreementDlg">1</Publish>
        </Control>
        <Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Text="&amp;Next">
          <Publish Event="Remove" Value="DBInstance">CreateOrUpgradeChoice = "Upgrade" </Publish>
          <Publish Event="AddLocal" Value="DBInstance">CreateOrUpgradeChoice = "Create"</Publish>
          <Publish Property="WIXUI_EXITDIALOGOPTIONALCHECKBOX" Value="[NonExistentProperty]">CreateOrUpgradeChoice = "Create"</Publish>
          <Publish Property="WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" Value="[NonExistentProperty]">CreateOrUpgradeChoice = "Create"</Publish>
          <Publish Property="WIXUI_EXITDIALOGOPTIONALCHECKBOX" Value="1">CreateOrUpgradeChoice = "Upgrade"</Publish>
          <Publish Event="NewDialog" Value="CustomizeDlg">1</Publish>
        </Control>
        <Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="Cancel">
          <Publish Event="SpawnDialog" Value="CancelDlg">1</Publish>
        </Control>
        <Control Id="BannerBitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="44" TabSkip="no" Text="WixUI_Bmp_Banner" />
        <Control Id="Description" Type="Text" X="25" Y="23" Width="280" Height="15" Transparent="yes" NoPrefix="yes">
          <Text>Create or upgrade database instance</Text>
        </Control>
        <Control Id="BottomLine" Type="Line" X="0" Y="234" Width="370" Height="0" />
        <Control Id="Title" Type="Text" X="15" Y="6" Width="200" Height="15" Transparent="yes" NoPrefix="yes">
          <Text>{\WixUI_Font_Title}[ProductName] setup</Text>
        </Control>
        <Control Id="BannerLine" Type="Line" X="0" Y="44" Width="370" Height="0" />
      </Dialog>
      
      <!-- Error popup dialog -->
      <Dialog Id="WarningDlg" Width="320" Height="85" Title="[ProductName] Setup" NoMinimize="yes">
       <Control Id="Icon" Type="Icon" X="15" Y="15" Width="24" Height="24"
       ToolTip="Information icon" FixedSize="yes" IconSize="32" Text="WixUI_Ico_Info" />
        <Control Id="Ok" Type="PushButton" X="132" Y="57" Width="56" Height="17"
          Default="yes" Cancel="yes" Text="OK">
          <Publish Property="WarningText">1</Publish>
          <Publish Event="EndDialog" Value="Return">1</Publish>
        </Control>
        <Control Id="Text" Type="Text" X="48" Y="15" Width="260" Height="30">
          <Text>[WarningText]</Text>
        </Control>
      </Dialog>


      <Property Id="ModifyRootPassword" Value="1"/>
      <TextStyle Id="Font1" FaceName="Tahoma" Size="8" Red="0" Green="0" Blue="0" Bold="yes" />

      <!-- Root password plus default user dialog  -->
      <Dialog Id="UserSettingsDlg" X="50" Y="50" Width="370" Height="270" Title="User settings">
        <Control Id="EditRootPassword" Type="Edit" X="104" Y="82" Width="91" Height="15" Property="PASSWORD" Password="yes" TabSkip="no">
          <Text>{100}</Text>
          <Condition Action="enable">ModifyRootPassword</Condition>
          <Condition Action="disable">NOT ModifyRootPassword</Condition>
        </Control>
        <Control Id="EditRootPasswordConfirm" Type="Edit" X="104" Y="103" Width="91" Height="15" Property="RootPasswordConfirm"  Password="yes" TabSkip="no">
          <Text>{100}</Text>
          <Condition Action="enable">ModifyRootPassword</Condition>
          <Condition Action="disable">NOT ModifyRootPassword</Condition>
        </Control>

        <Control Id="CheckBoxModifyRootPassword" Type="CheckBox" X="8" Y="62" Width="222" Height="18" Property="ModifyRootPassword" CheckBoxValue="1" TabSkip="no">
          <Text>{\Font1}Modify password for database user 'root'</Text>
          <Publish Property="PASSWORD" >NOT ModifyRootPassword</Publish>
          <Publish Property="RootPasswordConfirm">NOT ModifyRootPassword</Publish>
          <Publish Property="ALLOWREMOTEROOTACCESS">NOT ModifyRootPassword</Publish>
          <Publish Property="ALLOWREMOTEROOTACCESS" Value="1">ModifyRootPassword</Publish>
        </Control>

        <Control Id="Text5" Type="Text" X="23" Y="82" Width="77" Height="14" TabSkip="yes">
          <Text>New root password:</Text>
        </Control>
        <Control Id="Text6" Type="Text" X="201" Y="85" Width="100" Height="17" TabSkip="yes">
          <Text>Enter new root password</Text>
        </Control>
        <Control Id="Text8" Type="Text" X="23" Y="105" Width="75" Height="17" TabSkip="yes">
          <Text>Confirm:</Text>
        </Control>

        <Control Id="Text10" Type="Text" X="201" Y="104" Width="100" Height="17" TabSkip="yes">
          <Text>Retype the password</Text>
        </Control>
        <Control Id="CheckBoxALLOWREMOTEROOTACCESS" Type="CheckBox" X="23" Y="122" Width="196" Height="18" Property="ALLOWREMOTEROOTACCESS"
                 CheckBoxValue="--allow-remote-root-access" TabSkip="no">
          <Text>{\Font1}Enable access from remote machines for 'root' user</Text>
          <Condition Action="enable">ModifyRootPassword</Condition>
          <Condition Action="disable">NOT ModifyRootPassword</Condition>
        </Control>

        <Control Id="CheckBoxUTF8" Type="CheckBox" X="8" Y="154" Width="250" Height="18" Property="UTF8" CheckBoxValue="1" TabSkip="no">
          <Text>{\Font1}Use UTF8 as default server's character set</Text>
        </Control>
        <Control Type="Text" Id="Text11" Width="67" Height="17" X="8" Y="190" Text="{\Font1}Data directory" />
        <Control Type="PathEdit" Id="TxtDir" Width="175" Height="18" X="80" Y="190" Property="DATADIR">
        </Control>
        <Control Id="btnDirBrowse" Type="PushButton" Width="56" Height="17" X="278" Y="190" Text="Browse...">
         <Publish Property="_BrowseProperty" Value="DATADIR" Order="1">1</Publish>
         <Publish Event="SpawnDialog" Value="BrowseDlg" Order="2">1</Publish>
        </Control>
        <!-- Navigation buttons-->
        <Control Id="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Text="&amp;Back">
          <Publish Event="NewDialog" Value="CustomizeDlg">1</Publish>
        </Control>
        <Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="&amp;Next">
          <Publish Event="DoAction" Value="CheckDataDirectory">1</Publish>
          <Publish Property="WarningText" Value="Invalid data directory, choose a different one. Error: [DATADIRERROR]">
            DATADIRERROR
          </Publish>
          <Publish Property="WarningText" Value="Passwords do not match."><![CDATA[PASSWORD <> RootPasswordConfirm]]></Publish>
          <Publish Event="SpawnDialog" Value="WarningDlg"><![CDATA[WarningText <>""]]></Publish>
          <Publish Property="SERVICENAME" Value="MariaDB">NOT SERVICENAME AND NOT WarningText</Publish>
          <Publish Event="NewDialog" Value="ServicePortDlg"><![CDATA[WarningText=""]]></Publish>
          <Condition Action="enable"><![CDATA[NOT ModifyRootPassword OR PASSWORD]]> </Condition>
          <Condition Action="disable"><![CDATA[ModifyRootPassword AND (NOT PASSWORD)]]> </Condition>
        </Control>
        <Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="Cancel">
          <Publish Event="SpawnDialog" Value="CancelDlg">1</Publish>
        </Control>
        <Control Id="BannerBitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="44" TabSkip="no" Text="WixUI_Bmp_Banner" />
        <Control Id="Description" Type="Text" X="25" Y="23" Width="280" Height="15" Transparent="yes" NoPrefix="yes">
          <Text> [ProductName] database configuration</Text>
        </Control>
        <Control Id="BottomLine" Type="Line" X="0" Y="234" Width="370" Height="0" />
        <Control Id="Title" Type="Text" X="15" Y="6" Width="200" Height="15" Transparent="yes" NoPrefix="yes">
          <Text>{\WixUI_Font_Title}Default instance properties</Text>
        </Control>
        <Control Id="BannerLine" Type="Line" X="0" Y="44" Width="370" Height="0" />
      </Dialog>

      <Property Id="InstallService" Value="1"/>
      <Property Id="EnableNetworking" Value="1"/>

      <!-- Service and port configuration -->
      <Dialog Id="ServicePortDlg" Width="370" Height="270" Title="Database settings">
        <Control Id="InstallAsService" Type="CheckBox" X="9" Y="61" Width="222" Height="19" Property="InstallService" CheckBoxValue="1" TabSkip="no">
          <Text>{\Font1}Install as service</Text>
        </Control>
        <Control Id="EditServiceName" Type="Edit" X="104" Y="82" Width="91" Height="15" Property="SERVICENAME" TabSkip="no">
          <Text>{20}</Text>
          <Condition Action="enable">InstallService</Condition>
          <Condition Action="disable">Not InstallService</Condition>
        </Control>
        <Control Id="Text5" Type="Text" X="25" Y="82" Width="77" Height="14" TabSkip="yes">
          <Text>Service Name:</Text>
        </Control>
        <Control Id="CheckBoxEnableNetworking" Type="CheckBox" Height="18" Width="102" X="9" Y="117" Property="EnableNetworking" CheckBoxValue="1">
          <Text>{\Font1}Enable networking</Text>
          <!--<Publish Property="PORT">NOT EnableNetworking</Publish>-->
          <Publish Property="SKIPNETWORKING" Value="--skip-networking">NOT EnableNetworking</Publish>
          <Publish Property="SKIPNETWORKING">EnableNetworking</Publish>
        </Control>
        <Control Id="LabelTCPPort" Type="Text" Height="17" Width="75" X="25" Y="142" Text="TCP port:" />
        <Control Id="Port" Type="MaskedEdit" X="104" Y="140" Width="28" Height="15" Property="PORT"  Sunken="yes" Text="[PortTemplate]">
          <Condition Action="enable" >EnableNetworking</Condition>
          <Condition Action="disable">Not EnableNetworking</Condition>
        </Control>

        <Control Id="LabelInnodbSettings" Type="Text" Height="18" Width="220" X="25" Y="171" >
          <Text>{\Font1}Innodb engine settings</Text>
        </Control>
        <Control Id="LabelInnodbBufferpool" Type="Text" Height="17" Width="77" X="25" Y="190" Text="Buffer pool size:" />
        <Control Id="BPSize" Type="MaskedEdit" X="104" Y="188" Width="40" Height="15" Property="BUFFERPOOLSIZE"  Sunken="yes" Text="[BufferPoolSizeTemplate]"/>
        <Control Id="LabelMB" Type="Text" Height="17" Width="15" X="150" Y="190" Text="MB" />
        <Control Id="LabelInnodbPageSize" Type="Text" Height="17" Width="77" X="25" Y="208" Text="Page size:" />
        <Control Id="LabelKB" Type="Text" Height="17" Width="15" X="150" Y="210" Text="KB" />
        <Control Id="ComboBoxInnodbPageSize" Type="ComboBox" X="104" Y="208" Width="30" Height="17" ComboList="yes" Sorted="yes" Property="PAGESIZE" >
        <ComboBox Property="PAGESIZE">
          <ListItem Text=" 4" Value="4K"/>
          <ListItem Text=" 8" Value="8K"/>
          <ListItem Text="16" Value="16K"/>
          <ListItem Text="32" Value="32K"/>
          <ListItem Text="64" Value="64K"/>
        </ComboBox>
        </Control>

        <!-- Navigation buttons-->
        <Control Id="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Text="&amp;Back">
          <Publish Event="NewDialog" Value="UserSettingsDlg">1</Publish>
        </Control>
        <Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="no" Text="&amp;Next">
          <Publish Property="SERVICENAME">NOT InstallService</Publish>
          <Publish Property="WarningText" Value="Please enter valid port or uncheck 'Enable Networking' checkbox">
            <![CDATA[EnableNetworking AND NOT PORT AND NOT WarningText]]>
          </Publish>
          <Publish Property="WarningText" Value="Please enter valid service name port or uncheck 'Install Service' checkbox">
            <![CDATA[InstallService AND NOT SERVICENAME AND NOT WarningText]]>
          </Publish>
          <Publish Event="DoAction" Value="CheckDatabaseProperties">NOT WarningText</Publish>
          <Publish Event="SpawnDialog" Value="WarningDlg">WarningText</Publish>
          <Publish Event="NewDialog" Value="VerifyReadyDlg">Not WarningText</Publish>
        </Control>
        <Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="no" Text="Cancel">
          <Publish Event="SpawnDialog" Value="CancelDlg">1</Publish>
        </Control>
        <Control Id="BannerBitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="44" TabSkip="no" Text="WixUI_Bmp_Banner" />
        <Control Id="Description" Type="Text" X="25" Y="23" Width="280" Height="15" Transparent="yes" NoPrefix="yes">
          <Text>[ProductName] database configuration</Text>
        </Control>
        <Control Id="BottomLine" Type="Line" X="0" Y="234" Width="370" Height="2" />
        <Control Id="Title" Type="Text" X="15" Y="6" Width="200" Height="15" Transparent="yes" NoPrefix="yes">
          <Text>{\WixUI_Font_Title}Default instance properties</Text>
        </Control>
        <Control Id="BannerLine" Type="Line" X="0" Y="44" Width="370" Height="2" />
      </Dialog>
    </UI>

    <Property Id="CRLF" Value="&#xD;&#xA;" />
    <CustomAction Id="CheckDataDirectory" BinaryKey="wixca.dll" DllEntry="CheckDataDirectory" Execute="immediate" Impersonate="yes"/>
	<CustomAction Id="CheckInstallDirectory" BinaryKey="wixca.dll" DllEntry="CheckInstallDirectory" Execute="immediate" Impersonate="yes"/>
    <!--  What to do when navigation buttons are clicked -->
    <UI Id="MyWixUI_Mondo">
      <UIRef Id="WixUI_FeatureTree" />
      <UIRef Id="WixUI_ErrorProgressText" />
      <Publish Dialog="WelcomeDlg"  Control="Next" Event="NewDialog" Value="VerifyReadyDlg" Order="999">
        OLDERVERSIONBEINGUPGRADED
      </Publish>
      <Publish Dialog="LicenseAgreementDlg"  Control="Next" Event="NewDialog" Value="NewOrUpgradeInstanceDlg" Order="999">
        NOT Installed AND UpgradableServiceFound
      </Publish>

      <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="ServicePortDlg" Order="3" ><![CDATA[&DBInstance=3 AND NOT !DBInstance=3]]></Publish>
      <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg" Order="3"> <![CDATA[OLDERVERSIONBEINGUPGRADED <>""]]></Publish>
      <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="ConfirmDataCleanupDlg" Order="1" ><![CDATA[(&DBInstance=2) AND (!DBInstance=3)]]></Publish>


      <Publish Dialog="CustomizeDlg" Control="Back" Event="NewDialog" Value="NewOrUpgradeInstanceDlg" Order="999">
        NOT Installed AND UpgradableServiceFound
      </Publish>
	  <Publish Dialog="CustomizeDlg" Control="Next" Event="DoAction" Value="CheckInstallDirectory" Order="1">NOT Installed</Publish>
      <Publish  Dialog="CustomizeDlg" Control="Next"  Property="WarningText" Order="2"
        Value="[INSTALLDIRERROR]">
       INSTALLDIRERROR
	   </Publish>
      <Publish Dialog="CustomizeDlg" Control="Next" Event="SpawnDialog" Value="WarningDlg" Order="3">WarningText</Publish>
      <Publish Dialog="CustomizeDlg" Control="Next" Event="NewDialog" Value="ConfirmDataCleanupDlg" Order="4">
        <![CDATA[(&DBInstance=2) AND (!DBInstance=3)]]>
      </Publish>
      <Publish Dialog="CustomizeDlg" Control="Next" Event="NewDialog" Value="UserSettingsDlg" Order="5">
        <![CDATA[&DBInstance=3 AND NOT !DBInstance=3 AND NOT WarningText]]>
      </Publish>

      <Publish Dialog="ConfirmDataCleanupDlg" Control="Back" Event="NewDialog" Value="CustomizeDlg">WixUI_InstallMode = "Change"</Publish>
      <Publish Dialog="MaintenanceTypeDlg" Control="RemoveButton" Event="NewDialog" Value="ConfirmDataCleanupDlg" Order="999">
        !DBInstance=3 AND (CLEANUPDATA Or USECONFIRMDATACLEANUPDLG)
      </Publish>
      <Publish Dialog="MaintenanceTypeDlg" Control="RemoveButton" Property="USECONFIRMDATACLEANUPDLG" Value="1" Order="999">
        !DBInstance=3 AND CLEANUPDATA
      </Publish>
      <Publish Dialog="ConfirmDataCleanupDlg" Control="Back" Event="NewDialog" Value="MaintenanceTypeDlg">WixUI_InstallMode = "Remove"</Publish>
    </UI>

    <!-- End of UI section -->

    <!-- Extra folders we need (DATADIR and shortcut folder) -->
    <DirectoryRef Id='INSTALLDIR'>
      <Directory Id="DATADIR" Name="data">
      </Directory>
      <Directory Id="ProgramMenuFolder">
        <Directory Id="ShortcutFolder" Name="@CPACK_WIX_PACKAGE_NAME@">
        </Directory>
      </Directory>
    </DirectoryRef>


    <!-- Extra feature (database instance). This could be split to several subfeatures if desired (e.g firewall exception)-->
    <Feature Id='DBInstance'
         Title='Database instance'
         Description=
             'Install database instance. Only new database can be installed with this feature.'
         ConfigurableDirectory='DATADIR'
         AllowAdvertise='no'
         Level='1'>

      <!-- Data directory with some reasonable security settings -->
      <Component Id="C.datadir" Guid="*" Directory="DATADIR">
        <RegistryValue Root='HKLM'
           Key='SOFTWARE\@CPACK_WIX_PACKAGE_NAME@'
           Name='DATADIR' Value='[DATADIR]' Type='string' KeyPath='yes'/>
      </Component>

      <Component Id="C.datadir.permissions" Directory="DATADIR">
         <Condition>
          <!--
             Skip setting permissions for LogonUser, if package is installed by
             service user (e.g LocalSystem)
          -->
          <![CDATA[ (UserSID <> "S-1-5-18") AND (UserSID <> "S-1-5-19") AND (UserSID <> "S-1-5-20") ]]>
         </Condition>
         <RegistryValue Root='HKLM'
           Key='SOFTWARE\@CPACK_WIX_PACKAGE_NAME@'
           Name='InstalledBy' Value='[USER_DOMAIN]\[LogonUser]' Type='string' KeyPath='yes'/>
        <CreateFolder>
          <util:PermissionEx User="[LogonUser]" Domain="[USER_DOMAIN]" GenericAll="yes" />
        </CreateFolder>
      </Component>

      <!-- Database service conditioned on SERVICENAME property-->
      <Component Id="C.service" Guid="*" Directory="DATADIR">
        <Condition>SERVICENAME</Condition>
        <RegistryValue Root='HKLM'
           Key='SOFTWARE\@CPACK_WIX_PACKAGE_NAME@'
           Name='SERVICENAME' Value='[SERVICENAME]' Type='string' KeyPath='yes'/>
        <ServiceControl Id='DBInstanceServiceStop' Name='[SERVICENAME]'  Stop='both' Remove='uninstall' Wait='yes'/>
        <ServiceControl Id='DBInstanceServiceStart' Name='[SERVICENAME]' Start='install' Wait='yes'/>
      </Component>

      <Component Id="C.myiniconfig" Guid="*" Directory="DATADIR">
        <RegistryValue Root='HKLM'
           Key='SOFTWARE\@CPACK_WIX_PACKAGE_NAME@'
           Name='STDCONFIG' Value='1' Type='string' KeyPath='yes'/>
        <IniFile Id="Ini3"
            Action="createLine"
            Directory="DATADIR"
            Section="mysqld"
            Name="my.ini"
            Key="innodb_buffer_pool_size"
            Value="[BUFFERPOOLSIZE]M" />
      </Component>

      <Component Id="C.utf8" Guid="*" Directory="DATADIR">
        <Condition>UTF8</Condition>
        <RegistryValue Root='HKLM'
           Key='SOFTWARE\@CPACK_WIX_PACKAGE_NAME@'
           Name='UTF8' Value='1' Type='string' KeyPath='yes'/>
        <IniFile Id="Ini6"
            Action="createLine"
            Directory="DATADIR"
            Section="mysqld"
            Name="my.ini"
            Key="character-set-server"
            Value="utf8mb4" />
      </Component>

      <!-- Shortcuts in program menu (mysql client etc) -->
      <Component Id="c.shortcuts" Guid="*" Directory="ShortcutFolder">
        <!-- shortcut to my.ini-->
        <RegistryValue  Root="HKCU" Key="Software\@CPACK_WIX_PACKAGE_NAME@\Uninstall" Name="shortcuts" Value="1" Type="string" KeyPath="yes"  />
        <RemoveFolder Id="RemoveShorcutFolder" On="uninstall" />
        <Shortcut Id="shortcut.my.ini"
          Name="my.ini (@CPACK_WIX_PACKAGE_NAME@)"
          Target="[System64Folder]notepad.exe"
          Arguments="&quot;[DATADIR]my.ini&quot;"
          Directory="ShortcutFolder"
          Description="Edit database configuration" />
        <Shortcut Id="shortcut.errorlog"
          Name="Error log (@CPACK_WIX_PACKAGE_NAME@)"
          Target="[System64Folder]notepad.exe"
          Arguments="&quot;[DATADIR][ComputerName].err&quot;"
          Directory="ShortcutFolder"
          Description="View Database Error log" />
        <Shortcut Id="shortcut.dbfolder" Name="Database directory (@CPACK_WIX_PACKAGE_NAME@)"
          Target="[DATADIR]" />
      </Component>

      <!-- add reference so mysql client won't get uninstalled and we have a shortcut pointing to nowhere-->
      <ComponentRef Id="C.bin.mysql.exe"/>

      <Component Id="c.shortcuts.commandline" Guid="*" Directory="ShortcutFolder">
        <RegistryValue
          Root="HKCU" Key="Software\@CPACK_WIX_PACKAGE_NAME@\Uninstall"
          Name="shortcuts.commandline"
          Value="1" Type="string" KeyPath="yes" />
        <!-- shortcut to client-->
        <Shortcut Id="shortcut.mysql.exe"
          Name="MySQL Client (@CPACK_WIX_PACKAGE_NAME@)"
          Target="[System64Folder]cmd.exe"
          Arguments="/k &quot; &quot;[D.bin]mysql.exe&quot; &quot;--defaults-file=[DATADIR]my.ini&quot; -uroot -p&quot;"
          Directory="ShortcutFolder"
          WorkingDirectory="D.bin"
          Description="Starts mysql.exe for root user"  />
      </Component>
      <Component Id="c.shortcuts.commandprompt.db"  Guid="*"  Directory="ShortcutFolder" Transitive="yes">
        <Condition>SERVICENAME</Condition>
        <RegistryValue
        Root="HKCU" Key="Software\@CPACK_WIX_PACKAGE_NAME@\Uninstall"
        Name="shortcuts.commandprompt.db"
        Value="1" Type="string" KeyPath="yes" />
        <!-- just command prompt in the bin directory (so all utilities can be called) -->
        <Shortcut Id="shortcut.commandprompt.exe.db"
          Name="Command Prompt (@CPACK_WIX_PACKAGE_NAME@)"
          Target="[System64Folder]cmd.exe"
          Directory="ShortcutFolder"
          Arguments="/k  &quot;set MYSQL_HOME=[DATADIR]&amp;&amp; set PATH=[D.bin];%PATH%;&amp;&amp;echo Setting environment for [ProductName] &quot;"
          Description="Opens command line in the installation bin directory" />
      </Component>


    </Feature>

    <Feature Id="SharedClientServerComponents"
      Title='Utilities used by both server and client.'
      Description=
      'Client utilities that are also used with server.Required for upgrade.'
      ConfigurableDirectory='INSTALLDIR'
      AllowAdvertise='no'
      Level='1'
      Display='hidden'>

      <Component Id="C_Permissions.bin" Guid="2ce05496-3273-4866-a5b5-1eff2837b4cb" Directory="D.bin">
        <!-- in case service is installed now on it the future -->
        <CreateFolder>
          <util:PermissionEx User="ALL SERVICES" Domain="NT SERVICE" GenericRead="yes"  GenericExecute="yes" />
        </CreateFolder>
        <Condition>SERVICENAME</Condition>
      </Component>

      <Component Id="C_Permissions.lib.plugin" Guid="ff2e8f47-83fd-4dee-9e22-f103600cfc80" Directory="D.lib.plugin">
        <CreateFolder>
          <util:PermissionEx User="ALL SERVICES" Domain="NT SERVICE" GenericRead="yes" GenericExecute="yes" />
        </CreateFolder>
        <Condition>SERVICENAME</Condition>
      </Component>

      <Component Id="C_Permissions.share" Guid="be8ee2fb-a837-4b31-b59a-68a506d97d81" Directory="D.share">
        <CreateFolder>
          <util:PermissionEx User="ALL SERVICES" Domain="NT SERVICE" GenericRead="yes" GenericExecute="yes" />
        </CreateFolder>
        <Condition>SERVICENAME</Condition>
      </Component>

      <ComponentRef Id='C.bin.mysql.exe'/>
      <ComponentRef Id='C.bin.mysqladmin.exe'/>
      <ComponentRef Id='C.bin.mysql_upgrade.exe'/>
      <ComponentRef Id='C.bin.mysqlcheck.exe'/>
      <Component Id="c.shortcuts.commandprompt.nodb"  Guid="*"  Directory="ShortcutFolder" Transitive="yes">
        <Condition>NOT SERVICENAME</Condition>
        <RegistryValue
          Root="HKCU" Key="Software\@CPACK_WIX_PACKAGE_NAME@\Uninstall"
          Name="shortcuts.commandprompt.nodb"
          Value="1" Type="string" KeyPath="yes" />
        <!-- just command prompt in the bin directory (so all utilities can be called) -->
        <Shortcut Id="shortcut.commandprompt.exe.nodb"
          Name="Command Prompt (@CPACK_WIX_PACKAGE_NAME@)"
          Target="[System64Folder]cmd.exe"
          Directory="ShortcutFolder"
          Arguments="/k  &quot;set PATH=[D.bin];%PATH%;&amp;&amp;echo Setting environment for [ProductName] &quot;"
          Description="Opens command line in the installation bin directory" />
      </Component>
     <?if $(var.HaveUpgradeWizard) != "0" ?>
     <ComponentRef Id='C.bin.mysql_upgrade_wizard.exe'/>
     <?endif?>
    </Feature>

    <!-- Optional 3rd party tools -->
    <DirectoryRef Id='TARGETDIR'>
     <Directory Id='CommonFilesFolder'>
       <Directory Id='MariaDBShared' Name='MariaDBShared'/>
     </Directory>
     <Directory Id='DesktopFolder'/>
     </DirectoryRef>


    <?if "@WITH_THIRD_PARTY@" != "" ?>

    <!-- Include definition of 3party components -->
    <?foreach tool in @WITH_THIRD_PARTY@ ?>
     <?include "${CMAKE_CURRENT_BINARY_DIR}\$(var.tool).wxi" ?>
    <?endforeach ?>

    <Feature Id="ThirdPartyTools"
      Title='Third party tools'
      Description= 'Third party tools'
      AllowAdvertise='no'
      Level='1'
      Display='expand'>
    @THIRD_PARTY_FEATURE_CONDITION@
    <!-- Include definition of 3rd party features -->
    <?foreach tool in @WITH_THIRD_PARTY@ ?>
     <?include "${CMAKE_CURRENT_BINARY_DIR}\$(var.tool)_feature.wxi" ?>
    <?endforeach ?>

   </Feature>
   
   <?endif ?>


    <!-- Custom action, call mysql_install_db -->
    <SetProperty Sequence='execute' Before='CreateDatabaseCommand' Id="SKIPNETWORKING" Value="--skip-networking" >SKIPNETWORKING</SetProperty>
    <SetProperty Sequence='execute' Before='CreateDatabaseCommand' Id="ALLOWREMOTEROOTACCESS" Value="--allow-remote-root-access">ALLOWREMOTEROOTACCESS</SetProperty>
    <SetProperty Sequence='execute' Before='CreateDatabaseCommand' Id="DEFAULTUSER" Value="--default-user">DEFAULTUSER</SetProperty>
    <CustomAction Id='CheckDatabaseProperties' BinaryKey='wixca.dll' DllEntry='CheckDatabaseProperties' />
    <CustomAction Id='PresetDatabaseProperties' BinaryKey='wixca.dll' DllEntry='PresetDatabaseProperties' />
    <CustomAction Id="CreateDatabaseCommand" Property="CreateDatabase"
    Value=
    "&quot;[#F.bin.mysql_install_db.exe]&quot;  &quot;--service=[SERVICENAME]&quot; --port=[PORT] --innodb-page-size=[PAGESIZE] &quot;--password=[ESCAPEDPASSWORD]&quot; &quot;--datadir=[DATADIR]\&quot; [SKIPNETWORKING] [ALLOWREMOTEROOTACCESS] [DEFAULTUSER] --verbose-bootstrap"
     Execute="immediate"
     HideTarget="yes"
     />
    <CustomAction Id="CreateDatabaseRollbackCommand" Property="CreateDatabaseRollback"
        Value="[SERVICENAME]\[DATADIR]"
        Execute="immediate"/>
    <CustomAction Id="CreateDatabase" BinaryKey="WixCA" DllEntry="@CA_QUIET_EXEC@"
            Execute="deferred" Return="check" Impersonate="no" />
    <CustomAction Id="CreateDatabaseRollback" BinaryKey="wixca.dll" DllEntry="CreateDatabaseRollback"
        Execute="rollback" Return="check" Impersonate="no"/>
    <UI>
      <ProgressText Action="CreateDatabase">Running mariadb-install-db.exe</ProgressText>
    </UI>

    <!-- Error injection script activated by TEST_FAIL=1 passed to msiexec (to see how good custom action rollback works)  -->
    <Property Id="FailureProgram">
      <![CDATA[
         Function Main()
         Main = 3
         End Function
         ]]>
    </Property>
    <CustomAction Id="FakeFailure"
     VBScriptCall="Main"
     Property="FailureProgram"
     Execute="deferred" />

    <CustomAction Id='ErrorDataDir'
                  Error='Invalid data directory, choose a different one. Error : [DATADIRERROR]'/>
    <CustomAction Id="ErrorInstallDir"
                  Error="[INSTALLDIRERROR]" />
    <InstallExecuteSequence>
      <Custom Action="CheckDataDirectory" After="CostFinalize">
        <![CDATA[&DBInstance=3 AND NOT !DBInstance=3 AND OLDERVERSIONBEINGUPGRADED=""]]>
      </Custom>
     <Custom Action="ErrorDataDir" After="CheckDataDirectory">DATADIRERROR</Custom>
     <Custom Action="CheckInstallDirectory" After="CostFinalize">
        NOT Installed AND OLDERVERSIONBEINGUPGRADED=""
      </Custom>
      <Custom Action="ErrorInstallDir" After="CheckInstallDirectory">INSTALLDIRERROR</Custom>
      <Custom Action="CheckDatabaseProperties" Before="CreateDatabaseCommand">SERVICENAME</Custom>
      <Custom Action="CreateDatabaseCommand" After="CostFinalize" >
        <![CDATA[&DBInstance=3 AND NOT !DBInstance=3 AND OLDERVERSIONBEINGUPGRADED=""]]>
      </Custom>
      <Custom Action="CreateDatabase" After="InstallFiles">
        <![CDATA[&DBInstance=3 AND NOT !DBInstance=3 AND OLDERVERSIONBEINGUPGRADED=""]]>
      </Custom>
      <Custom Action="CreateDatabaseRollbackCommand" After="CostFinalize">
        <![CDATA[&DBInstance=3 AND NOT !DBInstance=3 AND OLDERVERSIONBEINGUPGRADED=""]]>
      </Custom>
      <Custom Action="CreateDatabaseRollback" Before="CreateDatabase">
        <![CDATA[&DBInstance=3 AND NOT !DBInstance=3 AND OLDERVERSIONBEINGUPGRADED=""]]>
      </Custom>
      <Custom Action='FakeFailure' Before='InstallFinalize'>
        <![CDATA[&DBInstance=3 AND NOT !DBInstance=3 AND OLDERVERSIONBEINGUPGRADED="" AND TESTFAIL]]>
      </Custom>
    </InstallExecuteSequence>


    <!-- Custom action to remove data on uninstall  -->
    <Binary Id='wixca.dll' SourceFile='@WIXCA_LOCATION@' />
    <CustomAction Id="RemoveDataDirectory.SetProperty" Return="check" 
                  Property="RemoveDataDirectory" Value="[DATADIR]" />
    <CustomAction Id="RemoveDataDirectory"  BinaryKey="wixca.dll"
                  DllEntry="RemoveDataDirectory"
                  Execute="deferred"
                  Impersonate="no"
                  Return="ignore"   />
    <InstallExecuteSequence>
      <Custom Action="RemoveDataDirectory.SetProperty" After="CreateDatabaseCommand" >
        <![CDATA[($C.datadir=2) AND (CLEANUPDATA) AND NOT UPGRADINGPRODUCTCODE]]>
      </Custom>
      <Custom Action="RemoveDataDirectory" Before="RemoveFiles">
        <![CDATA[($C.datadir=2) AND (CLEANUPDATA) AND NOT UPGRADINGPRODUCTCODE]]>
      </Custom>
    </InstallExecuteSequence>

    <InstallExecuteSequence>
      <StopServices>SERVICENAME</StopServices>
      <DeleteServices>SERVICENAME</DeleteServices>
    </InstallExecuteSequence>
    <CustomAction Id="CheckDBInUse" Return="ignore" 
                  BinaryKey="wixca.dll" DllEntry="CheckDBInUse"  Execute="firstSequence"/>
    <InstallExecuteSequence>
      <Custom Action="CheckDBInUse" Before="LaunchConditions">Installed</Custom>
      <Custom Action="PresetDatabaseProperties" After="CheckDBInUse"></Custom>
    </InstallExecuteSequence>
    <InstallUISequence>
      <Custom Action="CheckDBInUse" Before="LaunchConditions">Installed</Custom>
      <Custom Action="PresetDatabaseProperties" After="CheckDBInUse"></Custom>
    </InstallUISequence>

    <!-- Store some properties persistently in registry, mainly for upgrades -->

    <Feature Id='StoreInstallLocation' Level='1' Absent='disallow' Display='hidden'>
      <Component Directory='INSTALLDIR' Guid='*' Id='C.storeinstalllocation'>
        <RegistryValue Root='HKLM' Key='SOFTWARE\@CPACK_WIX_PACKAGE_NAME@' 
                       Name='INSTALLDIR' Value='[INSTALLDIR]' Type='string'  KeyPath='yes'/>
      </Component>
    </Feature>

    <?foreach STOREDVAR in SERVICENAME;DATADIR;INSTALLDIR?>

    <Property Id='$(var.STOREDVAR)' Secure='yes'>
      <RegistrySearch Id='$(var.STOREDVAR)Property' Root='HKLM'
                      Key='SOFTWARE\@CPACK_WIX_PACKAGE_NAME@'
                      Name='$(var.STOREDVAR)' Type='raw' />
    </Property>
    <CustomAction Id='SaveCmdLineValue_$(var.STOREDVAR)' Property='CMDLINE_$(var.STOREDVAR)'
              Value='[$(var.STOREDVAR)]' Execute='firstSequence' />
    <CustomAction Id='SetFromCmdLineValue_$(var.STOREDVAR)' Property='$(var.STOREDVAR)' 
                  Value='[CMDLINE_$(var.STOREDVAR)]' Execute='firstSequence' />
    <InstallUISequence>
      <Custom Action='SaveCmdLineValue_$(var.STOREDVAR)' Before='AppSearch' />
      <Custom Action='SetFromCmdLineValue_$(var.STOREDVAR)' After='AppSearch'>CMDLINE_$(var.STOREDVAR)</Custom>
    </InstallUISequence>
    <InstallExecuteSequence>
      <Custom Action='SaveCmdLineValue_$(var.STOREDVAR)' Before='AppSearch' />
      <Custom Action='SetFromCmdLineValue_$(var.STOREDVAR)' After='AppSearch'>CMDLINE_$(var.STOREDVAR)</Custom>
    </InstallExecuteSequence>

    <?endforeach?>

    <!-- 
      Optionally, start upgrade wizard on exit.
    -->
    

    
    <?if $(var.HaveUpgradeWizard) != "0" ?>
    <UI>
      <Publish Dialog="ExitDialog"
          Control="Finish"
          Event="DoAction"
          Value="LaunchApplication">WIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 and NOT Installed</Publish>
    </UI>
    <Property 
      Id="WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" 
      Value="Launch wizard to upgrade existing MariaDB or MySQL services." />
    <Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOX" Value="0"/>
    <Property Id="WixShellExecTarget" Value="[#F.bin.mysql_upgrade_wizard.exe]" />
    <CustomAction Id="LaunchApplication"
        BinaryKey="WixCA"
        DllEntry="WixShellExec"
        Impersonate="yes" />
    <CustomAction 
      Id="CheckServiceUpgrades"   Return="ignore" BinaryKey="wixca.dll" 
      DllEntry="CheckServiceUpgrades"
      Execute="immediate" />
    <InstallUISequence>
      <Custom Action="CheckServiceUpgrades" After="CostFinalize">
        $C.bin.mysql_upgrade_wizard.exe = 3 AND NOT Installed AND NOT OLDERVERSIONBEINGUPGRADED
      </Custom>
    </InstallUISequence>
    <SetProperty Before="ExecuteAction" Id="WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" 
       Sequence="ui"  Value="[NonExistentProperty]">
      <![CDATA[($C.bin.mysql_upgrade_wizard.exe <> 3) AND NOT Installed OR OLDERVERSIONBEINGUPGRADED]]>
    </SetProperty>
    <SetProperty Before="ExecuteAction" Id="WIXUI_EXITDIALOGOPTIONALCHECKBOX" 
       Sequence="ui"  Value="[NonExistentProperty]">
      <![CDATA[($C.bin.mysql_upgrade_wizard.exe <> 3) AND NOT Installed OR OLDERVERSIONBEINGUPGRADED]]>
    </SetProperty>
    
    <?endif ?> <!-- HaveUpgradeWizard -->

    <!-- 
      Author the registry entries for "add or remove programs" 
      We choose to define ARPSYSTEMCOMPONENT to 1 because we want to show 
      "do you want to remove data directory" on uninstall
    -->
    <Property Id="ARPSYSTEMCOMPONENT" Value="1" Secure="yes" />
    <Property Id="ARPINSTALLLOCATION" Secure="yes"/>
    <SetProperty Id="ARPINSTALLLOCATION" Value="[INSTALLDIR]" After="InstallValidate"  Sequence="execute"/>
    <SetProperty Id="USER_DOMAIN" Value="[%USERDOMAIN]" After="LaunchConditions" Sequence="first" />
    <Feature Id='ARPRegistryEntries'
          Title='Add or remove program entries'
          Description='Add or remove program entries'
          AllowAdvertise='no'
          Absent='disallow'  Display='hidden'
          Level='1'>
      <Component Id="C.arp_entries" Guid="*" Directory="INSTALLDIR">
        <RemoveFolder Id="RemoveINSTALLDIR" On="uninstall"/>
        <RegistryValue Root='HKLM'
           Key='Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_WIX_PACKAGE_NAME@'
           Name='DisplayName' Value='[ProductName]' Type='string' KeyPath='yes'/>
        <RegistryValue Root='HKLM'
          Key='Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_WIX_PACKAGE_NAME@'
          Name='Publisher' Value='@MANUFACTURER@' Type='string'/>
        <RegistryValue Root='HKLM'
          Key='Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_WIX_PACKAGE_NAME@'
          Name='DisplayVersion' Value='[ProductVersion]' Type='string'/>
        <RegistryValue Root='HKLM'
          Key='Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_WIX_PACKAGE_NAME@'
          Name='InstallLocation' Value='[INSTALLDIR]' Type='string'/>
        <RegistryValue Root='HKLM'
          Key='Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_WIX_PACKAGE_NAME@'
          Name='UninstallString' Value='msiexec.exe /I [ProductCode]' Type='string'/>
        <RegistryValue Root='HKLM'
          Key='Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_WIX_PACKAGE_NAME@'
          Name='MajorVersion' Value='@MAJOR_VERSION@' Type='string'/>
        <RegistryValue Root='HKLM'
          Key='Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_WIX_PACKAGE_NAME@'
          Name='MinorVersion' Value='@MINOR_VERSION@' Type='string'/>
      </Component>
    </Feature>
    <Condition Message=
       'Setting the ALLUSERS property is not allowed because [ProductName] is a per-machine application. Setup will now exit.'>
      <![CDATA[ALLUSERS = "1"]]>
    </Condition>
	<Condition Message='This application is only supported on Windows 10, Windows Server 2016, or higher.'>
      <![CDATA[Installed OR (VersionNT >= 603)]]>
    </Condition>
  </Fragment>
</Wix>
