11{{
2-     set isServer2025 to OS_VERSION_NUMBER = "ltsc2025"  ^
3-     set isServer2022 to OS_VERSION_NUMBER = "ltsc2022"  ^
4-     set isServer2019 to OS_VERSION_NUMBER = "ltsc2019"  ^
5-     set isServer2016 to OS_VERSION_NUMBER = "ltsc2016"  ^
6-     set isNet35 to PRODUCT_VERSION = "3.5"  ^
7-     set isNet462 to PRODUCT_VERSION = "4.6.2"  ^
8-     set isNet472 to PRODUCT_VERSION = "4.7.2"  ^
9-     set isNet48 to PRODUCT_VERSION = "4.8"  ^
10-     set isNet481 to PRODUCT_VERSION = "4.8.1"  ^
11- 
122    set kbExists to VARIABLES[cat("kb|" , OS_VERSION_NUMBER, "|" , PRODUCT_VERSION)] != void ^
133    set is48SecurityRelease to (VARIABLES[cat("4.8-is-security-release|" , OS_VERSION_NUMBER)] = "true" ) ^
144
155    set apply35Patch to kbExists
16-         && isNet35 
17-         && !isServer2019 
18-         && !isServer2025  ^
6+         && PRODUCT_VERSION =  "3.5" 
7+         && OS_VERSION_NUMBER !=  "ltsc2019" 
8+         && OS_VERSION_NUMBER !=  "ltsc2025"  ^
199
20-     set applyPatch to kbExists 
21-         && !(isServer2019 && isNet472) 
22-         && !( 
23-                 (isServer2019 && isNet472) || 
10+     set applyPatch to VARIABLES[cat( "kb|" , OS_VERSION_NUMBER,  "|" , PRODUCT_VERSION)] != void && 
11+         !( 
12+             (OS_VERSION_NUMBER =  "ltsc2019"   && PRODUCT_VERSION =  "4.7.2" ) || 
13+             ( 
2414                (
25-                     (
26-                         (isNet48 && !isServer2019) ||
27-                         (isNet35 && !isServer2019)
28-                     ) &&
29-                     is48SecurityRelease
30-                 )
31-             ) ^
15+                     (PRODUCT_VERSION = "4.8"  && OS_VERSION_NUMBER != "ltsc2019" ) ||
16+                     (PRODUCT_VERSION = "3.5"  && OS_VERSION_NUMBER != "ltsc2019" )
17+                 ) &&
18+                 is48SecurityRelease
19+             )
20+         ) ^
3221
33-     set installNet35UsingWU to isServer2025  ^
22+     set installNet35UsingWU to OS_VERSION_NUMBER =  "ltsc2025"  ^
3423
3524    set winver to when(
36-         isServer2016 || isServer2019  || isServer2022 ,
25+         OS_VERSION_NUMBER =  "ltsc2019"  || OS_VERSION_NUMBER =  "ltsc2022" ,
3726        "windows10.0" ,
3827        "windows11.0" )
3928
@@ -51,7 +40,7 @@ if OS_VERSION_NUMBER != "ltsc2019" || PRODUCT_VERSION = "4.8" || PRODUCT_VERSION
5140    }}COMPLUS_NGenProtectedProcess_FeatureEnabled=0
5241
5342RUN  `
54- {{if isNet35  && installNet35UsingWU
43+ {{if PRODUCT_VERSION =  "3.5"  && installNet35UsingWU
5544:    # Install .NET Fx 3.5
5645    dism /Online /Add-Capability /CapabilityName:NetFx3 `
5746    `
6453    && del microsoft-windows-netfx3-ondemand-package~31bf3856ad364e35~amd64~~.cab `
6554    && powershell Remove-Item -Force -Recurse ${Env:TEMP}\*  `
6655    `
67- ^elif (OS_VERSION_NUMBER = "ltsc2019"  && PRODUCT_VERSION = "4.8" ) || (!isServer2025  && PRODUCT_VERSION = "4.8.1" )
56+ ^elif (OS_VERSION_NUMBER = "ltsc2019"  && PRODUCT_VERSION = "4.8" ) || (OS_VERSION_NUMBER !=  "ltsc2025"  && PRODUCT_VERSION = "4.8.1" )
6857:    # Install .NET Fx {{PRODUCT_VERSION}}
6958    curl -fSLo dotnet-framework-installer.exe {{VARIABLES[cat(PRODUCT_VERSION, "|url" )]}} `
7059    && .\d otnet-framework-installer.exe /q `
8675    && mkdir patch `
8776    && expand patch.msu patch -F:* `
8877    && del /F /Q patch.msu `
89-     && dism /Online /Quiet /Add-Package /PackagePath:C:\p atch\{ {winver}}-{{VARIABLES[cat("kb|" , OS_VERSION_NUMBER, "|" , when(PRODUCT_VERSION = "3.5" , "default" , PRODUCT_VERSION))]}}-x64{{if OS_VERSION_NUMBER != "ltsc2019"  || PRODUCT_VERSION = "4.8" :-ndp48}}{{if isServer2025  || isNet481 :1}}.cab `
78+     && dism /Online /Quiet /Add-Package /PackagePath:C:\p atch\{ {winver}}-{{VARIABLES[cat("kb|" , OS_VERSION_NUMBER, "|" , when(PRODUCT_VERSION = "3.5" , "default" , PRODUCT_VERSION))]}}-x64{{if OS_VERSION_NUMBER != "ltsc2019"  || PRODUCT_VERSION = "4.8" :-ndp48}}{{if OS_VERSION_NUMBER =  "ltsc2025"   || PRODUCT_VERSION =  "4.8.1" :1}}.cab `
9079    && rmdir /S /Q patch `
9180    `
9281}}{{if OS_VERSION_NUMBER = "ltsc2019"  && PRODUCT_VERSION = "3.5" 
9988:    # ngen .NET Fx
10089    {{if PRODUCT_VERSION != "4.7.2" :&& }}%windir%\M icrosoft.NET\F ramework64\v 4.0.30319\n gen uninstall "Microsoft.Tpm.Commands, Version=10.0.0.0, Culture=Neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=amd64"  `^    else
10190:    # Ngen top of assembly graph to optimize a set of frequently used assemblies
102-     {{if isNet35  || ((isNet48  && !is48SecurityRelease) || isNet481 ):&& }}%windir%\M icrosoft.NET\F ramework64\v 4.0.30319\n gen install "Microsoft.PowerShell.Utility.Activities, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"  `
91+     {{if PRODUCT_VERSION =  "3.5"   || ((PRODUCT_VERSION =  "4.8"   && !is48SecurityRelease) || PRODUCT_VERSION =  "4.8.1" ):&& }}%windir%\M icrosoft.NET\F ramework64\v 4.0.30319\n gen install "Microsoft.PowerShell.Utility.Activities, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"  `
10392    #  To optimize 32-bit assemblies, uncomment the next line
10493    #  && %windir%\Microsoft.NET\Framework\v4.0.30319\ngen install "Microsoft.PowerShell.Utility.Activities, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" `}}
10594    && %windir%\M icrosoft.NET\F ramework64\v 4.0.30319\n gen update `
0 commit comments