| # 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. | |
| # This module creates a Windows Installer (.msi) package for a Bazel release. | |
| # | |
| # Example usage: | |
| # C:\src\bazel> powershell -NonInteractive scripts\packages\msi\make_msi.ps1 outputs\bazel-0.28.0rc5-windows-x86_64.exe | |
| # | |
| # Mandatory arguments: | |
| # -BazelExe <path>: path to the Bazel binary to package. Its name must | |
| # conform to "bazel-<version>-windows-x86_64.exe" | |
| # | |
| # Optional arguments: | |
| # -OutMsi: path of the output file (default: same path as -BazelExe, with | |
| # ".msi" extension) | |
| # -WorkDir: directory for temp files (default: ".\_make_msi_tmp_") | |
| # Command line arguments. | |
| param ( | |
| [Parameter(Mandatory = $true, Position = 0)] | |
| [ValidatePattern("bazel-[0-9]+\.[0-9]+\.[0-9]+(rc[1-9]|rc[1-9][0-9]+)?-windows-x86_64.exe$")] | |
| [string]$BazelExe, | |
| [string]$WorkDir, | |
| [string]$OutMsi | |
| ) | |
| # Exit immediately when a Cmdlet fails. | |
| $ErrorActionPreference = 'Stop' | |
| Import-Module .\scripts\packages\msi\make_msi_lib.ps1 | |
| # Ensure all paths are Windows-style. | |
| $BazelExe = "$(Replace-Slashes($BazelExe))" | |
| if ($WorkDir) { | |
| $WorkDir = "$(Replace-Slashes($WorkDir))" | |
| } | |
| else { | |
| $WorkDir = '.\_make_msi_tmp_' | |
| } | |
| if ($OutMsi) { | |
| $OutMsi = "$(Replace-Slashes($OutMsi))" | |
| } | |
| else { | |
| $OutMsi = $BazelExe.Substring(0, $BazelExe.Length - 3) + 'msi' | |
| } | |
| Make-Msi -BazelExe $BazelExe -WorkDir $WorkDir -OutMsi $OutMsi |