From 7ac2f09df1e70cbba45ccede0cbdffa4a0cf81bc Mon Sep 17 00:00:00 2001 From: Steve Lee Date: Mon, 26 Feb 2024 14:43:59 -0800 Subject: [PATCH 1/7] add assets for msix package --- packaging/assets/Square150x150Logo.png | Bin 0 -> 58519 bytes packaging/assets/Square44x44Logo.png | Bin 0 -> 6446 bytes packaging/assets/Square64x64Logo.png | Bin 0 -> 12483 bytes packaging/msix/AppxManifest.xml | 51 +++++++++++++++++++++++++ 4 files changed, 51 insertions(+) create mode 100644 packaging/assets/Square150x150Logo.png create mode 100644 packaging/assets/Square44x44Logo.png create mode 100644 packaging/assets/Square64x64Logo.png create mode 100644 packaging/msix/AppxManifest.xml diff --git a/packaging/assets/Square150x150Logo.png b/packaging/assets/Square150x150Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..16da3eedc32460d45e69beb9dc1da88f6d97893d GIT binary patch literal 58519 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 G^#1@X< + + + + + + + $DISPLAYNAME$ + Microsoft Corporation + ..\assets\Sqaure64x64Logo.png + disabled + disabled + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 4f841f418d46c1db3b8a207be03351ace3ba17cc Mon Sep 17 00:00:00 2001 From: "Steve Lee (POWERSHELL HE/HIM) (from Dev Box)" Date: Fri, 1 Mar 2024 09:27:46 -0800 Subject: [PATCH 2/7] enable building msix package --- .gitignore | 1 + build.ps1 | 231 +++++++++++++----- .../assets/Square44x44Logo.targetsize-48.png | Bin 0 -> 6446 bytes ...x44Logo.targetsize-48_altform-unplated.png | Bin 0 -> 6446 bytes packaging/assets/StoreLogo.png | Bin 0 -> 12483 bytes packaging/msix/AppxManifest.xml | 6 +- 6 files changed, 177 insertions(+), 61 deletions(-) create mode 100644 packaging/assets/Square44x44Logo.targetsize-48.png create mode 100644 packaging/assets/Square44x44Logo.targetsize-48_altform-unplated.png create mode 100644 packaging/assets/StoreLogo.png diff --git a/.gitignore b/.gitignore index e25f63e6..5ef3e4cd 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ Cargo.lock target bin/ .DS_Store +*.msix # Node.js generated files for tree-sitter build/ diff --git a/build.ps1 b/build.ps1 index a501c1a7..06c6d38a 100644 --- a/build.ps1 +++ b/build.ps1 @@ -6,6 +6,8 @@ param( [ValidateSet('current','aarch64-pc-windows-msvc','x86_64-pc-windows-msvc','aarch64-apple-darwin','x86_64-apple-darwin','aarch64-unknown-linux-gnu','aarch64-unknown-linux-musl','x86_64-unknown-linux-gnu','x86_64-unknown-linux-musl')] $architecture = 'current', [switch]$Clippy, + [switch]$SkipBuild, + [switch]$Msix, [switch]$Test, [switch]$GetPackageVersion, [switch]$SkipLinkCheck @@ -52,7 +54,7 @@ function Find-LinkExe { } } -if (!$SkipLinkCheck -and $IsWindows -and !(Get-Command 'link.exe' -ErrorAction Ignore)) { +if (!$SkipBuild -and !$SkipLinkCheck -and $IsWindows -and !(Get-Command 'link.exe' -ErrorAction Ignore)) { if (!(Test-Path $BuildToolsPath)) { Write-Verbose -Verbose "link.exe not found, installing C++ build tools" Invoke-WebRequest 'https://aka.ms/vs/17/release/vs_BuildTools.exe' -OutFile 'temp:/vs_buildtools.exe' @@ -83,7 +85,6 @@ if (!$SkipLinkCheck -and $IsWindows -and !(Get-Command 'link.exe' -ErrorAction I #$env:PATH += ";$linkexe" } -## Create the output folder $configuration = $Release ? 'release' : 'debug' $flags = @($Release ? '-r' : $null) if ($architecture -eq 'current') { @@ -98,13 +99,14 @@ else { $target = Join-Path $PSScriptRoot 'bin' $architecture $configuration } -if (Test-Path $target) { - Remove-Item $target -Recurse -ErrorAction Stop -} -New-Item -ItemType Directory $target > $null +if (!$SkipBuild) { + if (Test-Path $target) { + Remove-Item $target -Recurse -ErrorAction Stop + } + New-Item -ItemType Directory $target > $null -# make sure dependencies are built first so clippy runs correctly -$windows_projects = @("pal", "ntreg", "ntstatuserror", "ntuserinfo", "registry") + # make sure dependencies are built first so clippy runs correctly + $windows_projects = @("pal", "ntreg", "ntstatuserror", "ntuserinfo", "registry") # projects are in dependency order $projects = @( @@ -125,73 +127,74 @@ $pedantic_unclean_projects = @("ntreg") $clippy_unclean_projects = @("tree-sitter-dscexpression") $skip_test_projects_on_windows = @("tree-sitter-dscexpression") -if ($IsWindows) { - $projects += $windows_projects -} + if ($IsWindows) { + $projects += $windows_projects + } -$failed = $false -foreach ($project in $projects) { - ## Build format_json - Write-Host -ForegroundColor Cyan "Building $project ... for $architecture" - try { - Push-Location "$PSScriptRoot/$project" -ErrorAction Stop + $failed = $false + foreach ($project in $projects) { + ## Build format_json + Write-Host -ForegroundColor Cyan "Building $project ... for $architecture" + try { + Push-Location "$PSScriptRoot/$project" -ErrorAction Stop - if ($project -eq 'tree-sitter-dscexpression') { - ./build.ps1 - } + if ($project -eq 'tree-sitter-dscexpression') { + ./build.ps1 + } - if (Test-Path "./Cargo.toml") - { - if ($Clippy) { - if ($clippy_unclean_projects -contains $project) { - Write-Verbose -Verbose "Skipping clippy for $project" - } - elseif ($pedantic_unclean_projects -contains $project) { - Write-Verbose -Verbose "Running clippy for $project" - cargo clippy @flags -- -Dwarnings + if (Test-Path "./Cargo.toml") + { + if ($Clippy) { + if ($clippy_unclean_projects -contains $project) { + Write-Verbose -Verbose "Skipping clippy for $project" + } + elseif ($pedantic_unclean_projects -contains $project) { + Write-Verbose -Verbose "Running clippy for $project" + cargo clippy @flags -- -Dwarnings + } + else { + Write-Verbose -Verbose "Running clippy with pedantic for $project" + cargo clippy @flags --% -- -Dwarnings -Dclippy::pedantic + } } else { - Write-Verbose -Verbose "Running clippy with pedantic for $project" - cargo clippy @flags --% -- -Dwarnings -Dclippy::pedantic + cargo build @flags } } - else { - cargo build @flags - } - } - if ($LASTEXITCODE -ne 0) { - $failed = $true - } + if ($LASTEXITCODE -ne 0) { + $failed = $true + } - $binary = Split-Path $project -Leaf + $binary = Split-Path $project -Leaf - if ($IsWindows) { - Copy-Item "$path/$binary.exe" $target -ErrorAction Ignore - } - else { - Copy-Item "$path/$binary" $target -ErrorAction Ignore - } + if ($IsWindows) { + Copy-Item "$path/$binary.exe" $target -ErrorAction Ignore + } + else { + Copy-Item "$path/$binary" $target -ErrorAction Ignore + } - if (Test-Path "./copy_files.txt") { - Get-Content "./copy_files.txt" | ForEach-Object { - Copy-Item $_ $target -Force -ErrorAction Ignore + if (Test-Path "./copy_files.txt") { + Get-Content "./copy_files.txt" | ForEach-Object { + Copy-Item $_ $target -Force -ErrorAction Ignore + } } - } - Copy-Item "*.dsc.resource.json" $target -Force -ErrorAction Ignore + Copy-Item "*.dsc.resource.json" $target -Force -ErrorAction Ignore - } finally { - Pop-Location + } finally { + Pop-Location + } } -} -if ($failed) { - Write-Host -ForegroundColor Red "Build failed" - exit 1 -} + if ($failed) { + Write-Host -ForegroundColor Red "Build failed" + exit 1 + } -Copy-Item $PSScriptRoot/tools/add-path.ps1 $target -Force -ErrorAction Ignore + Copy-Item $PSScriptRoot/tools/add-path.ps1 $target -Force -ErrorAction Ignore +} $relative = Resolve-Path $target -Relative if (!$Clippy) { @@ -293,4 +296,116 @@ if ($Test) { Invoke-Pester -ErrorAction Stop } +if ($Msix) { + if (!$IsWindows) { + throw "MSIX is only supported on Windows" + } + + if ($architecture -eq 'current') { + throw 'MSIX requires a specific architecture' + } + + $makeappx = Get-Command makeappx -CommandType Application -ErrorAction Ignore + if ($null -eq $makeappx) { + # try to find + if ($architecture -eq 'aarch64-pc-windows-msvc') { + $arch = 'arm64' + } + else { + $arch = 'x64' + } + + $makeappx = Get-ChildItem -Recurse -Path (Join-Path ${env:ProgramFiles(x86)} 'Windows Kits\10\bin\*\' $arch) -Filter makeappx.exe | Sort-Object FullName -Descending | Select-Object -First 1 + if ($null -eq $makeappx) { + throw "makeappx not found" + } + } + + $makepri = Get-Item (Join-Path $makeappx.Directory "makepri.exe") -ErrorAction Stop + $displayName = "DesiredStateConfiguration" + $productVersion = ((Get-Content $PSScriptRoot/dsc/Cargo.toml) -match '^version\s*=\s*') -replace 'version\s*=\s*"(.*?)"', '$1' + $isPreview = $productVersion -like '*-*' + $productName = "DesiredStateConfiguration" + if ($isPreview) { + Write-Verbose -Verbose "Preview version detected" + $productName += "-Preview" + # save preview number + $previewNumber = $productVersion -replace '.*?-[a-z]+\.([0-9]+)', '$1' + # remove label from version + $productVersion = $productVersion.Split('-')[0] + # replace revision number with preview number + $productVersion = $productVersion -replace '(\d+)$', "$previewNumber.0" + $displayName += "-Preview" + } + Write-Verbose -Verbose "Product version is $productVersion" + $arch = if ($architecture -eq 'aarch64-pc-windows-msvc') { 'arm64' } else { 'x64' } + + # Appx manifest needs to be in root of source path, but the embedded version needs to be updated + # cp-459155 is 'CN=Microsoft Windows Store Publisher (Store EKU), O=Microsoft Corporation, L=Redmond, S=Washington, C=US' + # authenticodeFormer is 'CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US' + $releasePublisher = 'CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US' + + $appxManifest = Get-Content "$PSScriptRoot\packaging\msix\AppxManifest.xml" -Raw + $appxManifest = $appxManifest.Replace('$VERSION$', $ProductVersion).Replace('$ARCH$', $Arch).Replace('$PRODUCTNAME$', $productName).Replace('$DISPLAYNAME$', $displayName).Replace('$PUBLISHER$', $releasePublisher) + $msixTarget = Join-Path $PSScriptRoot 'bin' $architecture 'msix' + if (Test-Path $msixTarget) { + Remove-Item $msixTarget -Recurse -ErrorAction Stop + } + + New-Item -ItemType Directory $msixTarget > $null + Set-Content -Path "$msixTarget\AppxManifest.xml" -Value $appxManifest -Force + + $filesForMsix = @( + 'dsc.exe', + 'assertion.dsc.resource.json', + 'group.dsc.resource.json', + 'parallel.dsc.resource.json', + 'powershellgroup.dsc.resource.json', + 'powershellgroup.resource.ps1', + 'wmigroup.dsc.resource.json.optout', + 'wmigroup.resource.ps1' + ) + + foreach ($file in $filesForMsix) { + Copy-Item "$target\$file" $msixTarget -ErrorAction Stop + } + + # Necessary image assets need to be in source assets folder + $assets = @( + 'Square150x150Logo' + 'Square64x64Logo' + 'Square44x44Logo' + 'Square44x44Logo.targetsize-48' + 'Square44x44Logo.targetsize-48_altform-unplated' + 'StoreLogo' + ) + + New-Item -ItemType Directory "$msixTarget\assets" > $null + foreach ($asset in $assets) { + Copy-Item "$PSScriptRoot\packaging\assets\$asset.png" "$msixTarget\assets" -ErrorAction Stop + } + + Write-Verbose "Creating priconfig.xml" -Verbose + & $makepri createconfig /o /cf (Join-Path $msixTarget "priconfig.xml") /dq en-US + if ($LASTEXITCODE -ne 0) { + throw "Failed to create priconfig.xml" + } + + Write-Verbose "Creating resources.pri" -Verbose + Push-Location $msixTarget + & $makepri new /v /o /pr $msixTarget /cf (Join-Path $msixTarget "priconfig.xml") + Pop-Location + if ($LASTEXITCODE -ne 0) { + throw "Failed to create resources.pri" + } + + Write-Verbose "Creating msix package" -Verbose + $packageName = "$productName-$productVersion-$arch" + & $makeappx pack /o /v /h SHA256 /d $msixTarget /p (Join-Path -Path (Get-Location) -ChildPath "$packageName.msix") + if ($LASTEXITCODE -ne 0) { + throw "Failed to create msix package" + } + Write-Verbose "Created $packageName.msix" -Verbose +} + $env:RUST_BACKTRACE=1 diff --git a/packaging/assets/Square44x44Logo.targetsize-48.png b/packaging/assets/Square44x44Logo.targetsize-48.png new file mode 100644 index 0000000000000000000000000000000000000000..22a369173cd9164a02f82d73ebc01448cd3fbdfc GIT binary patch literal 6446 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 G^#1@X< $DISPLAYNAME$ Microsoft Corporation - ..\assets\Sqaure64x64Logo.png + assets\Square64x64Logo.png disabled disabled @@ -30,13 +30,13 @@ - + - + From 2e94887560e411088f08bcb11ad44c9d5824795f Mon Sep 17 00:00:00 2001 From: "Steve Lee (POWERSHELL HE/HIM) (from Dev Box)" Date: Fri, 1 Mar 2024 13:05:47 -0800 Subject: [PATCH 3/7] include exe home in search path, removing unnecessary add-path script --- build.ps1 | 2 -- dsc_lib/src/discovery/command_discovery.rs | 13 ++++++++++++- tools/add-path.ps1 | 17 ----------------- 3 files changed, 12 insertions(+), 20 deletions(-) delete mode 100644 tools/add-path.ps1 diff --git a/build.ps1 b/build.ps1 index 06c6d38a..daa574ba 100644 --- a/build.ps1 +++ b/build.ps1 @@ -192,8 +192,6 @@ $skip_test_projects_on_windows = @("tree-sitter-dscexpression") Write-Host -ForegroundColor Red "Build failed" exit 1 } - - Copy-Item $PSScriptRoot/tools/add-path.ps1 $target -Force -ErrorAction Ignore } $relative = Resolve-Path $target -Relative diff --git a/dsc_lib/src/discovery/command_discovery.rs b/dsc_lib/src/discovery/command_discovery.rs index b6066eab..83c49b63 100644 --- a/dsc_lib/src/discovery/command_discovery.rs +++ b/dsc_lib/src/discovery/command_discovery.rs @@ -7,6 +7,7 @@ use crate::dscresources::resource_manifest::{import_manifest, Kind, ResourceMani use crate::dscresources::command_resource::invoke_command; use crate::dscerror::DscError; use indicatif::{MultiProgress, ProgressBar, ProgressStyle}; +use serde::de; use std::collections::BTreeMap; use std::env; use std::ffi::OsStr; @@ -28,6 +29,7 @@ impl CommandDiscovery { #[allow(clippy::too_many_lines)] fn search_for_resources(required_resource_types: &[String]) -> Result, DscError> { + debug!("Searching for resources: {:?}", required_resource_types); let return_all_resources = required_resource_types.len() == 1 && required_resource_types[0] == "*"; let multi_progress_bar = MultiProgress::new(); @@ -53,6 +55,7 @@ impl CommandDiscovery { let mut resources: BTreeMap = BTreeMap::new(); let mut adapter_resources: Vec = Vec::new(); let mut remaining_required_resource_types = required_resource_types.to_owned(); + // try DSC_RESOURCE_PATH env var first otherwise use PATH let path_env = match env::var_os("DSC_RESOURCE_PATH") { Some(value) => value, @@ -66,7 +69,15 @@ impl CommandDiscovery { } }; - for path in env::split_paths(&path_env) { + let mut paths = env::split_paths(&path_env).collect::>(); + + // add exe home to start of path + if let Some(exe_home) = env::current_exe()?.parent() { + debug!("Adding exe home to path: {}", exe_home.to_string_lossy()); + paths.insert(0, exe_home.to_path_buf()); + } + + for path in paths { if path.exists() && path.is_dir() { for entry in path.read_dir().unwrap() { let entry = entry.unwrap(); diff --git a/tools/add-path.ps1 b/tools/add-path.ps1 deleted file mode 100644 index d0ff2406..00000000 --- a/tools/add-path.ps1 +++ /dev/null @@ -1,17 +0,0 @@ -# Copyright (c) Microsoft Corporation. -# Licensed under the MIT License. - -# This script will add the script directory to the PATH environment variable -# for the current user. This is useful for development purposes. - -$pathSeparator = [System.IO.Path]::PathSeparator -$paths = $env:PATH.Split($pathSeparator) -if ($paths -notcontains $PSScriptRoot) { - $env:PATH = "$PSScriptRoot" + $pathSeparator + $env:PATH - Write-Host -ForegroundColor Green "Added $PSScriptRoot to `$env:PATH" -} - -# Invoke completer script for PowerShell -$completer = dsc completer powershell | Out-String -Invoke-Expression $completer -Write-Host -ForegroundColor Green "Added PowerShell completer" From 8383b18d08a9e76e592d6511b69bc5d51b585f69 Mon Sep 17 00:00:00 2001 From: "Steve Lee (POWERSHELL HE/HIM) (from Dev Box)" Date: Fri, 1 Mar 2024 21:41:07 -0800 Subject: [PATCH 4/7] fix build --- dsc_lib/src/discovery/command_discovery.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/dsc_lib/src/discovery/command_discovery.rs b/dsc_lib/src/discovery/command_discovery.rs index 83c49b63..da116638 100644 --- a/dsc_lib/src/discovery/command_discovery.rs +++ b/dsc_lib/src/discovery/command_discovery.rs @@ -7,7 +7,6 @@ use crate::dscresources::resource_manifest::{import_manifest, Kind, ResourceMani use crate::dscresources::command_resource::invoke_command; use crate::dscerror::DscError; use indicatif::{MultiProgress, ProgressBar, ProgressStyle}; -use serde::de; use std::collections::BTreeMap; use std::env; use std::ffi::OsStr; From 09f50c0a0182eebc8367d533c938df960edc88c8 Mon Sep 17 00:00:00 2001 From: "Steve Lee (POWERSHELL HE/HIM) (from Dev Box)" Date: Sat, 2 Mar 2024 07:19:53 -0800 Subject: [PATCH 5/7] only add exe path if not using DSC_RESOURCE_PATH --- build.ps1 | 2 +- dsc_lib/src/discovery/command_discovery.rs | 23 ++++++++++++++++------ 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/build.ps1 b/build.ps1 index daa574ba..36b1d9d3 100644 --- a/build.ps1 +++ b/build.ps1 @@ -222,7 +222,7 @@ if (!$Clippy) { if (!$found) { Write-Host -ForegroundCOlor Yellow "Adding $target to `$env:PATH" - $env:PATH += [System.IO.Path]::PathSeparator + $target + $env:PATH = $target + [System.IO.Path]::PathSeparator + $env:PATH } } diff --git a/dsc_lib/src/discovery/command_discovery.rs b/dsc_lib/src/discovery/command_discovery.rs index da116638..cb9c510d 100644 --- a/dsc_lib/src/discovery/command_discovery.rs +++ b/dsc_lib/src/discovery/command_discovery.rs @@ -14,7 +14,7 @@ use std::fs::File; use std::io::BufReader; use std::path::Path; use std::time::Duration; -use tracing::{debug, error, warn}; +use tracing::{debug, error, trace, warn}; pub struct CommandDiscovery { } @@ -54,13 +54,22 @@ impl CommandDiscovery { let mut resources: BTreeMap = BTreeMap::new(); let mut adapter_resources: Vec = Vec::new(); let mut remaining_required_resource_types = required_resource_types.to_owned(); + let mut using_custom_path = false; // try DSC_RESOURCE_PATH env var first otherwise use PATH let path_env = match env::var_os("DSC_RESOURCE_PATH") { - Some(value) => value, + Some(value) => { + debug!("Using DSC_RESOURCE_PATH: {:?}", value.to_string_lossy()); + using_custom_path = true; + value + }, None => { + trace!("DSC_RESOURCE_PATH not set, trying PATH"); match env::var_os("PATH") { - Some(value) => value, + Some(value) => { + debug!("Using PATH: {:?}", value.to_string_lossy()); + value + } None => { return Err(DscError::Operation("Failed to get PATH environment variable".to_string())); } @@ -71,9 +80,11 @@ impl CommandDiscovery { let mut paths = env::split_paths(&path_env).collect::>(); // add exe home to start of path - if let Some(exe_home) = env::current_exe()?.parent() { - debug!("Adding exe home to path: {}", exe_home.to_string_lossy()); - paths.insert(0, exe_home.to_path_buf()); + if !using_custom_path { + if let Some(exe_home) = env::current_exe()?.parent() { + debug!("Adding exe home to path: {}", exe_home.to_string_lossy()); + paths.insert(0, exe_home.to_path_buf()); + } } for path in paths { From 3ca01f53cb2f940e0e6de75a323e73d5234e3490 Mon Sep 17 00:00:00 2001 From: "Steve Lee (POWERSHELL HE/HIM) (from Dev Box)" Date: Sat, 2 Mar 2024 07:28:10 -0800 Subject: [PATCH 6/7] address clippy --- dsc_lib/src/discovery/command_discovery.rs | 29 ++++++++++------------ 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/dsc_lib/src/discovery/command_discovery.rs b/dsc_lib/src/discovery/command_discovery.rs index cb9c510d..ddd6194d 100644 --- a/dsc_lib/src/discovery/command_discovery.rs +++ b/dsc_lib/src/discovery/command_discovery.rs @@ -57,22 +57,19 @@ impl CommandDiscovery { let mut using_custom_path = false; // try DSC_RESOURCE_PATH env var first otherwise use PATH - let path_env = match env::var_os("DSC_RESOURCE_PATH") { - Some(value) => { - debug!("Using DSC_RESOURCE_PATH: {:?}", value.to_string_lossy()); - using_custom_path = true; - value - }, - None => { - trace!("DSC_RESOURCE_PATH not set, trying PATH"); - match env::var_os("PATH") { - Some(value) => { - debug!("Using PATH: {:?}", value.to_string_lossy()); - value - } - None => { - return Err(DscError::Operation("Failed to get PATH environment variable".to_string())); - } + let path_env = if let Some(value) = env::var_os("DSC_RESOURCE_PATH") { + debug!("Using DSC_RESOURCE_PATH: {:?}", value.to_string_lossy()); + using_custom_path = true; + value + } else { + trace!("DSC_RESOURCE_PATH not set, trying PATH"); + match env::var_os("PATH") { + Some(value) => { + debug!("Using PATH: {:?}", value.to_string_lossy()); + value + }, + None => { + return Err(DscError::Operation("Failed to get PATH environment variable".to_string())); } } }; From d4962e3bc603ab07dd36d68cb4f035c3c5b2217e Mon Sep 17 00:00:00 2001 From: "Steve Lee (POWERSHELL HE/HIM) (from Dev Box)" Date: Mon, 4 Mar 2024 17:02:46 -0800 Subject: [PATCH 7/7] update message when makeappx is not found --- build.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.ps1 b/build.ps1 index 36b1d9d3..b25db9b2 100644 --- a/build.ps1 +++ b/build.ps1 @@ -315,7 +315,7 @@ if ($Msix) { $makeappx = Get-ChildItem -Recurse -Path (Join-Path ${env:ProgramFiles(x86)} 'Windows Kits\10\bin\*\' $arch) -Filter makeappx.exe | Sort-Object FullName -Descending | Select-Object -First 1 if ($null -eq $makeappx) { - throw "makeappx not found" + throw "makeappx not found, please install Windows SDK" } }