I used to play server core board + GUL, and I haven't played for a long time. The 19041 server version was deleted early.
I have just made a BIG discovery for myself. As far as I know, previously, we had ONE (same) LCU for both Server and Client 1904x And for 1165 as usual I took the PSF from Windows10.0-KB5005033-x64-baseless.psf from Windows 10 19043. Assuming it's the same for Server 20H1 But let's look into WindowsUpdate: For client I have 593MB: 2021-08 Dynamic Cumulative Update for Windows 10 Version 21H1 for x64-based Systems (KB5005033)\all-windows10.0-kb5005033-x64_ccf8380bde085933ab8d3683f1de4bfbd550c0a0.cab For server I have 609MB: 2021-08 Cumulative Update for Windows Server, version 2004 for x64-based Systems (KB5005033)\AMD64-all-windows10.0-kb5005033-x64_ebab415d7a65f0b33f93e9a30875d74baa8930a7.cab 10MB difference in CAB. Where to get PSF?
LCU A: Dynamic Cumulative Update for Windows 10 (CAB) windows10.0-kb5005033-x64_ccf8380bde085933ab8d3683f1de4bfbd550c0a0.cab --> Windows10.0-KB5005033-x64.cab sha1: CCF8380BDE085933AB8D3683F1DE4BFBD550C0A0 LCU B: Cumulative Update for Windows Server (MSU) windows10.0-kb5005033-x64_ebab415d7a65f0b33f93e9a30875d74baa8930a7.msu --> Windows10.0-KB5005033-x64.cab sha1: CCF8380BDE085933AB8D3683F1DE4BFBD550C0A0
This package is for Edition ID. ServerDatacenterACor Code: <registryKeys> <registryKey keyName="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion"> <registryValue name="ProductName" valueType="REG_SZ" value="Windows Server Datacenter" /> <registryValue name="EditionID" valueType="REG_SZ" value="ServerDatacenterACor" /> <registryValue name="CompositionEditionID" valueType="REG_SZ" value="ServerDatacenterACor" /> </registryKey> <registryKey keyName="HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion"> <registryValue name="ProductName" valueType="REG_SZ" value="Windows Server Datacenter" /> <registryValue name="EditionID" valueType="REG_SZ" value="ServerDatacenterACor" /> <registryValue name="CompositionEditionID" valueType="REG_SZ" value="ServerDatacenterACor" /> </registryKey> </registryKeys>
SAC (Semi Annual Channel) versions of Windows Server (aka WS 2004,WS 20H2, WS21H1 & WS21H2) would not continue in future in favor to AzureStackHCICor which would still be released twice a year
Q: Why does Microsoft create such a package? Microsoft-Windows-Hotpatch-Targeting-Gated-Package~31bf3856ad364e35~amd64~~10.0.20348.169 Code: <?xml version="1.0" encoding="utf-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v3" manifestVersion="1.0" copyright="Copyright (c) Microsoft Corporation. All Rights Reserved."> <assemblyIdentity name="Microsoft-Windows-Hotpatch-Targeting-Gated-Package" version="10.0.20348.169" processorArchitecture="amd64" language="neutral" buildType="release" publicKeyToken="31bf3856ad364e35" /> <package identifier="Microsoft-Windows-Hotpatch-Targeting-Gated" releaseType="Feature Pack"> <parent integrate="delegate"> <assemblyIdentity name="Microsoft-Windows-Hotpatch-Enrollment-Package" version="10.0.20348.0" processorArchitecture="amd64" language="neutral" buildType="release" publicKeyToken="31bf3856ad364e35" /> </parent> <update name="Microsoft-Windows-Hotpatch-Targeting"> <package contained="false" integrate="hidden"> <assemblyIdentity name="Microsoft-Windows-Hotpatch-Targeting-Package" version="10.0.20348.169" processorArchitecture="amd64" language="neutral" buildType="release" publicKeyToken="31bf3856ad364e35" /> </package> </update> </package> </assembly>
It was discovered before that, without "Microsoft-Windows-Hotpatch-Targeting-Gated-Package", "Microsoft-Windows-EditionPack-ServerTurbine-Package" cannot be installed, and its sub-package is "Microsoft-Windows-Hotpatch-Targeting-Package", which is installed by Deployment A registry file, the others did not find any other functions. Code: <?xml version="1.0" encoding="utf-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v3" manifestVersion="1.0" copyright="Copyright (c) Microsoft Corporation. All Rights Reserved."> <assemblyIdentity name="Microsoft-Windows-HotpatchTargeting-ServerOS" version="10.0.20348.143" processorArchitecture="amd64" language="neutral" buildType="release" publicKeyToken="31bf3856ad364e35" versionScope="nonSxS" /> <registryKeys> <registryKey keyName="HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Update\TargetingInfo\DynamicInstalled\Hotpatch.amd64"> <registryValue name="Version" valueType="REG_SZ" value="10.0.20348.143" /> <registryValue name="Name" valueType="REG_SZ" value="Hotpatch Product" /> <securityDescriptor name="WRP_REGKEY_DYNAMIC_INSTALLED_SDDL" /> </registryKey> </registryKeys> <trustInfo> <security> <accessControl> <securityDescriptorDefinitions> <securityDescriptorDefinition name="WRP_REGKEY_DYNAMIC_INSTALLED_SDDL" sddl="O:SYG:SYD:P(A;CI;KA;;;S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464)(A;CI;KRKWSD;;;SY)(A;CI;KRKWSD;;;BA)(A;CI;KR;;;BU)(A;CI;KR;;;S-1-15-2-1)" operationHint="replace" /> </securityDescriptorDefinitions> </accessControl> </security> </trustInfo> </assembly>
Q: Where to find this "20348.0" package in Server 2022 "20348.1"? Code: <parent integrate="delegate"> <assemblyIdentity name="Microsoft-Windows-Hotpatch-Enrollment-Package" version="10.0.20348.0" processorArchitecture="amd64" language="neutral" buildType="release" publicKeyToken="31bf3856ad364e35" /> </parent>
Q1: How does LCU update builds from 10240.16384 to 17763.1? A1: It detects package registered in the following registry key. No matter real or fake. Code: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing Q2: Can I remove unwanted packages from LTSC? A2: According to aforementioned statement, it depends on the build, for all SKUs. 17763 LTSC = OK 19044 LTSC = NOT OK Q3: Why the 17763.1 LTSC System Apps being removed are recovered by LCU? A3: Because, usually, System Apps, in C:\Windows\SystemApps, are made of System Packages which are supported by LCU. Windows Apps, in C:\Program Files\WindowsApps, are supported by Store. Yes, Microsoft can make any App in any format. i.e. Windows Apps can be System Packages too, or combo. Q: What about Capabilities? A: Capabilities are FOD (Feature On Demand), in Package format. Therefore, it can be installed\removed in two ways: 1. Capability command. 2. Regular package command Q: What controls FOD Capability package? A: FOD Capability package is controlled by an FOD package called Microsoft-Windows-FodMetadata-Package, which is NOT defiend in any System package. i.e. It is an add-on package, alike other FOD Capability packages, installed manually by Microsoft. PS. After Microsoft-Windows-FodMetadata-Package is installed, it is registered as a Child-package of Microsoft-Windows-Client-Features-Package. This is why FOD packages can be ported from source image to reconstructed new image.
[FYI] When this package appeared in 22000 LCU, Microsoft-Windows-ContainerOSPlusEdition can be reconstructed. Code: Windows-ContainerOSPlus-EditionOnly-WOW64-Package PS. It is missing in other builds too.
There is no obvious difference between the self-made 20348 IOTEnterpriseS and 19044 IOTEnterpriseS. Spoiler
19044 Windows 10 Enterprise LTSC 2019 Windows 10 IoT Enterprise LTSC 2021 Your 20348 Windows 10 Enterprise LTSC 2019 Windows 10 IoT Enterprise LTSC 2019 (Really?) Q1: Which build of language? Q2: How is the language added, CopyPaste or installed? Q3: Reconstructed or Manually made? (Oh, it must be Manually made because you said you don't know script. Unless you've learned to customized language pack.)
Single client 20348 IOTEnterpriseS, using Microsoft-Windows-EnterpriseS-SPP-Components-Package-amd64-10.0.19041.1151 certificate, 20279 Chinese language pack. Branding is replaced by 19041.1165 IOTEnterpriseS, which also displays Windows 10 IoT Enterprise LTSC 2019. With the 20279 language pack, there are still some incompatibility. When the function is enabled, it prompts that the certificate has expired and the function fails to be added.
Modifying the language pack is still more troublesome, modify the installation like this. I don't know how to make changes in batches, it is too troublesome to manually. Code: <?xml version="1.0" encoding="utf-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v3" manifestVersion="1.0" copyright="Copyright (c) Microsoft Corporation. All Rights Reserved."> <assemblyIdentity name="Microsoft-Windows-Editions-EnterpriseS-Package" version="10.0.20279.1" processorArchitecture="amd64" language="zh-CN" buildType="release" publicKeyToken="31bf3856ad364e35" /> <package identifier="Microsoft-Windows-Editions-EnterpriseS-Package" releaseType="Language Pack"> <parent disposition="detect" integrate="separate"> <assemblyIdentity name="Microsoft-Windows-Editions-EnterpriseS-Package" version="10.0.20348.1" processorArchitecture="amd64" language="neutral" buildType="release" publicKeyToken="31bf3856ad364e35" /> </parent> <update name="Microsoft-Windows-Editions-EnterpriseS-Package"> <component> <assemblyIdentity name="Microsoft-Windows-Editions-EnterpriseS-Deployment-LanguagePack" version="10.0.20279.1" processorArchitecture="amd64" language="zh-CN" buildType="release" publicKeyToken="31bf3856ad364e35" versionScope="nonSxS" /> </component> </update> </package> </assembly>
Rename 20348 IOTEnterpriseS Branding and replace it with 19041.1165 IoTEnterpriseS Branding.(C:\Windows\Branding)