summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt <[email protected]>2024-09-23 19:43:48 -0700
committerGitHub <[email protected]>2024-09-23 19:43:48 -0700
commit5c4ceaef72f0af992966a7d2ac7ac7d897f091d3 (patch)
treec41e92721ba8d9e6ce01b18aa806268c9c9a901e
parent66f7736077b6fb6573418885390076e24a4daef6 (diff)
Deprecate WDK VSIX Install (#1219)
* Deprecate WDK vsix install * Fix WDK extension version print * Remove unecessary splitting on version * Minor build info refactor * Fix indentation of output info * Enough messing with volume size output * Cleanup comment for vsix version * More cleanup and doc update * Remove deprecation statement and install vsix script. * Fixes and updates to building locally documentation. * Dont code scan on license or .md files. * Code scanning ignore changes to .md when pull request is made
-rw-r--r--.github/scripts/Install-Vsix.ps138
-rw-r--r--.github/workflows/Code-Scanning.yml9
-rw-r--r--.github/workflows/ci-pr.yml3
-rw-r--r--.github/workflows/ci.yml3
-rw-r--r--Build-SampleSet.ps139
-rw-r--r--Building-Locally.md70
-rw-r--r--configuration.dsc.yaml19
-rw-r--r--configuration_vsonly.dsc.yaml3
8 files changed, 71 insertions, 113 deletions
diff --git a/.github/scripts/Install-Vsix.ps1 b/.github/scripts/Install-Vsix.ps1
deleted file mode 100644
index 50ef088b..00000000
--- a/.github/scripts/Install-Vsix.ps1
+++ /dev/null
@@ -1,38 +0,0 @@
-<#
-
-.SYNOPSIS
-Download and install the latest WDK VSIX.
-
-#>
-
-# set uri by resolving amd64 vsix
-$uri = "https://marketplace.visualstudio.com$((Invoke-WebRequest -Uri "https://marketplace.visualstudio.com/items?itemName=DriverDeveloperKits-WDK.WDKVsix").Links | Where-Object outerHTML -like '*(amd64)*' | select -expand href)"
-
-# set download version
-$uri_version = ([regex]'(\d+\.)(\d+\.)(\d+\.)(\d+)').Matches($uri).Value
-
-# set msbuild path
-$msbuild_path = (Resolve-Path "$env:ProgramFiles\Microsoft Visual Studio\2022\*\MSBuild\")
-
-# download vsix, expand, and store the downloaded version extracted from the extension manifest
-"Downloading WDK VSIX version: $uri_version..."
-Invoke-WebRequest -Uri "$uri" -OutFile wdk.zip
-"Expanding WDK VSIX archive..."
-Expand-Archive ".\wdk.zip" .\
-"Extracting version from manifest..."
-$downloaded_version = ([xml](Get-Content .\extension.vsixmanifest)).PackageManifest.Metadata.Identity.Version
-"Downloaded WDK VSIX version: $downloaded_version"
-
-# copy msbuild files, extension manifest, and check installed version from the extension manifest
-"Copying WDK extension files to build path..."
-cp (".\`$MSBuild\*", ".\extension.vsixmanifest") "$msbuild_path" -Recurse -Force
-"Extracting version from copied manifest..."
-$installed_version = ([xml](Get-Content ${msbuild_path}\extension.vsixmanifest)).PackageManifest.Metadata.Identity.Version
-"Installed WDK VSIX Version: $installed_version"
-if (-not ("$downloaded_version" -eq "$installed_version")) {
- "WDK VSIX installation failed due to version mismatch"
- exit 1
-}
-
-# set github environment variable for vsix version
-"SAMPLES_VSIX_VERSION=$installed_version" | Out-File -FilePath "$env:GITHUB_ENV" -Append
diff --git a/.github/workflows/Code-Scanning.yml b/.github/workflows/Code-Scanning.yml
index cd0d8abf..16aaff39 100644
--- a/.github/workflows/Code-Scanning.yml
+++ b/.github/workflows/Code-Scanning.yml
@@ -8,11 +8,17 @@ on:
branches:
- main
- develop
+ paths-ignore:
+ - '**.md'
+ - 'LICENSE'
pull_request:
# The branches below must be a subset of the branches above
branches:
- main
- develop
+ paths-ignore:
+ - '**.md'
+ - 'LICENSE'
# Allow manual scheduling
workflow_dispatch:
@@ -37,9 +43,6 @@ jobs:
with:
submodules: 'recursive'
- - name: Install WDK VSIX
- run: .\.github\scripts\Install-Vsix.ps1
-
- name: Install Nuget Packages
run: nuget restore .\packages.config -PackagesDirectory .\packages\
diff --git a/.github/workflows/ci-pr.yml b/.github/workflows/ci-pr.yml
index c04f4adb..72fb176f 100644
--- a/.github/workflows/ci-pr.yml
+++ b/.github/workflows/ci-pr.yml
@@ -22,9 +22,6 @@ jobs:
with:
submodules: 'recursive'
- - name: Install WDK VSIX
- run: .\.github\scripts\Install-Vsix.ps1
-
- name: Install Nuget Packages
run: nuget restore .\packages.config -PackagesDirectory .\packages\
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index c35a81ec..11dee203 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -22,9 +22,6 @@ jobs:
with:
submodules: 'recursive'
- - name: Install WDK VSIX
- run: .\.github\scripts\Install-Vsix.ps1
-
- name: Install Nuget Packages
run: nuget restore .\packages.config -PackagesDirectory .\packages\
diff --git a/Build-SampleSet.ps1 b/Build-SampleSet.ps1
index adae8bb0..f6765395 100644
--- a/Build-SampleSet.ps1
+++ b/Build-SampleSet.ps1
@@ -56,20 +56,17 @@ finally {
# Determine build environment: 'GitHub', 'NuGet', 'EWDK', or 'WDK'.
# Determine build number (used for exclusions based on build number). Five digits. Say, '22621'.
# Determine NuGet package version (if applicable).
-# Determine WDK vsix version.
#
$build_environment=""
$build_number=0
$nuget_package_version=0
-$vsix_version=""
#
-# In Github we build using NuGet and get the version from packages and vsix version from env var set from the install vsix step.
+# In Github we build using NuGet.
#
if ($env:GITHUB_REPOSITORY) {
$build_environment="GitHub"
$nuget_package_version=([regex]'(?<=x64\.)(\d+\.)(\d+\.)(\d+\.)(\d+)').Matches((Get-Childitem .\packages\*WDK.x64* -Name)).Value
$build_number=$nuget_package_version.split('.')[2]
- $vsix_version = $env:SAMPLES_VSIX_VERSION
}
#
# WDK NuGet will require presence of a folder 'packages'. The version is sourced from repo .\Env-Vars.ps1.
@@ -107,16 +104,12 @@ else {
exit 1
}
#
-# Get the vsix version from packages if not set
-if (-not $vsix_version) {
- $vsix_version = ls "${env:ProgramData}\Microsoft\VisualStudio\Packages\Microsoft.Windows.DriverKit,version=*" | Select -ExpandProperty Name
- if ($vsix_version) {
- $vsix_version = $vsix_version.split('=')[1]
- }
- else {
- Write-Error "No version of the WDK VSIX could be found. The WDK VSIX is not installed."
- exit 1
- }
+# Get the WDK extension version from installed packages
+$wdk_extension_ver = ls "${env:ProgramData}\Microsoft\VisualStudio\Packages\Microsoft.Windows.DriverKit,version=*" | Select -ExpandProperty Name
+$wdk_extension_ver = ([regex]'(\d+\.)(\d+\.)(\d+\.)(\d+)').Matches($wdk_extension_ver).Value
+if (-not $wdk_extension_ver) {
+ Write-Error "No version of the WDK Visual Studio Extension could be found. The WDK Extension is not installed."
+ exit 1
}
#
#
@@ -180,20 +173,22 @@ $jresult = @{
$SolutionsTotal = $sampleSet.Count * $Configurations.Count * $Platforms.Count
-Write-Output ("Build Environment: " + $build_environment)
-Write-Output ("Build Number: " + $build_number)
-if (($build_environment -eq "GitHub") -or ($build_environment -eq "NuGet")) { Write-Output ("Nuget Package Version: " + $nuget_package_version) }
-Write-Output ("WDK VSIX Version: " + $vsix_version)
-Write-Output ("Samples: " + $sampleSet.Count)
-Write-Output ("Configurations: " + $Configurations.Count + " (" + $Configurations + ")")
-Write-Output ("Platforms: " + $Platforms.Count + " (" + $Platforms + ")")
+Write-Output "WDK Build Environment: $build_environment"
+Write-Output "WDK Build Number: $build_number"
+if (($build_environment -eq "GitHub") -or ($build_environment -eq "NuGet")) {
+Write-Output "WDK Nuget Version: $nuget_package_version"
+}
+Write-Output "WDK Extension Version: $wdk_extension_ver"
+Write-Output "Samples: $($sampleSet.Count)"
+Write-Output "Configurations: $($Configurations.Count) ($Configurations)"
+Write-Output "Platforms: $($Platforms.Count) ($Platforms)"
Write-Output "InfVerif_AdditionalOptions: $InfVerif_AdditionalOptions"
Write-Output "Combinations: $SolutionsTotal"
Write-Output "LogicalProcessors: $LogicalProcessors"
Write-Output "ThrottleFactor: $ThrottleFactor"
Write-Output "ThrottleLimit: $ThrottleLimit"
Write-Output "WDS_WipeOutputs: $env:WDS_WipeOutputs"
-Write-Output ("Disk Remaining (GB): " + (((Get-Volume ($DriveLetter = (Get-Item ".").PSDrive.Name)).SizeRemaining / 1GB)))
+Write-Output "Disk Remaining (GB): $(((Get-Volume ((Get-Item ".").PSDrive.Name)).SizeRemaining) / 1GB)"
Write-Output ""
Write-Output "T: Combinations"
Write-Output "B: Built"
diff --git a/Building-Locally.md b/Building-Locally.md
index e3db8dde..312c5967 100644
--- a/Building-Locally.md
+++ b/Building-Locally.md
@@ -2,16 +2,19 @@
## Step 1: Install Tools
-```
+```powershell
winget install --id Microsoft.Powershell --source winget
winget install --id Git.Git --source winget
```
For using WDK NuGet feed based build additionally:
-```
+
+```powershell
winget install --id Microsoft.NuGet --source winget
```
+---
+
## Step 2: Optional: Disable Strong Name Validation
When: This step is only required if you will be using pre-release versions of the WDK.
@@ -26,16 +29,20 @@ reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\StrongName\Verification\*,31bf3856
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\StrongName\Verification\*,31bf3856ad364e35 /v TestPublicKey /t REG_SZ /d 00240000048000009400000006020000002400005253413100040000010001003f8c902c8fe7ac83af7401b14c1bd103973b26dfafb2b77eda478a2539b979b56ce47f36336741b4ec52bbc51fecd51ba23810cec47070f3e29a2261a2d1d08e4b2b4b457beaa91460055f78cc89f21cd028377af0cc5e6c04699b6856a1e49d5fad3ef16d3c3d6010f40df0a7d6cc2ee11744b5cfb42e0f19a52b8a29dc31b0 /f
```
+---
+
## Step 3: Optional: Install Microsoft .NET Framework 4.7.2 Targeting Pack and Microsoft .NET Framework 4.8.1 SDK
When: This step is only required to build sample usb\usbview .
### Option A: Install VS Components
+
Easy: If you will install Visual Studio (see later) you may at that point select to add both of following individual components:
* .NET Framework 4.7.2 targeting pack
* .NET Framework 4.8.1 SDK
### Option B: Use EWDK
+
Easy: If you use EWDK, then all necessary prequisites are included.
### Option C: Install Developer Pack
@@ -52,24 +59,30 @@ This will install following Apps:
* Microsoft .NET Framework 4.8.1 Targeting Pack
* Microsoft .NET Framework 4.8.1 Targeting Pack (ENU)
+---
+
## Step 4: Clone Windows Driver Samples and checkout relevant branch
-```
-cd path\to\your\repos
-git clone --recurse-submodules https://github.com/microsoft/Windows-driver-samples.git
-cd Windows-driver-samples
+```powershell
+cd "path\to\your\repos"
+git clone --recurse-submodules "https://github.com/microsoft/Windows-driver-samples.git"
+cd ".\Windows-driver-samples"
```
If you are planning to use in-market WDK, then you would typically want to use the 'main' branch:
+
```
git checkout main
```
If you are planning to use a WDK Preview or WDK EEAP release, then you would typically want to use the 'develop' branch:
+
```
git checkout develop
```
+---
+
## Step 5: Create a "driver build environment"
To build the Windows Driver Samples you need a "driver build environment". In essence an environment that consist of following prerequisites:
@@ -78,53 +91,55 @@ To build the Windows Driver Samples you need a "driver build environment". In e
* The Windows Driver Kit.
### Option A: Use WDK NuGet Packages
-* See [Download the Windows Driver Kit (WDK)](https://learn.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk) for instructions on how to install Visual Studio, but only complete "Step 1". You do not need to install the SDK or the WDK.
-* Install the Visual Studio Windows Driver Kit Extension (WDK.vsix).
- * Open Visual Studio -> Extensions -> Manage Extensions... -> Browse.
- * In the search bar type: `Windows Driver Kit`.
- * Find the `Microsoft` signed extension.
- * Click the Install button.
+
+* See [Download the Windows Driver Kit (WDK)](https://learn.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk) for instructions on how to install Visual Studio, but only complete `Step 1`. You do not need to install the SDK or the WDK.
* Launch a "Developer Command Prompt for VS 2022".
* Restore WDK packages from feed :
-```
->cd path\to\your\repos\Windows-driver-samples
->nuget restore -PackagesDirectory .\packages
+```powershell
+cd "path\to\your\repos\Windows-driver-samples"
+nuget restore -PackagesDirectory ".\packages"
```
-* When this is done you should have a .\packages folder that looks exactly as follows:
-```
->cd path\to\your\repos\Windows-driver-samples
->dir /b packages
+* When this is done you should have a .\packages folder that looks like example below:
+
+```powershell
+cd "path\to\your\repos\Windows-driver-samples"
+dir /b packages
Microsoft.Windows.SDK.CPP.10.0.26000.1
Microsoft.Windows.SDK.CPP.x64.10.0.26000.1
Microsoft.Windows.SDK.CPP.arm64.10.0.26000.1
Microsoft.Windows.WDK.x64.10.0.26000.1
Microsoft.Windows.WDK.arm64.10.0.26000.1
```
+
### Option B: Use the Windows Driver Kit
+
* Here you will install each of above prerequisites one at a time.
* See [Download the Windows Driver Kit (WDK)](https://learn.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk) for instructions on how to install Visual Studio, SDK, and WDK.
* Launch a "Developer Command Prompt for VS 2022".
### Option C: Use an Enterprise WDK
+
* You can also simply use the Enterprise WDK (EWDK), a standalone, self-contained command-line environment for building drivers that contains all prerequisites in one combined ISO.
* See [Download the Windows Driver Kit (WDK)](https://learn.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk) for instructions on how to download the EWDK.
* Mount ISO image
* Open a terminal
* `.\LaunchBuildEnv`
+---
## Step 6: Check all samples builds with expected results for all flavors
-```
+```powershell
pwsh
.\Build-AllSamples
```
Above builds all samples for all configurations and platforms.
You can refine what exact samples to build, what configurations, and platforms to build. build Here are a few examples:
-```
+
+```powershell
# Get Help:
Get-Help .\Build-AllSamples
@@ -144,9 +159,9 @@ Get-Help .\Build-AllSamples
.\Build-AllSamples -Samples '^tools.' -Configurations 'Debug' -Platforms 'x64'
```
-Expected output:
+Example of expected output:
+
```
-PS > .\build-AllSamples.ps1
Build Environment: NuGet
Build Number: 26100
Samples: 132
@@ -190,6 +205,8 @@ Log files directory: .\_logs
Overview report: .\_overview.htm
```
+---
+
## 7: NuGet - Additional Notes
To restore a specific version of our WDK NuGet packages:
@@ -201,12 +218,13 @@ Follow these steps before running "nuget restore" command:
* Now you can run "nuget restore"
A few examples of how to interact with nuget:
-```
+
+```powershell
# To add an alternative online NuGet source:
-nuget sources add -Name "MyNuGetFeed" -Source https://nugetserver.com/_packaging/feedname/nuget/v3/index.json
+nuget sources add -Name "MyNuGetFeed" -Source "https://nugetserver.com/_packaging/feedname/nuget/v3/index.json"
# To add an alternative local NuGet source:
-nuget sources add -Name "MyNuGetFeed" -Source \\path\to\mylocalrepo
+nuget sources add -Name "MyNuGetFeed" -Source "\\path\to\mylocalrepo"
# To remove an alternative NuGet source:
nuget sources remove -Name "MyNuGetFeed"
diff --git a/configuration.dsc.yaml b/configuration.dsc.yaml
index f8245c08..3d25ff06 100644
--- a/configuration.dsc.yaml
+++ b/configuration.dsc.yaml
@@ -42,6 +42,7 @@ properties:
- Microsoft.VisualStudio.Component.VC.MFC.ARM64
- Microsoft.VisualStudio.Component.VC.MFC.ARM64.Spectre
- Microsoft.VisualStudio.Workload.NativeDesktop
+ - Component.Microsoft.Windows.DriverKit
- resource: Microsoft.WinGet.DSC/WinGetPackage
id: sdkPackage
directives:
@@ -62,20 +63,4 @@ properties:
id: Microsoft.WindowsWDK.10.0.26100
source: winget
useLatest: true
- - resource: PSDscResources/Script
- id: wdkVsix
- dependsOn:
- - wdkPackage
- - vsComponents
- directives:
- description: Install Windows Driver Kit VSIX
- settings:
- GetScript: |
- return & "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" -nologo -version '[17.0,18.0)' -requires Microsoft.Windows.DriverKit -property installationVersion
- SetScript: |
- $installerPath = & "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" -nologo -latest -products * -property enginePath | Join-Path -ChildPath 'VSIXInstaller.exe'
- if (Test-Path $installerPath) { & $installerPath /q "${env:ProgramFiles(x86)}\Windows Kits\10\Vsix\VS2022\10.0.26100.0\${env:PROCESSOR_ARCHITECTURE}\WDK.vsix" }
- TestScript: |
- $versionString = & "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" -nologo -version '[17.0,18.0)' -requires Microsoft.Windows.DriverKit -property installationVersion
- return $versionString -match "^17\."
- configurationVersion: 0.2.0
+ configurationVersion: 0.2.1
diff --git a/configuration_vsonly.dsc.yaml b/configuration_vsonly.dsc.yaml
index 6ce4fc83..9d86a4f7 100644
--- a/configuration_vsonly.dsc.yaml
+++ b/configuration_vsonly.dsc.yaml
@@ -42,4 +42,5 @@ properties:
- Microsoft.VisualStudio.Component.VC.MFC.ARM64
- Microsoft.VisualStudio.Component.VC.MFC.ARM64.Spectre
- Microsoft.VisualStudio.Workload.NativeDesktop
- configurationVersion: 0.2.0
+ - Component.Microsoft.Windows.DriverKit
+ configurationVersion: 0.2.1