<?xml version='1.0' encoding='windows-1252'?>
<!--
  Copyright 2019 The Bazel Authors. All rights reserved.

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <!-- Product/@Id is auto-generated so every Bazel version (including release
       candidates) has a unique product GUID. This is fine, all upgrades are
       "Major upgrades" (see
       https://www.firegiant.com/wix/tutorial/upgrades-and-modularization/).

       IMPORTANT: to see the Product GUID of an .msi file:
         1. install the Windows SDK
         2. find the Orca installer underneath (Orca-x86_en-us.msi) and run it
         3. open the .msi file with Orca
         4. open the "Property" table: the "ProductCode" property is the
            generated Product/@Id GUID
  -->

  <!-- IMPORTANT: Product/@UpgradeCode must be the same for backwards-compatible
       versions, but a new code is needed when an incompatible release comes.

       Versions with the same UpgradeCode are upgraded: higher versions replace
       lower versions (e.g. version 1.5.2 replaces version 1.0.3). Downgrading
       is not permitted.
       Versions with different UpgradeCodes can co-exist (e.g version 2.0.4rc5
       can co-exist with version 1.2.0).
  -->
  <Product
      Name="Bazel $(var.RELEASE_NAME)"
      Codepage="1252"
      Id="*"
      Language="1033"
      Manufacturer="The Bazel Authors (https://bazel.build)"
      UpgradeCode="$(var.UPGRADE_GUID)"
      Version="$(var.VERSION)">
    <!-- Package/@Id is auto-generated. This is standard practice with WiX,
         although it makes the compilation step ("candle.exe")
         non-deterministic.
         Even if we used a fixed GUID though, the linking step ("light.exe")
         would still be non-deterministic.
    -->
    <Package
        AdminImage="no"
        Compressed="yes"
        Description="Bazel $(var.RELEASE_NAME) installer"
        Id="*"
        InstallPrivileges="limited"
        InstallScope="perUser"
        InstallerVersion="200"
        Languages="1033"
        Manufacturer="The Bazel Authors (https://bazel.build)"
        Platform="x64"
        SummaryCodepage="1252" />
    <Media Id="1" Cabinet="bazel.cab" EmbedCab="yes" />

    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="InstallDirRoot" Name="bazel">
        <Directory Id="INSTALLDIR" Name="$(var.RELEASE_NAME)">
          <!-- RANDOM_GUID_1: can't use "*" because we'd get LGHT0231 from
               light.exe -->
          <Component
              Guid="$(var.RANDOM_GUID_1)"
              Id="MainExecutable"
              Win64="yes">
            <File
                Name="bazel.exe"
                Id="BazelExe"
                KeyPath="yes"
                Source="$(var.BAZEL_EXE)"
                Vital="yes" />
            <Environment
                Name="PATH"
                Action="set"
                Id="UpdatePathEnv"
                Part="first"
                System="no"
                Value="[INSTALLDIR]" />
          </Component>
          <!-- RANDOM_GUID_2: can't use "*" because we'd get LGHT0230 from
               light.exe -->
          <Component
              Guid="$(var.RANDOM_GUID_2)"
              Id="InstallDirRoot">
            <RemoveFolder Id="InstallDirRoot" On="uninstall" />
          </Component>
        </Directory>
      </Directory>
    </Directory>

    <Property Id="WIXUI_INSTALLDIR" Value="INSTALLDIR" />
    <UIRef Id="WixUI_InstallDir" />

    <Icon Id="BazelIcon" SourceFile="$(var.ICON)" />
    <Property Id="ARPPRODUCTICON" Value="BazelIcon" />

    <Condition
        Message="Bazel requires 64 bit Windows 7 or newer (64 bit Windows 10 recommended)">
      <![CDATA[VersionNT64 >= 601]]>
    </Condition>

    <Feature
        Absent="disallow"
        AllowAdvertise="no"
        ConfigurableDirectory="INSTALLDIR"
        Display="expand"
        Id="Complete"
        Level="1">
      <ComponentRef Id="InstallDirRoot" />
      <ComponentRef Id="MainExecutable" />
    </Feature>

    <!-- AllowSameVersionUpgrades is enabled, so we can install RC versions,
         e.g. install 0.28.0rc3 then 0.28.0. Unfortunately we can't easily
         prevent upgrading a release version to its RC version, or upgrading an
         RC with an older RC (because their VERSION and UPGRADE_GUID are both
         the same) but that's an acceptable flaw. -->
    <MajorUpgrade
        AllowDowngrades="no"
        IgnoreRemoveFailure="no"
        AllowSameVersionUpgrades="yes"
        DowngradeErrorMessage="A newer and backwards-compatible version is already installed" />
  </Product>
</Wix>
