diff options
author | Brad King <brad.king@kitware.com> | 2024-03-21 20:36:18 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2024-03-24 19:26:31 (GMT) |
commit | c8e2694679c2be02bbd3d8dbb98278b2ee977147 (patch) | |
tree | e7829a1a1ddc8bbb88037a494df58ba75692d3a9 /.gitlab/ci | |
parent | e7f5ad8df2f8dda35fea51b7c01f068497c16940 (diff) | |
download | CMake-c8e2694679c2be02bbd3d8dbb98278b2ee977147.zip CMake-c8e2694679c2be02bbd3d8dbb98278b2ee977147.tar.gz CMake-c8e2694679c2be02bbd3d8dbb98278b2ee977147.tar.bz2 |
ci: Add script to repackage WiX .NET tool for our needs
WiX Toolset 4+ is provided only via nuget packages. Add a script to
repackage the parts we need for CMake's own testing and packaging.
Diffstat (limited to '.gitlab/ci')
-rwxr-xr-x | .gitlab/ci/repackage/wix.ps1 | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/.gitlab/ci/repackage/wix.ps1 b/.gitlab/ci/repackage/wix.ps1 new file mode 100755 index 0000000..6dbd466 --- /dev/null +++ b/.gitlab/ci/repackage/wix.ps1 @@ -0,0 +1,55 @@ +# WiX Toolset 4+ is provided only via nuget packages. +# Download the package artifacts, extract the parts we need, and repackage them. + +param ( + [Parameter(Mandatory=$true)] + [string]$version + ) + +$erroractionpreference = "stop" + +$version_major = $version.Substring(0, $version.IndexOf('.')) + +$release = "v" + $version +$pkg_wix = "wix.$version.nupkg" +$pkg_wixui = "WixToolset.UI.wixext.$version.nupkg" +$packages = $pkg_wix, $pkg_wixui + +$wix_artifacts = "wix-artifacts.zip" + +$ProgressPreference = 'SilentlyContinue' +Invoke-WebRequest -Uri "https://github.com/wixtoolset/wix/releases/download/$release/artifacts.zip" -OutFile "$wix_artifacts" + +Add-Type -AssemblyName System.IO.Compression.FileSystem + +$zip = [System.IO.Compression.ZipFile]::Open("$wix_artifacts", "read") +$zip.Entries | Where-Object FullName -in $packages | ForEach-Object { + [System.IO.Compression.ZipFileExtensions]::ExtractToFile($_, "$($_.Name)", $true) +} +$zip.Dispose() +Remove-Item "$wix_artifacts" + +$wix_dir = "wix-$version-win-any-1" +[System.IO.Compression.ZipFile]::ExtractToDirectory($pkg_wix, "wix-tmp") +Move-Item -Path "wix-tmp/tools/net6.0/any" -Destination "$wix_dir" +Remove-Item "wix-tmp" -Recurse -Force +Remove-Item "$pkg_wix" + +$ext_dir = New-Item -Force -ItemType Directory -Path "$wix_dir/.wix/extensions/WixToolset.UI.wixext/$version/wixext$version_major" +$zip = [System.IO.Compression.ZipFile]::Open($pkg_wixui, "read") +$zip.Entries | Where-Object Name -eq "WixToolset.UI.wixext.dll" | ForEach-Object { + [System.IO.Compression.ZipFileExtensions]::ExtractToFile($_, (Join-Path $ext_dir $_.Name), $true) +} +$zip.Dispose() +Remove-Item "$pkg_wixui" + +@" +This was extracted from WiX Toolset nuget packages and repackaged. +Point both PATH and WIX_EXTENSIONS environment variables at this directory. + +"@ | Add-Content -NoNewline "$wix_dir/README.txt" + +$compressionLevel = [System.IO.Compression.CompressionLevel]::Optimal +$includeBaseDirectory = $true +[System.IO.Compression.ZipFile]::CreateFromDirectory("$wix_dir", "$wix_dir.zip", $compressionLevel, $includeBaseDirectory) +Remove-Item "$wix_dir" -Recurse -Force |