<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" InitialTargets="EnsureNuGetPackageBuildImports"
  xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="..\wix.props" Condition="Exists('..\wix.props')" />
  <Import Project="..\..\src\Version.props" />
  <PropertyGroup Condition="'$(Platform)' == 'x64'">
    <DefineConstants>Version=$(Version);MonacoSRCHarvestPath=$(ProjectDir)..\..\x64\$(Configuration)\Assets\Monaco\monacoSRC</DefineConstants>
    <!-- THIS IS AN INNER LOOP OPTIMIZATION
    The build pipeline builds the Settings and Launcher projects for Publication
    using a specific profile. If you're doing local installer builds, this will
    simulate the build pipeline doing that for you. -->
    <PreBuildEvent>IF NOT DEFINED IsPipeline (
call "$([MSBuild]::GetVsInstallRoot())\Common7\Tools\VsDevCmd.bat" -arch=amd64 -host_arch=amd64 -winsdk=10.0.19041.0 -vcvars_ver=$(VCToolsVersion)
SET PTRoot=$(SolutionDir)\..
call "..\..\..\publish.cmd" x64
)
call powershell.exe -NonInteractive -executionpolicy Unrestricted -File $(MSBuildThisFileDirectory)\generateMonacoWxs.ps1 -monacoWxsFile "$(MSBuildThisFileDirectory)\MonacoSRC.wxs"
    </PreBuildEvent>
  </PropertyGroup>

  <PropertyGroup Condition="'$(Platform)' != 'x64'">
    <DefineConstants>Version=$(Version);MonacoSRCHarvestPath=$(ProjectDir)..\..\ARM64\$(Configuration)\Assets\Monaco\monacoSRC</DefineConstants>
    <PreBuildEvent>IF NOT DEFINED IsPipeline (
call "$([MSBuild]::GetVsInstallRoot())\Common7\Tools\VsDevCmd.bat" -arch=arm64 -host_arch=amd64 -winsdk=10.0.19041.0 -vcvars_ver=$(VCToolsVersion)
SET PTRoot=$(SolutionDir)\..
call "..\..\..\publish.cmd" arm64
)
call powershell.exe -NonInteractive -executionpolicy Unrestricted -File $(MSBuildThisFileDirectory)\generateMonacoWxs.ps1 -monacoWxsFile "$(MSBuildThisFileDirectory)\MonacoSRC.wxs"
    </PreBuildEvent>
  </PropertyGroup>
  <PropertyGroup>
    <RunPostBuildEvent>Always</RunPostBuildEvent>
    <PostBuildEvent>
    call move /Y ..\..\..\Awake.wxs.bk ..\..\..\Awake.wxs
    call move /Y ..\..\..\BaseApplications.wxs.bk ..\..\..\BaseApplications.wxs
    call move /Y ..\..\..\ColorPicker.wxs.bk ..\..\..\ColorPicker.wxs
    call move /Y ..\..\..\Core.wxs.bk ..\..\..\Core.wxs
    call move /Y ..\..\..\EnvironmentVariables.wxs.bk ..\..\..\EnvironmentVariables.wxs
    call move /Y ..\..\..\FileExplorerPreview.wxs.bk ..\..\..\FileExplorerPreview.wxs
    call move /Y ..\..\..\FileLocksmith.wxs.bk ..\..\..\FileLocksmith.wxs
    call move /Y ..\..\..\Hosts.wxs.bk ..\..\..\Hosts.wxs
    call move /Y ..\..\..\ImageResizer.wxs.bk ..\..\..\ImageResizer.wxs
    call move /Y ..\..\..\KeyboardManager.wxs.bk ..\..\..\KeyboardManager.wxs
    call move /Y ..\..\..\MouseWithoutBorders.wxs.bk ..\..\..\MouseWithoutBorders.wxs
    call move /Y ..\..\..\Peek.wxs.bk ..\..\..\Peek.wxs
    call move /Y ..\..\..\PowerRename.wxs.bk ..\..\..\PowerRename.wxs
    call move /Y ..\..\..\Product.wxs.bk ..\..\..\Product.wxs
    call move /Y ..\..\..\RegistryPreview.wxs.bk ..\..\..\RegistryPreview.wxs
    call move /Y ..\..\..\Resources.wxs.bk ..\..\..\Resources.wxs
    call move /Y ..\..\..\Run.wxs.bk ..\..\..\Run.wxs
    call move /Y ..\..\..\Settings.wxs.bk ..\..\..\Settings.wxs
    call move /Y ..\..\..\ShortcutGuide.wxs.bk ..\..\..\ShortcutGuide.wxs
    call move /Y ..\..\..\Tools.wxs.bk ..\..\..\Tools.wxs
    call move /Y ..\..\..\VideoConference.wxs.bk ..\..\..\VideoConference.wxs
    call move /Y ..\..\..\WinAppSDK.wxs.bk ..\..\..\WinAppSDK.wxs
    call move /Y ..\..\..\WinUI3Applications.wxs.bk ..\..\..\WinUI3Applications.wxs
    </PostBuildEvent>
  </PropertyGroup>
  <PropertyGroup>
    <Name>PowerToysInstaller</Name>
  </PropertyGroup>
  <PropertyGroup Label="UserMacros" Condition=" '$(PerUser)' == 'true' ">
    <DefineConstants>$(DefineConstants);PerUser=true</DefineConstants>
  </PropertyGroup>
  <PropertyGroup Label="UserMacros" Condition=" '$(PerUser)' != 'true' ">
    <DefineConstants>$(DefineConstants);PerUser=false</DefineConstants>
  </PropertyGroup>

  <PropertyGroup>
    <!-- We do not support debug installer builds -->
    <Configuration Condition=" '$(Configuration)' == '' ">Release</Configuration>
    <Platform>$(Platform)</Platform>
    <ProductVersion>3.10</ProductVersion>
    <ProjectGuid>022a9d30-7c4f-416d-a9df-5ff2661cc0ad</ProjectGuid>
    <SchemaVersion>2.0</SchemaVersion>
    <OutputName Condition=" '$(PerUser)' != 'true' ">PowerToysSetup-$(Version)-$(Platform)</OutputName>
    <OutputName Condition=" '$(PerUser)' == 'true' ">PowerToysUserSetup-$(Version)-$(Platform)</OutputName>
    <OutputType>Package</OutputType>
    <SuppressAclReset>True</SuppressAclReset>
    <NuGetPackageImportStamp>
    </NuGetPackageImportStamp>
    <!-- 1076 and ICE91 - warning: using this configuration for perMachine install could cause problems. -->
    <!-- 1026 - warning: file ID is too long -->
    <SuppressIces>ICE91</SuppressIces>
    <SuppressSpecificWarnings>1026;1076</SuppressSpecificWarnings>
  </PropertyGroup>
  <PropertyGroup>
    <OutputPath Condition=" '$(PerUser)' != 'true' ">$(Platform)\$(Configuration)\MachineSetup</OutputPath>
    <OutputPath Condition=" '$(PerUser)' == 'true' ">$(Platform)\$(Configuration)\UserSetup</OutputPath>
    <IntermediateOutputPath Condition=" '$(PerUser)' != 'true' ">obj\$(Platform)\$(Configuration)\MachineSetup</IntermediateOutputPath>
    <IntermediateOutputPath Condition=" '$(PerUser)' == 'true' ">obj\$(Platform)\$(Configuration)\UserSetup</IntermediateOutputPath>
    <SuppressIces>ICE40</SuppressIces>
  </PropertyGroup>
  <PropertyGroup>
    <!-- suppress warning 1108 regarding -sh being deprecated -->
    <!-- -sh suppresses file information which was causing wix build to hang in CI -->
    <LinkerAdditionalOptions>-v -sh -sw1108</LinkerAdditionalOptions>
  </PropertyGroup>
  <ItemGroup>
    <Compile Include="CustomDialogs\PTInstallDirDlg.wxs" />
    <Compile Include="CustomDialogs\PTLicenseDlg.wxs" />
    <Compile Include="CustomDialogs\WixUI_PTInstallDir.wxs" />
    <Compile Include="Product.wxs" />

    <Compile Include="Awake.wxs" />
    <Compile Include="BaseApplications.wxs" />
    <Compile Include="CmdNotFound.wxs" />
    <Compile Include="ColorPicker.wxs" />
    <Compile Include="EnvironmentVariables.wxs" />
    <Compile Include="FileExplorerPreview.wxs" />
    <Compile Include="FileLocksmith.wxs" />
    <Compile Include="Hosts.wxs" />
    <Compile Include="ImageResizer.wxs" />
    <Compile Include="KeyboardManager.wxs" />
    <Compile Include="Peek.wxs" />
    <Compile Include="PowerRename.wxs" />
    <Compile Include="RegistryPreview.wxs" />
    <Compile Include="Run.wxs" />
    <Compile Include="Settings.wxs" />
    <Compile Include="ShortcutGuide.wxs" />
    <Compile Include="Tools.wxs" />
    <Compile Include="VideoConference.wxs" />
    <Compile Include="MouseWithoutBorders.wxs" />
    <Compile Include="WinUI3Applications.wxs" />

    <Compile Include="MonacoSRC.wxs" />

    <Compile Include="Core.wxs" />
    <Compile Include="Resources.wxs" />
    <Compile Include="WinAppSDK.wxs" />
  </ItemGroup>
  <ItemGroup>
    <WixExtension Include="WixFirewallExtension">
      <HintPath>$(WixExtDir)\WixFirewallExtension.dll</HintPath>
      <Name>WixFirewallExtension</Name>
    </WixExtension>
    <WixExtension Include="WixUtilExtension">
      <HintPath>$(WixExtDir)\WixUtilExtension.dll</HintPath>
      <Name>WixUtilExtension</Name>
    </WixExtension>
    <WixExtension Include="WixUIExtension">
      <HintPath>$(WixExtDir)\WixUIExtension.dll</HintPath>
      <Name>WixUIExtension</Name>
    </WixExtension>
    <WixExtension Include="WixNetFxExtension">
      <HintPath>$(WixExtDir)\WixNetFxExtension.dll</HintPath>
      <Name>WixNetFxExtension</Name>
    </WixExtension>
  </ItemGroup>
  <ItemGroup>
    <Folder Include="CustomDialogs" />
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\PowerToysSetupCustomActions\PowerToysSetupCustomActions.vcxproj">
      <Name>PowerToysSetupCustomActions</Name>
      <Project>{32f3882b-f2d6-4586-b5ed-11e39e522bd3}</Project>
      <Private>True</Private>
      <DoNotHarvest>True</DoNotHarvest>
      <RefProjectOutputGroups>Binaries;Content;Satellites</RefProjectOutputGroups>
      <RefTargetDir>INSTALLFOLDER</RefTargetDir>
    </ProjectReference>
  </ItemGroup>
  <ItemGroup>
    <Content Include="packages.config" />
  </ItemGroup>
  <Import Project="$(WixTargetsPath)" Condition=" '$(WixTargetsPath)' != '' " />
  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets" Condition=" '$(WixTargetsPath)' == '' AND Exists('$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets') " />
  <Target Name="EnsureWixToolsetInstalled" Condition=" '$(WixTargetsImported)' != 'true' ">
    <Error Text="The WiX Toolset v3 build tools must be installed to build this project. To download the WiX Toolset, see http://wixtoolset.org/releases/" />
  </Target>
  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
    <PropertyGroup>
      <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
    </PropertyGroup>
    <Error Condition="!Exists('..\wix.props')" Text="$([System.String]::Format('$(ErrorText)', '..\wix.props'))" />
  </Target>
  <!--
	To modify your build process, add your task inside one of the targets below and uncomment it.
	Other similar extension points exist, see Wix.targets.
	<Target Name="BeforeBuild">
	</Target>
	<Target Name="AfterBuild">
	</Target> -->
  <Target Name="BeforeBuild">
    <HeatDirectory Directory="..\..\src\common\FilePreviewCommon\Assets\Monaco\monacoSRC" PreprocessorVariable="var.MonacoSRCHarvestPath" OutputFile="MonacoSRC.wxs" ComponentGroupName="MonacoSRCHeatGenerated" DirectoryRefId="MonacoPreviewHandlerMonacoSRCFolder" AutogenerateGuids="false" GenerateGuidsNow="true" ToolPath="$(WixToolPath)" RunAsSeparateProcess="true" SuppressFragments="false" SuppressRegistry="false" SuppressRootDirectory="true"/>
  </Target>
</Project>