<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
     xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">

  <?ifdef JpIsSystemWide ?>
    <?define JpInstallScope="perMachine"?>
  <?else?>
    <?define JpInstallScope="perUser"?>
  <?endif?>

  <?define JpProductLanguage=1033 ?>
  <?define JpInstallerVersion=200 ?>
  <?define JpCompressedMsi=yes ?>

  <?ifdef JpAllowUpgrades ?>
    <?define JpUpgradeVersionOnlyDetectUpgrade="no"?>
  <?else?>
    <?define JpUpgradeVersionOnlyDetectUpgrade="yes"?>
  <?endif?>
  <?ifdef JpAllowDowngrades ?>
    <?define JpUpgradeVersionOnlyDetectDowngrade="no"?>
  <?else?>
    <?define JpUpgradeVersionOnlyDetectDowngrade="yes"?>
  <?endif?>

  <?include $(var.JpConfigDir)/overrides.wxi ?>

  <?define ImageDir="$(var.JpConfigDir)/../../../../package/windows/images"?>   

  <Product
    Id="$(var.JpProductCode)"
    Name="$(var.JpAppName)"
    Language="$(var.JpProductLanguage)"
    Version="$(var.JpAppVersion)"
    Manufacturer="$(var.JpAppVendor)"
    UpgradeCode="$(var.JpProductUpgradeCode)">

    <Package
      Description="$(var.JpAppDescription)"
      Manufacturer="$(var.JpAppVendor)"
      InstallerVersion="$(var.JpInstallerVersion)"
      Compressed="$(var.JpCompressedMsi)"
      InstallScope="$(var.JpInstallScope)" Platform="x64"
    />

    <Media Id="1" Cabinet="Data.cab" EmbedCab="yes" />

    <Upgrade Id="$(var.JpProductUpgradeCode)">
      <UpgradeVersion
        OnlyDetect="$(var.JpUpgradeVersionOnlyDetectUpgrade)"
        Property="JP_UPGRADABLE_FOUND"
        Maximum="$(var.JpAppVersion)"
        MigrateFeatures="yes"
        IncludeMaximum="$(var.JpUpgradeVersionOnlyDetectUpgrade)" />
      <UpgradeVersion
        OnlyDetect="$(var.JpUpgradeVersionOnlyDetectDowngrade)"
        Property="JP_DOWNGRADABLE_FOUND"
        Minimum="$(var.JpAppVersion)"
        MigrateFeatures="yes"
        IncludeMinimum="$(var.JpUpgradeVersionOnlyDetectDowngrade)" />
    </Upgrade>

    <?ifndef JpAllowUpgrades ?>
    <CustomAction Id="JpDisallowUpgrade" Error="!(loc.DisallowUpgradeErrorMessage)" />
    <?endif?>
    <?ifndef JpAllowDowngrades ?>
    <CustomAction Id="JpDisallowDowngrade" Error="!(loc.DowngradeErrorMessage)" />
    <?endif?>

    <!-- Standard required root -->
    <Directory Id="TARGETDIR" Name="SourceDir"/>

    <Feature Id="DefaultFeature" Title="!(loc.MainFeatureTitle)" Level="1">
      <ComponentGroupRef Id="Shortcuts"/>
      <ComponentGroupRef Id="Files"/>
      <ComponentGroupRef Id="FileAssociations"/>
    </Feature>

    <?ifdef JpInstallDirChooser ?>
    <Binary Id="JpCaDll" SourceFile="wixhelper.dll"/>
    <CustomAction Id="JpCheckInstallDir" BinaryKey="JpCaDll" DllEntry="CheckInstallDir" />
    <?endif?>

    <CustomAction Id="JpSetARPINSTALLLOCATION" Property="ARPINSTALLLOCATION" Value="[INSTALLDIR]" />

    <?ifdef JpIcon ?>
    <Property Id="ARPPRODUCTICON" Value="JpARPPRODUCTICON"/>
    <Icon Id="JpARPPRODUCTICON" SourceFile="$(var.JpIcon)"/>
    <?endif?>

   <WixVariable Id="WixUIBannerBmp" Value="$(var.ImageDir)/WixUIBannerBmp.bmp" />
   <WixVariable Id="WixUIDialogBmp" Value="$(var.ImageDir)/WixUIDialogBmp.bmp" />

    <UI>
      <?ifdef JpInstallDirChooser ?>
      <Dialog Id="JpInvalidInstallDir" Width="300" Height="85" Title="[ProductName] Setup" NoMinimize="yes">
        <Control Id="JpInvalidInstallDirYes" Type="PushButton" X="100" Y="55" Width="50" Height="15" Default="no" Cancel="no" Text="Yes">
          <Publish Event="NewDialog" Value="VerifyReadyDlg">1</Publish>
        </Control>
        <Control Id="JpInvalidInstallDirNo" Type="PushButton" X="150" Y="55" Width="50" Height="15" Default="yes" Cancel="yes" Text="No">
          <Publish Event="NewDialog" Value="InstallDirDlg">1</Publish>
        </Control>
        <Control Id="Text" Type="Text" X="25" Y="15" Width="250" Height="30" TabSkip="no">
          <Text>!(loc.message.install.dir.exist)</Text>
        </Control>
      </Dialog>

      <!--
        Run WixUI_InstallDir dialog in the default install directory.
      -->
      <Property Id="WIXUI_INSTALLDIR" Value="INSTALLDIR"/>
      <UIRef Id="WixUI_InstallDir" />

      <Publish Dialog="InstallDirDlg" Control="Next" Event="DoAction" Value="JpCheckInstallDir" Order="3">1</Publish>
      <Publish Dialog="InstallDirDlg" Control="Next" Event="NewDialog" Value="JpInvalidInstallDir" Order="5">INSTALLDIR_VALID="0"</Publish>
      <Publish Dialog="InstallDirDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg" Order="5">INSTALLDIR_VALID="1"</Publish>

      <?ifndef JpLicenseRtf ?>
      <!--
        No license file provided.
        Override the dialog sequence in built-in dialog set "WixUI_InstallDir"
        to exclude license dialog.
      -->
      <Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="InstallDirDlg" Order="2">1</Publish>
      <Publish Dialog="InstallDirDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg" Order="2">1</Publish>
      <?endif?>

      <?else?>

      <?ifdef JpLicenseRtf ?>
      <UIRef Id="WixUI_Minimal" />
      <?endif?>

      <?endif?>
      <!-- Add launch app configuration -->
      <Publish Dialog="ExitDialog" 
            Control="Finish" 
            Event="DoAction" 
            Value="LaunchApplication">WIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 and NOT Installed</Publish>
    </UI>
    
    <Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" Value="Launch $(var.JpAppName)" />
    <Property Id="WixShellExecTarget" Value="[INSTALLDIR]/$(var.JpAppName).exe" />
    <CustomAction Id="LaunchApplication" 
        BinaryKey="WixCA" 
        DllEntry="WixShellExec"
        Impersonate="yes" />    

    <?ifdef JpLicenseRtf ?>
    <WixVariable Id="WixUILicenseRtf" Value="$(var.JpLicenseRtf)"/>
    <?endif?>

    <InstallExecuteSequence>
      <Custom Action="JpSetARPINSTALLLOCATION" After="CostFinalize">Not Installed</Custom>
      <?ifndef JpAllowUpgrades ?>
      <Custom Action="JpDisallowUpgrade" After="FindRelatedProducts">JP_UPGRADABLE_FOUND</Custom>
      <?endif?>
      <?ifndef JpAllowDowngrades ?>
      <Custom Action="JpDisallowDowngrade" After="FindRelatedProducts">JP_DOWNGRADABLE_FOUND</Custom>
      <?endif?>
      <RemoveExistingProducts Before="CostInitialize"/>
    </InstallExecuteSequence>

  </Product>
</Wix>
