From 98fdb8ee597754d60c8bc29fdda557ffc1feb614 Mon Sep 17 00:00:00 2001 From: "Michael H.G. Schmidt" Date: Tue, 16 Mar 2021 23:23:06 +0100 Subject: [PATCH] automated process of custom image creation --- source/allpull.pb | 4 +- source/installwarning.pb | 53 +++++++++++ source/setbgcol.pb | 4 +- wim/.gitignore | 2 + wim/export-image.cmd | 8 +- wim/finish-boot.cmd | 18 ++++ wim/finish-image.cmd | 30 ++++--- wim/installwarning.exe | Bin 0 -> 59392 bytes wim/make-all.cmd | 36 ++++++++ wim/mount-boot.cmd | 13 +++ wim/mount-image.cmd | 10 +-- wim/remove-apps.cmd | 49 ++-------- wim/remove-packages.cmd | 189 ++------------------------------------- wim/umount-all.cmd | 13 +++ wim/umount-image.cmd | 10 --- 15 files changed, 184 insertions(+), 255 deletions(-) create mode 100644 source/installwarning.pb create mode 100644 wim/finish-boot.cmd create mode 100644 wim/installwarning.exe create mode 100644 wim/make-all.cmd create mode 100644 wim/mount-boot.cmd create mode 100644 wim/umount-all.cmd delete mode 100644 wim/umount-image.cmd diff --git a/source/allpull.pb b/source/allpull.pb index 7314c31..09f6fc7 100644 --- a/source/allpull.pb +++ b/source/allpull.pb @@ -97,9 +97,9 @@ EndProcedure allpull(ProgramParameter(0)) CloseConsole() -; IDE Options = PureBasic 5.62 (Windows - x64) +; IDE Options = PureBasic 5.73 LTS (Windows - x64) ; ExecutableFormat = Console -; CursorPosition = 16 +; CursorPosition = 18 ; Folding = - ; Executable = C:\TEMP\allpull.exe ; DisableDebugger \ No newline at end of file diff --git a/source/installwarning.pb b/source/installwarning.pb new file mode 100644 index 0000000..3e2c925 --- /dev/null +++ b/source/installwarning.pb @@ -0,0 +1,53 @@ +; installwarning.pb +; ------------------------------------------------------------ +; shows a warning when starting the install process +; LICENSE : GPL +; AUTHOR : Michael H.G. Schmidt +; EMAIL : michael@schmidt2.de +; DATE : 20210315 +; ------------------------------------------------------------ +; + +dummy$ = "" + +; preparations to use native "system" command... +ImportC "msvcrt.lib" + system(str.p-ascii) +EndImport + +Result = MessageRequester("+++ Windows 10 unattended Installation +++", + "This will install a new OS (unattended)" + Chr(13) + + "and it will DELETE all DATA an your [ C: ] Drive!", + #PB_MessageRequester_YesNo | #PB_MessageRequester_Info) + +If Result = #PB_MessageRequester_Yes + + Result = MessageRequester("Caution !", + "LAST WARNING:" + Chr(13) + + "REALLY DELETE ALL Data on DRIVE [ C: ] ?", + #PB_MessageRequester_YesNo | #PB_MessageRequester_Warning) + + ; start installation ... + If Result = #PB_MessageRequester_Yes + dummy=system("x:\winsetup.exe") + End 0 + EndIf + +EndIf + +; show abort message ... +OpenWindow(0, 0, 0, 270, 70, "Installation ABORTED", + #PB_Window_SystemMenu | #PB_Window_ScreenCentered) + +If LoadFont(0, "System", 10) + SetGadgetFont(#PB_Default, FontID(0)) +EndIf + +TextGadget(0, 0, 20, 270, 30, "Please POWEROFF your system now!", #PB_Text_Center) + +; wait forever (window cannot be closed by user) ... +Repeat : Until WaitWindowEvent() = True + +; IDE Options = PureBasic 5.73 LTS (Windows - x64) +; CursorPosition = 32 +; EnableXP \ No newline at end of file diff --git a/source/setbgcol.pb b/source/setbgcol.pb index 111231a..8ed1399 100644 --- a/source/setbgcol.pb +++ b/source/setbgcol.pb @@ -4,7 +4,7 @@ ; LICENSE : GPL ; AUTHOR : Michael H.G. Schmidt ; EMAIL : michael@schmidt2.de -; DATE : 20190524 +; DATE : 20210315 ; ------------------------------------------------------------ ; @@ -40,5 +40,5 @@ SetSysColors_(1,@lpaElements(),@lpaRgbValues(0)) CloseConsole() ; IDE Options = PureBasic 5.73 LTS (Windows - x64) -; CursorPosition = 35 +; CursorPosition = 6 ; EnableXP \ No newline at end of file diff --git a/wim/.gitignore b/wim/.gitignore index 3aa7156..7749d88 100644 --- a/wim/.gitignore +++ b/wim/.gitignore @@ -5,3 +5,5 @@ *.dll *.txt *.BAK +!installwarning.exe + diff --git a/wim/export-image.cmd b/wim/export-image.cmd index 722d481..03fc3f6 100644 --- a/wim/export-image.cmd +++ b/wim/export-image.cmd @@ -1,10 +1,16 @@ @echo off set SOURCES=c:\TEMP\W10\sources +if NOT EXIST %SOURCES%\install.esd ( + echo. + echo [%0] ERROR: %SOURCES%\install.esd NOT found! + exit /b +) + echo deleting old install.wim ... del %SOURCES%\install.wim 1>nul 2>nul -echo exporting WIM image from %SOURCES%\install.esd ... +echo exporting image from %SOURCES%\install.esd ... dism /Export-Image ^ /SourceImageFile:%SOURCES%\install.esd ^ /DestinationImageFile:%SOURCES%\install.wim ^ diff --git a/wim/finish-boot.cmd b/wim/finish-boot.cmd new file mode 100644 index 0000000..ad35ab9 --- /dev/null +++ b/wim/finish-boot.cmd @@ -0,0 +1,18 @@ +@echo off +set SOURCES=c:\TEMP\W10\sources +set BOOT=c:\TEMP\BOOT + +echo renaming Windows setup.exe ... +if NOT EXIST %BOOT%\winsetup.exe ( + move /Y %BOOT%\setup.exe %BOOT%\winsetup.exe +) + +echo copy install utility to boot ... +copy /Y installwarning.exe %BOOT%\setup.exe + +echo unmounting and committing changes to %SOURCES%\boot.wim ... +dism /Unmount-Wim /MountDir:%BOOT% /Commit + +echo directory of %BOOT% : +dir %BOOT% + diff --git a/wim/finish-image.cmd b/wim/finish-image.cmd index 4a95c01..8a79ab6 100644 --- a/wim/finish-image.cmd +++ b/wim/finish-image.cmd @@ -1,28 +1,34 @@ @echo off set SOURCES=c:\TEMP\W10\sources -set MNT=c:\TEMP\WIM +set IMAGE=c:\TEMP\IMAGE -rd /S /Q %MNT%\Windows\Setup\scripts 1>nul 2>nul -mkdir %MNT%\Windows\Setup\scripts 1>nul 2>nul +if NOT EXIST %SOURCES%\install.wim ( + echo. + echo [%0] ERROR: %SOURCES%\install.wim NOT found! + exit /b +) -echo copying scripts to %MNT%\Windows\Setup\scripts ... -copy /Y SetupComplete.cmd %MNT%\Windows\Setup\scripts +rd /S /Q %IMAGE%\Windows\Setup\scripts 1>nul 2>nul +mkdir %IMAGE%\Windows\Setup\scripts 1>nul 2>nul + +echo copying scripts to %IMAGE%\Windows\Setup\scripts ... +copy /Y SetupComplete.cmd %IMAGE%\Windows\Setup\scripts if %errorlevel% neq 0 exit /b %errorlevel% -copy /Y StartCustomSetup.cmd %MNT%\Windows\Setup\scripts +copy /Y StartCustomSetup.cmd %IMAGE%\Windows\Setup\scripts if %errorlevel% neq 0 exit /b %errorlevel% echo showing directory contents : -dir %MNT%\Windows\Setup\scripts +dir %IMAGE%\Windows\Setup\scripts -echo doing cleanup on mountpoint %MNT% ... -dism /Image:%MNT% /Cleanup-Image /StartComponentCleanup /ResetBase +echo doing cleanup on mountpoint %IMAGE% ... +dism /Image:%IMAGE% /Cleanup-Image /StartComponentCleanup /ResetBase echo unmounting and committing changes to %SOURCES%\install.wim ... -dism /Unmount-Wim /MountDir:%MNT% /Commit +dism /Unmount-Wim /MountDir:%IMAGE% /Commit -echo directory of %MNT% : -dir %MNT% +echo directory of %IMAGE% : +dir %IMAGE% echo exporting %SOURCES%\install.wim to %SOURCES%\install_FINAL.esd ... dism /Export-Image ^ diff --git a/wim/installwarning.exe b/wim/installwarning.exe new file mode 100644 index 0000000000000000000000000000000000000000..f1115db0244f5af7125cad775d1368eead501818 GIT binary patch literal 59392 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 literal 0 HcmV?d00001 diff --git a/wim/make-all.cmd b/wim/make-all.cmd new file mode 100644 index 0000000..76f684b --- /dev/null +++ b/wim/make-all.cmd @@ -0,0 +1,36 @@ +@echo off +clear + +echo ===== +echo START +echo ===== +date /t +time /t +echo. + +for %%S in ( + + mount-boot.cmd + finish-boot.cmd + + export-image.cmd + mount-image.cmd + remove-apps.cmd + remove-packages.cmd + finish-image.cmd + +) do ( + + echo ########## calling [ %%S ] ########## + call %%S + echo. + +) + +echo. +date /t +time /t +echo ===== +echo END +echo ===== + diff --git a/wim/mount-boot.cmd b/wim/mount-boot.cmd new file mode 100644 index 0000000..17ca3ba --- /dev/null +++ b/wim/mount-boot.cmd @@ -0,0 +1,13 @@ +@echo off +set SOURCES=c:\TEMP\W10\sources +set BOOT=c:\TEMP\BOOT + +echo creating wim mountpoint for BOOT ... +mkdir %BOOT% 1>nul 2>nul + +echo set write access for boot.wim .. +attrib -R %SOURCES%\boot.wim + +echo mounting boot.wim to %BOOT% ... +dism /Mount-Wim /WimFile:%SOURCES%\boot.wim /Name:"Microsoft Windows Setup (x64)" /MountDir:%BOOT% + diff --git a/wim/mount-image.cmd b/wim/mount-image.cmd index c96ad3e..248eb12 100644 --- a/wim/mount-image.cmd +++ b/wim/mount-image.cmd @@ -1,10 +1,10 @@ @echo off set SOURCES=c:\TEMP\W10\sources -set MNT=c:\TEMP\WIM +set IMAGE=c:\TEMP\IMAGE -echo creating wim mountpoint ... -mkdir %MNT% 1>nul 2>nul +echo creating image mountpoint ... +mkdir %IMAGE% 1>nul 2>nul -echo mounting install.wim to %MNT% ... -dism /Mount-Wim /WimFile:%SOURCES%\install.wim /Name:"Windows 10 Pro" /MountDir:%MNT% +echo mounting install.IMAGE to %IMAGE% ... +dism /Mount-IMAGE /IMAGEFile:%SOURCES%\install.wim /Name:"Windows 10 Pro" /MountDir:%IMAGE% diff --git a/wim/remove-apps.cmd b/wim/remove-apps.cmd index 3c990be..37a92e0 100644 --- a/wim/remove-apps.cmd +++ b/wim/remove-apps.cmd @@ -1,53 +1,18 @@ @echo off -set MNT=c:\TEMP\WIM +set IMAGE=c:\TEMP\IMAGE echo exporting APPS list BEFORE doing any changes ... -dism /Image:%MNT% /Get-ProvisionedAppxPackages 1>Apps-BEFORE.txt +dism /Image:%IMAGE% /Get-ProvisionedAppxPackages 1>Apps-BEFORE.txt -@echo on +FOR /F %%P in (apps-to-remove.txt) do ( -dism /Image:%MNT% /Remove-ProvisionedAppxPackage /PackageName:Microsoft.549981C3F5F10_1.1911.21713.0_neutral_~_8wekyb3d8bbwe -dism /Image:%MNT% /Remove-ProvisionedAppxPackage /PackageName:Microsoft.BingWeather_4.25.20211.0_neutral_~_8wekyb3d8bbwe -dism /Image:%MNT% /Remove-ProvisionedAppxPackage /PackageName:Microsoft.DesktopAppInstaller_2019.125.2243.0_neutral_~_8wekyb3d8bbwe -dism /Image:%MNT% /Remove-ProvisionedAppxPackage /PackageName:Microsoft.GetHelp_10.1706.13331.0_neutral_~_8wekyb3d8bbwe -dism /Image:%MNT% /Remove-ProvisionedAppxPackage /PackageName:Microsoft.Getstarted_8.2.22942.0_neutral_~_8wekyb3d8bbwe -dism /Image:%MNT% /Remove-ProvisionedAppxPackage /PackageName:Microsoft.HEIFImageExtension_1.0.22742.0_x64__8wekyb3d8bbwe -dism /Image:%MNT% /Remove-ProvisionedAppxPackage /PackageName:Microsoft.Microsoft3DViewer_6.1908.2042.0_neutral_~_8wekyb3d8bbwe -dism /Image:%MNT% /Remove-ProvisionedAppxPackage /PackageName:Microsoft.MicrosoftEdge.Stable_84.0.522.52_neutral__8wekyb3d8bbwe -dism /Image:%MNT% /Remove-ProvisionedAppxPackage /PackageName:Microsoft.MicrosoftOfficeHub_18.1903.1152.0_neutral_~_8wekyb3d8bbwe -dism /Image:%MNT% /Remove-ProvisionedAppxPackage /PackageName:Microsoft.MicrosoftSolitaireCollection_4.4.8204.0_neutral_~_8wekyb3d8bbwe -dism /Image:%MNT% /Remove-ProvisionedAppxPackage /PackageName:Microsoft.MicrosoftStickyNotes_3.6.73.0_neutral_~_8wekyb3d8bbwe -dism /Image:%MNT% /Remove-ProvisionedAppxPackage /PackageName:Microsoft.MixedReality.Portal_2000.19081.1301.0_neutral_~_8wekyb3d8bbwe -dism /Image:%MNT% /Remove-ProvisionedAppxPackage /PackageName:Microsoft.MSPaint_2019.729.2301.0_neutral_~_8wekyb3d8bbwe -dism /Image:%MNT% /Remove-ProvisionedAppxPackage /PackageName:Microsoft.Office.OneNote_16001.12026.20112.0_neutral_~_8wekyb3d8bbwe -dism /Image:%MNT% /Remove-ProvisionedAppxPackage /PackageName:Microsoft.People_2019.305.632.0_neutral_~_8wekyb3d8bbwe -dism /Image:%MNT% /Remove-ProvisionedAppxPackage /PackageName:Microsoft.ScreenSketch_2019.904.1644.0_neutral_~_8wekyb3d8bbwe -dism /Image:%MNT% /Remove-ProvisionedAppxPackage /PackageName:Microsoft.SkypeApp_14.53.77.0_neutral_~_kzf8qxf38zg5c -dism /Image:%MNT% /Remove-ProvisionedAppxPackage /PackageName:Microsoft.VP9VideoExtensions_1.0.22681.0_x64__8wekyb3d8bbwe -dism /Image:%MNT% /Remove-ProvisionedAppxPackage /PackageName:Microsoft.Wallet_2.4.18324.0_neutral_~_8wekyb3d8bbwe -dism /Image:%MNT% /Remove-ProvisionedAppxPackage /PackageName:Microsoft.WebMediaExtensions_1.0.20875.0_neutral_~_8wekyb3d8bbwe -dism /Image:%MNT% /Remove-ProvisionedAppxPackage /PackageName:Microsoft.WebpImageExtension_1.0.22753.0_x64__8wekyb3d8bbwe -dism /Image:%MNT% /Remove-ProvisionedAppxPackage /PackageName:Microsoft.Windows.Photos_2019.19071.12548.0_neutral_~_8wekyb3d8bbwe -dism /Image:%MNT% /Remove-ProvisionedAppxPackage /PackageName:Microsoft.WindowsAlarms_2019.807.41.0_neutral_~_8wekyb3d8bbwe -dism /Image:%MNT% /Remove-ProvisionedAppxPackage /PackageName:Microsoft.WindowsCamera_2018.826.98.0_neutral_~_8wekyb3d8bbwe -dism /Image:%MNT% /Remove-ProvisionedAppxPackage /PackageName:microsoft.windowscommunicationsapps_16005.11629.20316.0_neutral_~_8wekyb3d8bbwe -dism /Image:%MNT% /Remove-ProvisionedAppxPackage /PackageName:Microsoft.WindowsFeedbackHub_2019.1111.2029.0_neutral_~_8wekyb3d8bbwe -dism /Image:%MNT% /Remove-ProvisionedAppxPackage /PackageName:Microsoft.WindowsMaps_2019.716.2316.0_neutral_~_8wekyb3d8bbwe -dism /Image:%MNT% /Remove-ProvisionedAppxPackage /PackageName:Microsoft.WindowsSoundRecorder_2019.716.2313.0_neutral_~_8wekyb3d8bbwe -dism /Image:%MNT% /Remove-ProvisionedAppxPackage /PackageName:Microsoft.Xbox.TCUI_1.23.28002.0_neutral_~_8wekyb3d8bbwe -dism /Image:%MNT% /Remove-ProvisionedAppxPackage /PackageName:Microsoft.XboxApp_48.49.31001.0_neutral_~_8wekyb3d8bbwe -dism /Image:%MNT% /Remove-ProvisionedAppxPackage /PackageName:Microsoft.XboxGameOverlay_1.46.11001.0_neutral_~_8wekyb3d8bbwe -dism /Image:%MNT% /Remove-ProvisionedAppxPackage /PackageName:Microsoft.XboxGamingOverlay_2.34.28001.0_neutral_~_8wekyb3d8bbwe -dism /Image:%MNT% /Remove-ProvisionedAppxPackage /PackageName:Microsoft.XboxIdentityProvider_12.50.6001.0_neutral_~_8wekyb3d8bbwe -dism /Image:%MNT% /Remove-ProvisionedAppxPackage /PackageName:Microsoft.XboxSpeechToTextOverlay_1.17.29001.0_neutral_~_8wekyb3d8bbwe -dism /Image:%MNT% /Remove-ProvisionedAppxPackage /PackageName:Microsoft.YourPhone_2019.430.2026.0_neutral_~_8wekyb3d8bbwe -dism /Image:%MNT% /Remove-ProvisionedAppxPackage /PackageName:Microsoft.ZuneMusic_2019.19071.19011.0_neutral_~_8wekyb3d8bbwe -dism /Image:%MNT% /Remove-ProvisionedAppxPackage /PackageName:Microsoft.ZuneVideo_2019.19071.19011.0_neutral_~_8wekyb3d8bbwe + echo removing APPX package [ Microsoft.%%P ] + dism /Image:%IMAGE% /Remove-ProvisionedAppxPackage /PackageName:Microsoft.%%P -@echo off +) echo exporting remaining APPS list ... -dism /Image:%MNT% /Get-ProvisionedAppxPackages 1>Apps-AFTER.txt +dism /Image:%IMAGE% /Get-ProvisionedAppxPackages 1>Apps-AFTER.txt rem showing packages ... dir Apps*.txt diff --git a/wim/remove-packages.cmd b/wim/remove-packages.cmd index 9a2b46f..28fde0e 100644 --- a/wim/remove-packages.cmd +++ b/wim/remove-packages.cmd @@ -1,194 +1,21 @@ @echo off -set MNT=c:\TEMP\WIM +set IMAGE=c:\TEMP\IMAGE rem the CHECKFILE is a file that will be monitored against deletion ... -set CHECKFILE=%MNT%\Windows\SysWOW64\mf.dll +set CHECKFILE=%IMAGE%\Windows\SysWOW64\mf.dll echo exporting PACKAGE list BEFORE doing any changes ... -install_wim_tweak /p %MNT% /l +install_wim_tweak /p %IMAGE% /l move /Y Packages.txt Packages-BEFORE.txt rem ################################### rem MAIN loop ( remove packages ) ... rem ################################### -for %%P in ( +FOR /F %%P in (packages-to-remove.txt) do ( - Adobe-Flash - Containers-ApplicationGuard - Containers-Client - Containers-DisposableClientVM - Containers-Guest-Gated - Containers-OptionalFeature - Containers-Server - DeviceAccess - HyperV - LanguageFeatures-WordBreaking - Media-FaceAnalysis - Media-Ocr - Microsoft-Composable-PlatformExtension - Microsoft-Hyper-V - Microsoft-IoTUAP-ShellExt-Tools - Microsoft-Mobile - Microsoft-PPIProjection - Microsoft-UtilityVM - Microsoft-Windows-3DAudio - Microsoft-Windows-ApiSetSchemaExtension-HyperV - Microsoft-Windows-AppCompat - Microsoft-Windows-AppManagement - Microsoft-Windows-AppServerClient - Microsoft-Windows-Backup - Microsoft-Windows-Basic-Http-Minio - Microsoft-Windows-BioEnrollment - Microsoft-Windows-BITS - Microsoft-Windows-Branding-Enterprise - Microsoft-Windows-Browser - Microsoft-Windows-BusinessScanning - Microsoft-Windows-Casting - Microsoft-Windows-Client-AssignedAccess - Microsoft-Windows-Client-EmbeddedExp - Microsoft-Windows-Client-Optional-Features - Microsoft-Windows-Client-ShellLauncher - Microsoft-Windows-Common-Modem - Microsoft-Windows-COM-MSMQ - Microsoft-Windows-Compression - Microsoft-Windows-ContactSupport - Microsoft-Windows-ContentDeliveryManager - Microsoft-Windows-CoreSystem-DebugTransports - Microsoft-Windows-Cortana - Microsoft-Windows-DataCenterBridging - Microsoft-Windows-DeviceSync - Microsoft-Windows-DirectoryServices - Microsoft-Windows-EnterpriseClientSync - Microsoft-Windows-FodMetadata - Microsoft-Windows-Geolocation - Microsoft-Windows-Hello-Face - Microsoft-Windows-Help - Microsoft-Windows-HVSI-Components - Microsoft-Windows-HyperV-OptionalFeature-HypervisorPlatform - Microsoft-Windows-HyperV-OptionalFeature-VirtualMachinePlatform - Microsoft-Windows-Identity-Foundation - Microsoft-Windows-IIS-WebServer - Microsoft-Windows-International - Microsoft-Windows-InternetExplorer - Microsoft-Windows-Internet - Microsoft-Windows-Killbits - Microsoft-Windows-LanguageEnablingComponents - Microsoft-Windows-LanguageFeatures - Microsoft-Windows-Legacy - Microsoft-Windows-Links - Microsoft-Windows-Lxss - Microsoft-Windows-Management-SecureAssessment - Microsoft-Windows-Migration - Microsoft-Windows-MiracastView - Microsoft-Windows-MobileBroadband - Microsoft-Windows-MobileCore - Microsoft-Windows-MobilePC - Microsoft-Windows-MRT10 - Microsoft-Windows-MSMQ - Microsoft-Windows-MultiPoint-Connector - Microsoft-Windows-Network-Connectivity-Assistant - Microsoft-Windows-NetworkDiagnostics - Microsoft-Windows-Network-QoS - Microsoft-Windows-NFS - Microsoft-Windows-Not-Supported-On-LTSB - Microsoft-Windows-OfflineFiles - Microsoft-Windows-OneCore-Containers - Microsoft-Windows-OneDrive - Microsoft-Windows-ParentalControls - Microsoft-Windows-PAW-Feature - Microsoft-Windows-PeerDist - Microsoft-Windows-PeerToPeer - Microsoft-Windows-PerformanceCounters - Microsoft-Windows-PhotoBasic - Microsoft-Windows-Portable-Devices - Microsoft-Windows-Printing-InternetPrinting-Client - Microsoft-Windows-Printing-LocalPrinting-Enterprise - Microsoft-Windows-Printing-PremiumTools - Microsoft-Windows-Printing-PrintToPDFServices - microsoft-windows-printing-wfs-fod-package-Wrapper - Microsoft-Windows-Printing-WFS-FoD-Package - Microsoft-Windows-Printing-XPSServices - Microsoft-Windows-Provisioning - Microsoft-Windows-Proximity - Microsoft-Windows-QuickAssist - Microsoft-Windows-RDC - Microsoft-Windows-RemoteAssistance - Microsoft-Windows-RemoteDesktop - Microsoft-Windows-RemoteFX - Microsoft-Windows-RetailDemo - Microsoft-Windows-Search2 - Microsoft-Windows-SearchEngine - Microsoft-Windows-SenseClient - Microsoft-Windows-Serial - Microsoft-Windows-ShareMedia - Microsoft-Windows-Shell-HomeGroup - Microsoft-Windows-Shell-SettingSync - Microsoft-Windows-Skype - Microsoft-Windows-SMB1Client-D - Microsoft-Windows-SMB1Deprecation-Group - Microsoft-Windows-SMB1 - Microsoft-Windows-SMB1Server-D-Opt - Microsoft-Windows-SmbDirect-Opt - Microsoft-Windows-SmbDirect - Microsoft-Windows-SnippingTool - Microsoft-Windows-SNMP - Microsoft-Windows-StorageService - Microsoft-Windows-Store - Microsoft-Windows-SystemRestore - Microsoft-Windows-TabletPC - Microsoft-Windows-TabletPCMath - microsoft-windows-tabletpcmath-package-Wrapper - Microsoft-Windows-TabShellExperience - Microsoft-Windows-TerminalServices - Microsoft-Windows-TextPrediction-Dictionaries - Microsoft-Windows-TextPrediction - Microsoft-Windows-TroubleShooting - Microsoft-Windows-TS - Microsoft-Windows-UpdateTargeting-ClientOS - Microsoft-Windows-UserExperience - microsoft-windows-userexperience-desktop-package-Wrapper - Microsoft-Windows-Virtualization-RemoteFX-User-Mode-Transport - Microsoft-Windows-Virtualization - Microsoft-Windows-VirtualPC - Microsoft-Windows-VirtualXP - Microsoft-Windows-WebcamExperience - Microsoft-Windows-WindowsFoundation-LanguagePack - Microsoft-Windows-WinOcr - Microsoft-Windows-WinRT - Microsoft-Windows-WinSATMediaFiles - Microsoft-Windows-WMIPerf - Microsoft-Windows-WordBreaking - Microsoft-Windows-WorkplaceJoin - Microsoft-Windows-WPD-LegacyWmdmFeature - Microsoft-Windows-WPD-UltimatePortableDeviceFeature-Feature - Microsoft-Windows-Xps - Microsoft-Xbox - MSMQ-Driver-Package - MultiPoint - Networking-MPSSVC-Rules-EnterpriseEdition-Package - OpenSSH-Client-Package - openssh-client-package-Wrapper - RemoteDesktopServices - Sensors-Universal - Server-Help - Windows-Defender - WindowsSearchEngineSKU-Group - Microsoft-OneCore-Multimedia-CastingCommon - Microsoft-OneCore-Multimedia-CastingReceiver - Microsoft-OneCore-Multimedia-CastingTransmitter - Microsoft-OneCore-DeviceUpdateCenter - Microsoft-OneCore-DirectX-Database - Microsoft-OneCore-IsolatedUserMode - Microsoft-Onecore-SPP-VirtualDevice - Microsoft-OneCore-VirtualizationBasedSecurity - Microsoft-Windows-WMPNetworkSharingService - -) do ( - - @echo on - install_wim_tweak.exe /p %MNT% /c "%%P" /r /n - @echo off + echo removing PACKAGE [ %%P ] ... + install_wim_tweak.exe /p %IMAGE% /c "%%P" /r /n rem we will exit here in case the checkfile was deleted by a package removal ... if NOT EXIST %CHECKFILE% ( @@ -202,9 +29,9 @@ echo CLEANUP ... del /F SOFTWAREBKP 1>nul 2>nul echo exporting remaining PACKAGES list ... -install_wim_tweak /p %MNT% /l +install_wim_tweak /p %IMAGE% /l move /Y Packages.txt Packages-AFTER.txt -rem showing packages ... +rem showing package files ... dir Packages*.txt diff --git a/wim/umount-all.cmd b/wim/umount-all.cmd new file mode 100644 index 0000000..5d2fbb5 --- /dev/null +++ b/wim/umount-all.cmd @@ -0,0 +1,13 @@ +@echo off +set IMAGE=c:\TEMP\IMAGE +set BOOT=c:\TEMP\BOOT + +echo unmounting image and discarding changes ... +dism /Unmount-Wim /MountDir:%IMAGE% /Discard + +echo unmounting boot and discarding changes ... +dism /Unmount-Wim /MountDir:%BOOT% /Discard + +echo cleaning up ... +dism /Cleanup-Wim + diff --git a/wim/umount-image.cmd b/wim/umount-image.cmd deleted file mode 100644 index 1c2ab2b..0000000 --- a/wim/umount-image.cmd +++ /dev/null @@ -1,10 +0,0 @@ -@echo off -set SOURCES=c:\TEMP\W10\sources -set MNT=c:\TEMP\WIM - -echo unmounting wim and discarding changes ... -dism /Unmount-Wim /MountDir:%MNT% /Discard - -echo cleaning up ... -dism /Cleanup-Wim -