aisgbnok / provisioning Goto Github PK
View Code? Open in Web Editor NEWPersonal windows provisioning packages and documentation.
License: MIT License
Personal windows provisioning packages and documentation.
License: MIT License
Review packages and ensure they provide the best experience for Windows 11 23H2.
Microsoft-Desktop-Provisioning.dat
in 23H2 builds.Generating new CABs (Cabinet Files containing assets) for each package is somewhat redundant.
I'm not sure whether using the Split-WindowsImage
cmdlet or the Export-WindowsImage
cmdlet with the -SplitImageFilePattern
parameter is better. I need to test this and determine if there is any difference.
This is a dedicated cmdlet for splitting an image into .swm
files. However I'm unsure if it does any sort of optimization or cleanup like the Export-WindowsImage
cmdlet.
This cmdlet is for exporting images, and with the -SplitImageFilePattern
parameter it can create .swm
files. However it also explicitly states that it optimizes images during export:
You can also optimize an image by exporting to a new image file with Export-WindowsImage. When you modify an image, DISM stores additional resource files that increase the overall size of the image. Exporting the image will remove unnecessary resource files.
Source
I forget that Microsoft.549981C3F5F10_8wekyb3d8bbwe
is Cortana and have to look it up every year. It's in the commit log and a quick search brings it up, but documenting it somewhere would be helpful.
I have been wanting to explore a transition to WinGet configuration files instead of provisioning packages for a few months now. Now that WinGet 1.8 is launching in June with improved support and Dev Home is much more stable, let's see if this is feasible.
It is time to review the CreatePartitions
scripts. Specifically, the recovery sizes. Do they make sense for 2023-2024?
Here are some scripts I pulled from Surface Recovery Images. I usually use these are reference for determining what make sense. Given I have a Surface Laptop 3, I have outdated scripts. Unfortunately, you need a working serial number to pull them, so I went to Best Buy and grabbed the display unit's serial numbers 🤪🤫. These should be more up-to-date.
Surface Laptop Studio 2 (SurfaceLaptopStudio2_BMR_12010_2023.619.823
):
convert gpt
create partition efi size=260
format quick fs=fat32 label="System"
assign letter=S
create partition msr size=16
create partition primary
shrink minimum=1152
gpt attributes=0x0000000000000000
format quick fs=ntfs label="Local Disk"
assign letter=W
create partition primary size=1152
set id=DE94BBA4-06D1-4D40-A16A-BFD50179D6AC
gpt attributes=0x8000000000000001
format quick fs=ntfs label="Windows RE tools"
assign letter=T
rescan
exit
Add contributing guidelines to outline how and why to contribute towards this repository.
Add a README to this repository explaining the purpose of this repository and the provisioning packages.
Microsoft Docs is now a part of Microsoft Learn, it's basically a rebranding. Therefore all https://docs.microsoft.com/
links should be replaced with https://learn.microsoft.com/
.
The Microsoft.HEVCVideoExtension
was removed from all packages in pull request #63. However, the documentation for those packages was not updated to reflect this change. As a result, their documentation still lists Microsoft.HEVCVideoExtension
as software that will be installed.
These packages and commands use hard-coded full paths, instead of relative paths. You must have this repository cloned into the C:\provisioning\
directory because of this.
I'm not sure if ICD and Windows Provisioning accept relative paths. Need to look into this.
Hmmmmmm. The Terminal team has announced some significant changes to Terminal that I need to take some time to understand. I need to perform a few small experiments and then think about the best path forward for my current packages.
Upon first glance, it now seems there are a bunch of dependencies bundled with the Provisioning/Preinstall Kits that the Terminal team distributes. On top of that, there are now two kits and differences between Windows 11 and 10 Terminal installations. Previously there was a single kit and it just came with the msixbundle
.
Recently I have made lots of changes to make these packages Windows 11 first, but that does not mean ripping support for Windows 10. Some of these packages are literally only built to be used on Windows 10.
I have much more thinking to do, but so far I am considering a few options listed from most likely to least likely
Here are some experiments & questions I have to explore.
msixbundle
?The "Red Tape" for this project needs some love. The contributing guide specifically could use a rewrite and expansion. The original code of conduct was just taken from the Contributor Covenant, a more personalized code of conduct would be nice. Finally some small refinements to other areas like the license could be made.
Add a code of conduct to outline what kind of learning environment and community space this is.
The current Terminal configuration is outdated and needs to be updated. I would wait until the launch of Terminal 1.16
because a few default configurations are being changed. I might want to not use the default anymore, or use some new defaults.
Update copyright to 2022
Line 3 in b08c0ca
A lot of the included readmes and inline documentation has been getting some love lately. However the actual docs directory containing other documentation is falling behind. It doesn't seem very coherent and the formatting could be improved. It would be great to overhaul and consolidate the docs directory.
It seems that 11th gen Xe and up can actually use the newer Arc graphics drivers. Which should be better, I think?
Intel's graphics portfolio is diversifying and expanding and it seems its drivers are as well. The documentation needs to be updated to reflect this.
There used to be a single Intel Graphics Driver for 6th-12th gen processors from UHD to Xe graphics. Very simple. Within the past few months, there are now three distinct drivers for UHD to Xe 6th-11th gen, Xe and UHD for 12th gen, and most recently Arc graphics. (Welcome to the graphics industry Intel.) The documentation needs some clarification as to what driver is being used and when you should use a different driver.
Currently, you can't always tell the version of the software being installed by looking at the package configurations. We should explicitly state version numbers in the installer file names and package configurations.
While someone can just name the Chrome 81 installer Chrome 96, that issue is and will always be apparent. Adding explicit software versions to the package configs and installer filenames helps those properly using the packages understand what software is being installed by each package.
provisioning/packages/clean_setup/clean_setup_customizations.xml
Lines 35 to 42 in c820374
provisioning/packages/clean_setup/clean_setup_customizations.xml
Lines 43 to 50 in c820374
Explicitly add software versions to package configurations.
Software | Current Filename | New Filename |
---|---|---|
Edge | MicrosoftEdgeEnterpriseX64.msi |
MicrosoftEdgeEnterpriseX64-96.0.1054.53.msi |
PowerShell | PowerShell-7.2.0-win-x64.msi |
PowerShell-7.2.0-win-x64.msi |
OneDrive | OneDriveSetup.exe |
OneDriveSetup-21.230.1107.0004.exe |
Chrome | GoogleChromeStandaloneEnterprise64.msi |
GoogleChromeStandaloneEnterprise64-96.0.4664.93.msi |
... | [Filename].[Ext] |
[Filename]-[Version].[Ext] |
Moving forward these packages will be dropping support for Windows 10 and only support supported versions of Windows 11. This is easier for me and supporting Windows 10 was becoming a hassle. We are already a year into Windows 11's launch and it's adoption will only increase at a faster rate from here.
These packages housed in this project are largely for personal use and many of my personal devices are running Windows 11. In the next few months I plan on moving 90% of my devices and my family's devices to Windows 11. Continuing to support Windows 10 is no longer necessary and more of a burden. A large part of this is the significant change in Windows Terminal behavior as noted in #27.
I think it is time to remove packages that I no longer use very often. This will help improve maintainability.
Additionally, I plan on separating out the CleanSetup
package to further improve maintainability and transitioning this repository towards Winget configurations.
Chrome 98 will be released today. Needs bumped upon release.
I think I should include the VMware Tools installer in the Virtual Machine Core package. I have to always install VMware Tools manually and having it automatically installed during/before OOBE would be nice.
The only main issue is that VMware Tools is only for VMware virtual machines. That means the Virtual Machine Core package would become less universal and only work in VMware Products without modification. The package size will also increase by ~70MB as well.
The Custom-Assets.bat
scripts are very simple which is good and bad. However, I feel I quickly threw something together that just gets the job done. The current implementation has many drawbacks and these scripts should be updated and expanded.
As part of a larger effort #31, the package asset scripts need a refresh. Quickly glancing over them, I fear that they may overwrite the user's terminal settings if the settings.json
already exists in their user directory.
Microsoft.HEVCVideoExtension
is now included by default in Windows 11 22H2, and therefore it can be removed from the provisioning packages.
Looking at insider build 22621
from May it seems that Microsoft.HEVCVideoExtension
is now included by default in Windows. That is nice, if this makes it to stable. Previously you had to pay for the HEVC extension, or sideload the free manufacturer only version which is the one listed above.
Store Extension | Package | Price |
---|---|---|
HEVC Video Extensions | Microsoft.HEVCVideoExtensions |
$0.99 |
HEVC Video Extensions from Device Manufacturer | Microsoft.HEVCVideoExtension |
Free |
Notice the omission of the s
, in the free and now included package name.
Originally posted by @aisgbnok in #30 (comment)
Packages can be installed during OOBE (initial setup) or right from a user profile (after setup). There are some important distinctions that need to be made depending on which scenario the package is installed.
settings.json
into the default user directory.Align provisioning package versions to improve understandability. They all use the same sources/assets so it makes more sense to keep the versions aligned. This way it is easier to know that they were all compiled using the same assets (i.e., same chrome, edge, intel, etc. versions).
Package Name | Old Version | Aligned Version |
---|---|---|
Clean Setup | 3.123 |
3.140 |
NetLab Core | 1.013 |
3.140 |
Terminal | 1.033 |
3.140 |
Terminal+ | 1.033 |
3.140 |
Virtual Machine Core | 1.043 |
3.140 |
I have decided for simplicity and understandability to align all package versions under this repository. Now it is easy to understand that all packages with a version of X.XXX
are compiled from the same sources (i.e., they both install the same version of chrome, edge, PowerShellCore, etc.).
A package's version will only be modified if the package was updated, so there may be version jumps.
Clean Setup contains intel drivers, whereas the other packages do not. If intel drivers get updated then Clean Setup will be updated and it's version will increase. (For the purposes of this example lets say it increases to 3.150
) However, all of the other packages won't have their version increased. (They stay on 3.140
).
Later Chrome gets updated and all packages that install Chrome are updated. Their version number will then go to the newest version number plus some. (Every package that installs Chrome will be given version 3.151
.)
In effect, the version number acts as the main version number for all of the packages while not all of the packages are included with each version bump/release.
The new PowerShell that these packages install is technically called PowerShellCore, but I'm not sure if it should be simplified to just PowerShell. There are references to both PowerShellCore and PowerShell throughout the installers, documentation, etc.
To improve maintainability, I think it is time to consolidate packages. This means removing packages that are no longer used.
Review packages and ensure they provide the best experience for Windows 11 22H2.
Some software like drivers are large (500mb+), and not included in this repo.
Something needs to be done to improve this experience. Whether it is simply updating the documentation to better inform users of this, adding scripts or steps to download necessary files, etc.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.