diff --git a/images/win/scripts/Installers/Install-Wix.ps1 b/images/win/scripts/Installers/Install-Wix.ps1 index 60d3e0e68..192c19b42 100644 --- a/images/win/scripts/Installers/Install-Wix.ps1 +++ b/images/win/scripts/Installers/Install-Wix.ps1 @@ -5,4 +5,24 @@ Choco-Install -PackageName wixtoolset -ArgumentList "--force" -Invoke-PesterTests -TestFile "Tools" -TestName "WiX" +if (Test-IsWin19) +{ + $extensionUrl = "https://wixtoolset.gallerycdn.vsassets.io/extensions/wixtoolset/wixtoolsetvisualstudio2019extension/1.0.0.4/1563296438961/Votive2019.vsix" + $VSver = "2019" +} +elseif (Test-IsWin16) +{ + $extensionUrl = "https://robmensching.gallerycdn.vsassets.io/extensions/robmensching/wixtoolsetvisualstudio2017extension/0.9.21.62588/1494013210879/250616/4/Votive2017.vsix" + $VSver = "2017" +} +else +{ + throw "Invalid version of Visual Studio is found. Either 2017 or 2019 are required" +} + +$extensionName = "Votive$VSver.vsix" + +#Installing VS extension 'Wix Toolset Visual Studio Extension' +Install-VsixExtension -Url $extensionUrl -Name $extensionName -VSversion $VSver + +Invoke-PesterTests -TestFile "Wix" diff --git a/images/win/scripts/SoftwareReport/SoftwareReport.Generator.ps1 b/images/win/scripts/SoftwareReport/SoftwareReport.Generator.ps1 index e0c34b245..f9d1f17e6 100644 --- a/images/win/scripts/SoftwareReport/SoftwareReport.Generator.ps1 +++ b/images/win/scripts/SoftwareReport/SoftwareReport.Generator.ps1 @@ -114,7 +114,6 @@ $toolsList = @( (Get-VSWhereVersion), (Get-SwigVersion), (Get-WinAppDriver), - (Get-WixVersion), (Get-ZstdVersion), (Get-YAMLLintVersion) ) diff --git a/images/win/scripts/SoftwareReport/SoftwareReport.Tools.psm1 b/images/win/scripts/SoftwareReport/SoftwareReport.Tools.psm1 index 515acb322..f0cc9b546 100644 --- a/images/win/scripts/SoftwareReport/SoftwareReport.Tools.psm1 +++ b/images/win/scripts/SoftwareReport/SoftwareReport.Tools.psm1 @@ -161,12 +161,6 @@ function Get-WinAppDriver { return "WinAppDriver $winAppDriverVersion" } -function Get-WixVersion { - $regKey = "HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*" - $installedApplications = Get-ItemProperty -Path $regKey - return ($installedApplications | Where-Object { $_.BundleCachePath -imatch ".*\\WiX\d*\.exe$" } | Select-Object -First 1).DisplayName -} - function Get-ZstdVersion { $(zstd --version) -match "v(?\d+\.\d+\.\d+)" | Out-Null $zstdVersion = $Matches.Version diff --git a/images/win/scripts/SoftwareReport/SoftwareReport.VisualStudio.psm1 b/images/win/scripts/SoftwareReport/SoftwareReport.VisualStudio.psm1 index 37a882559..341c5dc44 100644 --- a/images/win/scripts/SoftwareReport/SoftwareReport.VisualStudio.psm1 +++ b/images/win/scripts/SoftwareReport/SoftwareReport.VisualStudio.psm1 @@ -13,6 +13,12 @@ function Get-SDKVersion { ($installedApplications | Where-Object { $_.DisplayName -eq 'Windows SDK' } | Select-Object -First 1).DisplayVersion } +function Get-WixVersion { + $regKey = "HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*" + $installedApplications = Get-ItemProperty -Path $regKey + ($installedApplications | Where-Object { $_.DisplayName -match "wix" } | Select-Object -First 1).DisplayVersion +} + function Get-WDKVersion { $regKey = "HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*" $installedApplications = Get-ItemProperty -Path $regKey @@ -61,6 +67,14 @@ function Get-VisualStudioExtensions { } if ((Test-IsWin16) -or (Test-IsWin19)) { + # Wix + $wixPackageVersion = Get-WixVersion + $wixExtensionVersion = ($vsPackages | Where-Object {$_.Id -match 'WixToolset.VisualStudioExtension.Dev' -and $_.type -eq 'vsix'}).Version + $wixPackages = @( + @{Package = 'WIX Toolset'; Version = $wixPackageVersion} + @{Package = "WIX Toolset Studio $vs Extension"; Version = $wixExtensionVersion} + ) + # WDK $wdkPackageVersion = Get-VSExtensionVersion -packageName 'Microsoft.Windows.DriverKit' $wdkExtensionVersion = Get-WDKVersion @@ -75,6 +89,7 @@ function Get-VisualStudioExtensions { $vsixs $ssdtPackages $sdkPackages + $wixPackages $wdkPackages ) diff --git a/images/win/scripts/Tests/Tools.Tests.ps1 b/images/win/scripts/Tests/Tools.Tests.ps1 index dfbd0c078..27ba0da89 100644 --- a/images/win/scripts/Tests/Tools.Tests.ps1 +++ b/images/win/scripts/Tests/Tools.Tests.ps1 @@ -182,12 +182,6 @@ Describe "WebPlatformInstaller" -Skip:(Test-IsWin22) { } } -Describe "WiX" { - It "WiX directory exists" { - $env:WIX | Should -Exist - } -} - Describe "Zstd" { It "zstd" { "zstd -V" | Should -ReturnZeroExitCode diff --git a/images/win/scripts/Tests/Wix.Tests.ps1 b/images/win/scripts/Tests/Wix.Tests.ps1 new file mode 100644 index 000000000..ed9bed384 --- /dev/null +++ b/images/win/scripts/Tests/Wix.Tests.ps1 @@ -0,0 +1,23 @@ +Describe "Wix" -Skip:(Test-IsWin22) { + BeforeAll { + $regKey = "HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*" + $installedApplications = Get-ItemProperty -Path $regKey + $version = ($installedApplications | Where-Object { $_.DisplayName -and $_.DisplayName.toLower().Contains("wix") } | Select-Object -First 1).DisplayVersion + } + + It "Wix Toolset version from registry" { + $version | Should -Not -BeNullOrEmpty + } + + It "Wix Toolset version from system" { + if (Test-IsWin19) + { + $exVersion = Get-VSExtensionVersion -packageName "WixToolset.VisualStudioExtension.Dev16" + } + else + { + $exVersion = Get-VSExtensionVersion -packageName "WixToolset.VisualStudioExtension.Dev15" + } + $exVersion | Should -Not -BeNullOrEmpty + } +} diff --git a/images/win/windows2022.json b/images/win/windows2022.json index 948afff76..fc30ef0fb 100644 --- a/images/win/windows2022.json +++ b/images/win/windows2022.json @@ -168,7 +168,6 @@ { "type": "powershell", "scripts": [ - "{{ template_dir }}/scripts/Installers/Install-Wix.ps1", "{{ template_dir }}/scripts/Installers/Install-Vsix.ps1", "{{ template_dir }}/scripts/Installers/Install-AzureCli.ps1", "{{ template_dir }}/scripts/Installers/Install-AzureDevOpsCli.ps1",