<?if $(sys.BUILDARCH)="x86"?>
    <?define Win64 = "no" ?>
    <?define PlatformProgramFilesFolder = "ProgramFilesFolder" ?>
<?elseif $(sys.BUILDARCH)="x64"?>
    <?define Win64 = "yes" ?>
    <?define PlatformProgramFilesFolder = "ProgramFiles64Folder" ?>
<?else?>
    <?error Unsupported value of sys.BUILDARCH=$(sys.BUILDARCH)?>
<?endif?>

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Product
            Id="*"
            Name="{{{product_name}}}"
            UpgradeCode="{{{upgrade_code}}}"
            Language="{{language_id}}"
            Codepage="{{ascii_codepage}}"
            Manufacturer="{{{manufacturer}}}"
            Version="{{{version}}}">

        <Package Id="*"
                 Keywords="Installer"
                 InstallerVersion="450"
                 Languages="{{language_id}}"
                 Compressed="yes"
                 InstallScope="perMachine"
                 SummaryCodepage="{{ascii_codepage}}"/>

         <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed."
                  MigrateFeatures="yes" />


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

        <WixVariable Id="WixUIBannerBmp" Value="{{{icon_path}}}" />
        {{#if license}}
        <WixVariable Id="WixUILicenseRtf" Value="{{{license}}}" />
        {{/if}}

        <Icon Id="ProductIcon" SourceFile="{{{icon_path}}}"/>
        <Property Id="ARPPRODUCTICON" Value="ProductIcon" />
        <Property Id="ARPNOREPAIR" Value="yes" Secure="yes" />      <!-- Remove repair -->
        <SetProperty Id="ARPNOMODIFY" Value="1" After="InstallValidate" Sequence="execute"/>

        <UI>
            <Property Id="WIXUI_INSTALLDIR" Value="INSTALLDIR" />

            {{#unless license}}
            <!-- Skip 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>
            {{/unless}}
        </UI>

        <UIRef Id="WixUI_InstallDir" />

        <Directory Id="TARGETDIR" Name="SourceDir">
            <Directory Id="DesktopFolder" Name="Desktop">
                <Component Id="ApplicationShortcutDesktop" Guid="*">
                    <Shortcut Id="ApplicationDesktopShortcut" Name="{{{product_name}}}" Description="Runs {{{product_name}}}" Target="[!Path]" WorkingDirectory="INSTALLDIR" />
                    <RemoveFolder Id="DesktopFolder" On="uninstall" />
                    <RegistryValue Root="HKCU" Key="Software\{{{product_name}}}" Name="installed" Type="integer" Value="1" KeyPath="yes" />
                </Component>
            </Directory>
            <Directory Id="$(var.PlatformProgramFilesFolder)" Name="PFiles">
                <Directory Id="INSTALLDIR" Name="{{{product_name}}}"/>
            </Directory>
            <Directory Id="ProgramMenuFolder">
                <Directory Id="ApplicationProgramsFolder" Name="{{{product_name}}}"/>
            </Directory>
        </Directory>

        <DirectoryRef Id="INSTALLDIR">
            <Component Id="Path" Guid="{{{path_component_guid}}}" Win64="$(var.Win64)">
                <File Id="Path" Source="{{{app_exe_source}}}" KeyPath="yes" Checksum="yes"/>
            </Component>
            {{#each binaries as |bin| ~}}
            <Component Id="{{ bin.id }}" Guid="{{bin.guid}}" Win64="$(var.Win64)">
                <File Id="Path_{{ bin.id }}" Source="{{bin.path}}" KeyPath="yes"/>
            </Component>
            {{/each~}}
            {{{resources}}}
            <Component Id="CMP_ReadFileShortcut"
                Guid="1AF06B42-CD42-4AED-959F-36DB5E512046">

                <Shortcut Id="UninstallShortcut"
						  Name="Uninstall {{{product_name}}}"
						  Description="Uninstalls {{{product_name}}}"
						  Target="[System64Folder]msiexec.exe"
						  Arguments="/x [ProductCode]" />

				<RemoveFolder Id="INSTALLDIR"
							  On="uninstall" />

				<RegistryValue Root="HKCR"
							   Key="Software\{{{manufacturer}}}\{{{product_name}}}"
							   Name="installed"
							   Type="integer"
							   Value="1"
							   KeyPath="yes" />
            </Component>
        </DirectoryRef>

        <DirectoryRef Id="ApplicationProgramsFolder">
            <Component Id="ApplicationShortcut" Guid="81ccebd8-b769-4bed-bdbd-0340f9f7cad1">
                <Shortcut Id="ApplicationStartMenuShortcut"
                    Name="{{{product_name}}}"
                    Description="Runs {{{product_name}}}"
                    Target="[!Path]"
                    Icon="ProductIcon"
                    WorkingDirectory="INSTALLDIR">
                    <ShortcutProperty Key="System.AppUserModel.ID" Value="{{{manufacturer}}}"/>
                </Shortcut>
                <RemoveFolder Id="ApplicationProgramsFolder" On="uninstall"/>
                <RegistryValue Root="HKCU" Key="Software\{{{manufacturer}}}\{{{product_name}}}" Name="installed" Type="integer" Value="1" KeyPath="yes"/>
           </Component>
        </DirectoryRef>

        {{#each merge_modules as |msm| ~}}
        <DirectoryRef Id="TARGETDIR">
            <Merge Id="{{ msm.name }}" SourceFile="{{ msm.path }}" DiskId="1" Language="0"/>
        </DirectoryRef>

        <Feature Id="{{ msm.name }}" Title="{{ msm.name }}" AllowAdvertise="no" Display="hidden" Level="1">
            <MergeRef Id="{{ msm.name }}"/>
        </Feature>
        {{/each~}}

        <Feature
                Id="MainProgram"
                Title="Application"
                Description="Installs {{{product_name}}}."
                Level="1"
                ConfigurableDirectory="INSTALLDIR"
                AllowAdvertise="no"
                Display="expand"
                Absent="disallow">

            {{#each resource_file_ids as |resource_file_id| ~}}
                <ComponentRef Id="{{ resource_file_id }}"/>
            {{/each~}}

            <Feature Id="ShortcutsFeature"
                Title="Shortcuts"
                Level="1">
                <ComponentRef Id="Path"/>
                <ComponentRef Id="CMP_ReadFileShortcut" />
                <ComponentRef Id="ApplicationShortcut" />
                <ComponentRef Id="ApplicationShortcutDesktop" />
            </Feature>

            <Feature
                Id="Environment"
                Title="PATH Environment Variable"
                Description="Add the install location of the [ProductName] executable to the PATH system environment variable. This allows the [ProductName] executable to be called from any location."
                Level="1"
                Absent="allow">
            <ComponentRef Id="Path"/>
            {{#each binaries as |bin| ~}}
            <ComponentRef Id="{{ bin.id }}"/>
            {{/each~}}
            </Feature>
        </Feature>

        <Feature Id="External" AllowAdvertise="no" Absent="disallow">
            {{#each component_group_refs as |id| ~}}
            <ComponentGroupRef Id="{{ id }}"/>
            {{/each~}}
            {{#each component_refs as |id| ~}}
            <ComponentRef Id="{{ id }}"/>
            {{/each~}}
            {{#each feature_group_refs as |id| ~}}
            <FeatureGroupRef Id="{{ id }}"/>
            {{/each~}}
            {{#each feature_refs as |id| ~}}
            <FeatureRef Id="{{ id }}"/>
            {{/each~}}
            {{#each merge_refs as |id| ~}}
            <MergeRef Id="{{ id }}"/>
            {{/each~}}
        </Feature>

        {{#if install_webview}}
        <!-- WebView2 -->
        <Property Id="WVRTINSTALLED">
            <RegistrySearch Id="WVRTInstalled" Root="HKLM" Key="SOFTWARE\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}" Name="pv" Type="raw" Win64="no"/>
        </Property>
        <CustomAction Id='DownloadAndInvokeBootstrapper' Directory="INSTALLDIR" Execute="deferred" ExeCommand='powershell.exe -windowstyle hidden Invoke-WebRequest -Uri "https://go.microsoft.com/fwlink/p/?LinkId=2124703" -OutFile "$env:TEMP\MicrosoftEdgeWebview2Setup.exe" ; &amp; $env:TEMP\MicrosoftEdgeWebview2Setup.exe /install' Return='check'/>
        <InstallExecuteSequence>
            <Custom Action='DownloadAndInvokeBootstrapper' Before='InstallFinalize'>
                <![CDATA[NOT(REMOVE OR WVRTINSTALLED)]]>
            </Custom>
        </InstallExecuteSequence>
        {{/if}}

        <SetProperty Id="ARPINSTALLLOCATION" Value="[INSTALLDIR]" After="CostFinalize"/>
    </Product>
</Wix>
