Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Deprecate WDK VSIX Install #1219

Merged
merged 12 commits into from
Sep 24, 2024
38 changes: 0 additions & 38 deletions .github/scripts/Install-Vsix.ps1

This file was deleted.

6 changes: 3 additions & 3 deletions .github/workflows/Code-Scanning.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ on:
branches:
- main
- develop
paths-ignore:
middlemose marked this conversation as resolved.
Show resolved Hide resolved
- '**.md'
- 'LICENSE'
pull_request:
# The branches below must be a subset of the branches above
branches:
Expand Down Expand Up @@ -37,9 +40,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\

Expand Down
3 changes: 0 additions & 3 deletions .github/workflows/ci-pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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\

Expand Down
3 changes: 0 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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\

Expand Down
39 changes: 17 additions & 22 deletions Build-SampleSet.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -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
middlemose marked this conversation as resolved.
Show resolved Hide resolved
$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.
Expand Down Expand Up @@ -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
middlemose marked this conversation as resolved.
Show resolved Hide resolved
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
}
#
#
Expand Down Expand Up @@ -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)"
middlemose marked this conversation as resolved.
Show resolved Hide resolved
Write-Output ""
Write-Output "T: Combinations"
Write-Output "B: Built"
Expand Down
70 changes: 44 additions & 26 deletions Building-Locally.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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
Expand All @@ -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)

---
middlemose marked this conversation as resolved.
Show resolved Hide resolved

## 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
middlemose marked this conversation as resolved.
Show resolved Hide resolved
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:
Expand All @@ -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:
middlemose marked this conversation as resolved.
Show resolved Hide resolved

```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

Expand All @@ -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
Expand Down Expand Up @@ -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:
Expand All @@ -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"
Expand Down
19 changes: 2 additions & 17 deletions configuration.dsc.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand All @@ -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
3 changes: 2 additions & 1 deletion configuration_vsonly.dsc.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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
middlemose marked this conversation as resolved.
Show resolved Hide resolved
Loading