В данной инструкции мы покажем, как удалить из установочного образа Windows 10 (файл install.wim) предустановленные программы, компоненты, а также удалим неиспользуемые редакции Windows. Все операции мы будем выполнять вручную с помощью DISM или PowerShell, но при желании все действия можно автоматизировать с помощью скриптов. На выходе мы получим собственный чистый дистрибутив Windows 10 без лишних дополнений. В нашем образе останутся только нужные современные приложения, компоненты и функции.
Эта статья об очистке и оптимизации установочного образа Windows 10 при его деплое на компьютеры организации в виде чистой установки или апгрейде билда. При апгрейде билда на компьютерах пользователей с помощью SCCM (с Windows 10 1803 до Windows 10 1909) через setup.exe /auto upgrade, мы обнаружили, что у пользователей опять появились удаленные ранее встроенные современные UWP (Metro) приложения.
Установочный файл install.wim
Когда вы устанавливаете Windows 10на компьютер, на самом деле на компьютер деплоится образ Windows из файла
\sources\install.wim
(или
install.esd
). Если ваш установочный образ Windows 10 хранится в виде ISO файла, смонтируйте его в вириуальный CD привод и скопируете файл E:\sources\install.wim (или install.esd) на локальный диск. Вы также можете скопировать всю директорию, но нам нужен только .wim файл.
Для внесения изменений в wim файл используется команда DISM. Если вы используете систему старее той, для которой делаете образ, убедитесь, что вы используете последнюю версию DISM. Для работы с install.wim файлами Windows 10 на других версиях ОС вам нужно установить средства развертывания Windows (Windows Assessment and Deployment Kit или Windows ADK). Вы можете скачать ADK здесь: https://msdn.microsoft.com/en-us/windows/hardware/dn913721.aspx Перейдите в конец и нажмите «Download the Windows ADK for Windows 10», на данный момент последняя версия ADK 1903. Вам нужно установить только средства развертывания (Deployment Tools), а не весь набор инструментов ADK.
При выполнении команд рекомендуется использовать полный путь к
dism.exe
, например ‘C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\amd64\DISM\dism.exe’. Старые DISM могут не работать с более новыми .wim.
Удаление ненужных редакций из дистрибутива Windows 10
По умолчанию в установочном образе Windows 10, который генерирует утилита Windows 10 Media Creation Tool содержаться все доступные редакции Windows. Если вы используете только одну редакцию Windows 10 (как правило это Pro), вы можете удалить другие редакции из установочного образа.
Получим список доступных редакций Windows 10 в файле install.wim установочного образа:
Dism /Get-WimInfo /WimFile:"e:\sources\install.esd"
В нашем примере в образе присутствуют 9 редакций: Windows 10 Home, Windows 10 Home Single Language, Windows 10 Education, Windows 10 Enterprise, Windows 10 Pro и т.д. индексами от 1 до 9.
Вы можете экспортировать установочный образ конкретной редакции из ESD файла в WIM образ с помощью команды:
Dism /export-image /SourceImageFile:c:\sources\install.esd /SourceIndex:6 /DestinationImageFile:c:\iso\install.wim /Compress:max /CheckIntegrity
Данная команда создаст файл новый install.wim только с одной редакцией — Windows 10 Pro. Ее индекс в образе изменится на 1.
Получим подробную информацию об оставшемся образе в wim файле:
dism /get-wiminfo /wimfile:c:\iso\install.wim /index:1
Index : 4 Name : Windows 10 Pro Description : Windows 10 Pro Size : 14,754,777,474 bytes WIM Bootable : No Architecture : x64 Hal : <undefined> Version : 10.0.18363 ServicePack Build : 418 ServicePack Level : 0 Edition : Professional Installation : Client ProductType : WinNT ProductSuite : Terminal Server System Root : WINDOWS Directories : 22541 Files : 96467 Created : 10/7/2019 - 4:05:55 AM Modified : 11/15/2019 - 8:46:50 AM Languages : ru-RU (Default)
Если вам нужно оставить в install.wim несколько редакций Windows, вы можете удалить ненужные версии с помощью параметра /delete-image утилиты DISM.
Например, вы хотите удалить редакции Home и Home Single Language с индексами 1 и 3:
Dism /Delete-Image /ImageFile:c:\sources\install.wim /Index:1 /CheckIntegrity
Dism /Delete-Image /ImageFile:c:\sources\install.wim /Index:3 /CheckIntegrity
Параметр /CheckIntegrity позволяет отменить операции преобразования WIM файла, если команда DISM обнаружит повреждение в его структуре.
Либо можно удалить редакции по их имени:
Dism /Delete-Image /ImageFile:c:\sources\install.wim /Name:"Windows 10 Education" /CheckIntegrity
Также вы можете убрать ненужные версии из установочного образа Windows 10 с помощью PowerShell:
Remove-WindowsImage -ImagePath "c:\sources\install.wim" -Index 2 –CheckIntegrity
Удаление встроенных UWP приложений из установочного образа Windows 10
Также вы можете удалить из установочного образа Windows 10 все предустановленный UWP приложения. Это полезно для ускорения установки ОС, сохранения места на диске. Также вы избавитесь от ненужных виджетов и вашим пользователям будет проще разобраться с системой
Мы покажем, как удалить встроенные UWP приложения из установочного файла install.wim с помощью DISM или PowerShell.
Создайте на диске каталог C:\mount. Смонтируйте в это каталог установочный WIM образ Windows:
dism.exe /mount-wim /wimfile:c:\iso\install.wim /mountdir:c:\mount /index:1
Обратите внимание, я использовал /index:1, т.к. предварительно очистил образ от ненужных редакций Windows как описано выше. Вы можете указать индекс нужного вам образа.
После того, как WIM файл смонтирован, вы можете вывести список предустановленных в нем пакетов современных приложений. Я перенаправил вывод команды в текстовый файл для более удобной работы с текстом
Dism.exe /image:c:\mount /Get-ProvisionedAppxPackages > c:\ps\apps.txt
Каждое приложение будет выглядеть примерно так:
DisplayName : Microsoft.BingWeather Version : 4.25.20211.0 Architecture : neutral ResourceId : ~ PackageName : Microsoft.BingWeather_4.25.20211.0_neutral_~_8wekyb3d8bbwe
Теперь самое интересное – удаляем все приложения, которые вам не нужны. К сожалению, такие приложения как Edge, Cortana, Contact Support и некоторые другие удалить невозможно, но эти приложения можно отключить уже внутри системы через групповые политики. Рекомендую также оставить приложения калькулятора (Microsoft.WindowsCalculator), просмотра фото (Microsoft.Windows.Photos), Microsoft.VP9VideoExtensions, так как старых версий этих программ в Windows 10 уже нет. Также лучше не трогать Microsoft.WindowsStore, иначе восстановить его будет сложно.
Вы можете удалять приложения по-одному или все вместе.
Чтобы удалить современное приложение из смонитрованного образа, нужно указать его имя (PackageName). Удалим приложение BingWeather:
dism.exe /image:c:\mount /Remove-ProvisionedAppxPackage /PackageName:Microsoft.BingWeather_4.25.20211.0_neutral_~_8wekyb3d8bbwe
Аналогичным образом удалите все ненужные встроенные приложения.
Когда вы закончите удалять приложения, размонтируйте образ и сохраните изменения (рассмотрено чуть ниже).
Также вы можете удалить предустановленные приложений из установочного образа Windows 10 с помощью готового PowerShell скрипта:https://gallery.technet.microsoft.com/Removing-Built-in-apps-65dc387b
Плюс этого метода в том, что вам не нужно ничего монтировать, всё что нужно это просто указать путь к .wim файлу и запустить скрипт. Минус заключается в том, что, если что-то пойдет не так, ошибку будет найти сложнее, будь она связана с DISM или с самим скриптом.
Запустите PowerShell с правами администратора и выполните:
.\removeapps.ps1 -pathtowim c:\Windows10\sources\install.wim -selectapps $true
Вам выведет построчно каждое приложение и у вас будет выбор удалить его (Y) или оставить (N)
После того как вы отметите все приложения, скрипт удалит их. В отличии от работы с dism, вам не нужно будет сохранять изменения в .wim файле – они сохранятся скриптом.
Если вы хотите удалить все приложения, уберите с конца команды selectapps $true, это удалит все приложения, которые можно удалить.
Также при работе с PowerShell может возникнуть ошибка, так как стандартно в системе запрещено выполнение скриптов.
Для её решения введите в консоли PowerShell:
Set-ExecutionPolicy -ExecutionPolicy Unrestricted
Это разрешит выполнение PS1 скриптов в системе
Отключаем и удаляем ненужные компоненты и функции в дистрибутиве Windows 10
С помощью DISM вы можете удалить (или установить) определенные компоненты из установочного образа Windows 10.
Получим список предустановленных компонентов в смонтированном установочном образе Windows 10 с помощью DISM:
Dism.exe /image:c:\mount /Get-Capabilities
Компонент может быть установлен (Installed), или отключен (Not Present).
Также можно вывести список всех компонентов Windows в образе с помощью PowerShell (в этом примере с помощьюфиьтра мы выведем только установленные компоненты Windows):
Get-WindowsCapability -Path c:\mount|?{$_.State -eq "Installed"}
В Windows 10 1909 предустановлены следующие компоненты:
App.Support.QuickAssist~~~~0.0.1.0 Browser.InternetExplorer~~~~0.0.11.0 Hello.Face.18330~~~~0.0.1.0 Hello.Face.Migration.18330~~~~0.0.1.0 Language.Basic~~~en-US~0.0.1.0 Language.Basic~~~ru-RU~0.0.1.0 Language.Handwriting~~~ru-RU~0.0.1.0 Language.OCR~~~en-US~0.0.1.0 Language.OCR~~~ru-RU~0.0.1.0 Language.TextToSpeech~~~ru-RU~0.0.1.0 MathRecognizer~~~~0.0.1.0 Media.WindowsMediaPlayer~~~~0.0.12.0 OneCoreUAP.OneSync~~~~0.0.1.0 OpenSSH.Client~~~~0.0.1.0
Вы можете удалить установленный компонент по его имени. Удалим компонент распознавания лица Hello.Face:
Dism.exe /image:c:\mount/Remove-Capability /CapabilityName:Hello.Face.18330~~~~0.0.1.0
Также вы можете включить компоненты в образе. Например, установим все инструменты администрирования RSAT:
Get-WindowsCapability -Path c:\mount |? {$_.Name -like "*RSAT*" -and $_.State -eq "NotPresent"} | Add-WindowsCapability -Path c:\mount
Аналогичным образом можно включить/отключить другие компоненты. Например, включим .NET 3 и отключим SMB1:
dism.exe /image:C:\mount /enable-feature /featurename:netfx3 /all /source:E:\sources\sxs
dism.exe /image:C:\mount /disable-feature /featurename:smb1protocol
Аналогичным образом вы можете интегрировать в ваш установочный образ Windows 10 драйвера или последние обновления безопасности.
Оптимизация установочного образа install.wim после изменений
После того, как вы внесли изменения в установочный образ Windows 10 нужно выполнить его оптимизацию и очистку с помощью параметра /cleanup-image.
Удалите предыдущие версии компонентов с помощью параметра ResetBase:
Dism /Image:C:\Mount /cleanup-image /StartComponentCleanup /ResetBase
Проверьте образ на ошибки с помощью Dism /ScanHealth.
DISM /Image:C:\Mount /Cleanup-Image /ScanHealth
Осталось отмонтировать образ и сохранить изменения в WIM файле:
dism.exe /unmount-wim /mountdir:c:\mount /commit
Если вы передумали, используйте ключ /discard в конце команды вместо /commit, чтобы отменить изменения
Для экономии места можно дополнительно сжать install.wim в формат install.esd командой:
Dism /Export-Image /SourceImageFile:c:\iso\install.wim /SourceIndex:1 /DestinationImageFile:c:\iso\install.esd /Compress:recovery
Теперь осталось скопировать ваш install.wim (install.esd) в ваш установочный образ Windows. Вам нужно скопировать только wim файл, другие файлы обновлять не нужно.
Чтобы запаковать образ обратно в iso, можно использовать бесплатную портейбл программу Folder2ISO или другие подобные программы.
А потом при обновлении не будет проблем на новую версию? После обновление не восстановятся все отключенные или удаленные программы?
Имхо отключить обновления сразу и скачивать только обновления безопасности для своей редакции.
https://winitpro.ru/index.php/2019/09/10/skachat-obnovlenie-windows-vruchnuyu/
Статья не полная. Раз уже залезли в образ, то можно и реестр поправить ( например удалить всякие кенди краши и другие рекламные помои). Где про интеграцию обновлений и драйверов?
+ сую Но это уже отдельная статья, которая возможно уже есть на сайте.
Присылайте инфу, с удовольствием дополнию.
Гайд, который охватывает все сразу одному не написать 🙂
У Вадима уже как бы есть статья http://www.outsidethebox.ms/19177/
Вопрос только собрать всё в одно место. Много чего можно сделать в образе.
1. Удаляем приложения UWP
2. Удаляем из AppData\Local\Packages пакеты для UWP которые удалили выше.
3. Правка реестра — где как раз по статье Вадима отключаем например «Иногда показывать предложения в меню Пуск»
4. Своё меню пуск для пользователя по умолчанию. есть в статье. Но есть и другой способ.
и это не будет красиво работать если не сделать 1.2.3. Win10 всегда захочет что то поменять.
5. Правка папки пользователя по умолчанию. Добавление ярлыков файлов. Скриптов в автозагрузку для настройки профиля по =первому входу.
6. Интеграция обновлений.
7. Включение компонентов, например .net 3.5
8. Интеграция драйверов.
Дополнительно можно удалить
Системные приложения — родительский контроль, Хбокс Эдж и тд.
Языки которые никогда не понадобятся.
очистить папку winsxs.
Конечно есть способ всё это сделать через аудит системы. И затем выполнить импорт пользовательских настроек через файл ответов sysprep. Но в win 10 у меня по крайней мере, импортируется очень мало настроек даже внешний вид не импортируется не полностью.
И вопрос кто знает как в подключенном WIM образе отключить задания планировщика? например
«\Microsoft\Windows\UpdateOrchestrator\Schedule Scan» права к которому у системы.
Полезную информацию выкладываете. Спасибо!
Не стоит удалять также встроенные приложения:
Microsoft.StorePurchaseApp
Microsoft.WebMediaExtensions
Вот тут подробное решение: https://www.nsaneforums.com/topic/257414-dism-remove-windows-packages-telemetry-diagtrack-windows-defenderetc/
но к сожалению в версии 1909 кроме defender я не вижу остальных- Cortana, OneDrive, DiagTrack, Telemetry.
как отключить или удалить функцию в 10 автоматической установки драйверов? хочу сам ручками поставить драйвера
Про автообновление драйверов в Win 10 здесь: https://winitpro.ru/index.php/2015/08/19/otklyuchaem-avtomaticheskoe-obnovlenie-drajverov-v-windows-10/
Доброго времени суток! Помогите понять, почему у меня возникает ошибка.
1) имею дистриб (скачал с майкрософта) Win10 (1909)
2)монтирую Dism /Mount-Wim /WimFile:D:\Distrib\Win10\Win10_1909_Russian_x64\sources\install.wim /index:4 /MountDir:D:\mountWin10
3) хочу получить список пакетов, Dism /Image:D:\mountWin10 /Get-ProvisionedAppxPackages
на выходе получаю:
Cистема DISM
Версия: 10.0.18362.1
Версия образа: 10.0.18363.418
Ошибка: 87
Неизвестный параметр get-provisionedappxpackages.
Для получения дополнительных сведений выполните команду «DISM.exe /?».
Файл журнала DISM находится по адресу C:\Windows\Logs\DISM\dism.log
В какой версии Windows вы редактируете ваш образ? Старые версии DISM не поддерживают многие параметры.
пример вырезания пакетов.
вот как вырезать эдж.
[CODE]C:\DISM\Dism /Mount-Wim /WimFile:C:\WORK\install.wim /index:1 /MountDir:C:\WORK\Mount
reg load HKLM\Custom C:\WORK\Mount\Windows\System32\Config\Software
Reg Add «HKLM\Custom\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages\Microsoft-Windows-Internet-Browser-Package~31bf3856ad364e35~amd64~~10.0.19041.1» /v «Visibility» /t REG_DWORD /d 1 /f
Reg Delete «HKLM\Custom\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages\Microsoft-Windows-Internet-Browser-Package~31bf3856ad364e35~amd64~~10.0.19041.1\Owners» /f
reg unload HKLM\Custom
C:\DISM\Dism /image:c:\work\mount /Remove-Package /Packagename:Microsoft-Windows-Internet-Browser-Package~31bf3856ad364e35~amd64~~10.0.19041.1
C:\DISM\Dism /Unmount-Wim /MountDir:C:\WORK\Mount /commit[/CODE]
[url=https://i1.imageban.ru/out/2020/04/07/f8f1bbaf04a6bf66c4f3c7457ab596e1.png][img]https://i1.imageban.ru/out/2020/04/07/4530dbe1e9f15f1eff4131c3aeb596f0.png[/img][/url]
список пакетов там
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages]
удаление AppxPackage в подключённом образе возможно ? (не AppXProvisionedPackage)
например в списке AppXProvisionedPackage нет пакета ContentDeliveryManager, но он есть в списке AppxPackage.
как мне резануть ContentDeliveryManager в подключённом образе ?
Сделал всё по инструкции, всё получилось.
Но! Когда я монтирую оригинальный образ, скажем на отдельный, созданный VHD диск, заменяю там оригинальный install.esd на мной изменённый, делаю из папки iso — Windows не хочет грузится в Virtual Box: could not read from the boot medium! system halted
Такое ощущение что установщик проверяет хэш файлов и если он не совпадает — просто не загружается
Не знаю что делать, пробовал создавать ISO в разных программах.
Дополняю как подменить ваш изменённый образ install.esd вместо оригинального (спасибо Вадиму Стеркину!)
Монтируем оригинальный iso (пусть будет F:)
Выделяем все файлы, копируем их в папку C:\iso\W10
Открываем ADK от админа
Вставляем скрипт:
:: пути к подключенному оригинальному ISO
set etfsboot=F:\boot\etfsboot.com
set efisys=F:\efi\microsoft\boot\efisys.bin
:: путь к папке с вашими файлами для создания ISO
set source=C:\iso\W10
:: путь к создаваемому ISO
set target=C:\custom.iso
:: метка диска
set label=MyCustomISO
:: создание ISO
oscdimg -h -m -o -u2 -udfver102 -bootdata:2#p0,e,b»%etfsboot%»#pEF,e,b»%efisys%» -l%label% «%source%» «%target%»
На выходе имеем iso файл custom.iso в корне диска С который работает для установки!
Благодарю за инфу!
удаление пакетов из образа без указания полного имени (аналог использования install_wim_tweak.exe)
алгоритм от [url=http://forum.ru-board.com/profile.cgi?action=show&member=westlife]westlife[/url]
[code]Dism /Mount-Wim /WimFile:C:\WORK\install.wim /index:4 /MountDir:C:\WORK\Mount
Reg load HKLM\Custom C:\WORK\Mount\Windows\System32\Config\Software
Powershell «SP ‘HKLM:\Custom\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages\*OneDrive*’ Visibility -V 1»
Powershell «RD ‘HKLM:\Custom\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages\*OneDrive*’ -Include Owners -Recurse»
for /f «tokens=8 delims=\» %%I in (‘reg query «HKLM\Custom\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages» /f OneDrive’) do call:VAR %%I
Reg unload HKLM\Custom
for %%I in (%Packs%) do Dism /image:C:\WORK\Mount /Remove-Package /PackageName:%%I
Dism /Unmount-Wim /MountDir:C:\WORK\Mount /commit
:VAR
set Packs=%Packs% %~1
exit /b[/code]
выключаем ContentDeliveryManager в образе через удаление соответствующей ветки реестра —
[code]
Reg load HKLM\Custom C:\WORK\Mount\Windows\System32\Config\Software
[URL=https://github.com/mspaintmsi/superUser/releases]SU64[/URL] /w /c powershell «RD HKLM:\Custom\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\InboxApplications\*ContentDeliveryManager*»
Reg unload HKLM\Custom
[/code]
в батнике удаление всех uwp в подключённом образе одной командой —
[CODE]powershell «Get-AppxProvisionedPackage -path C:\Mount|Remove-AppxProvisionedPackage»[/CODE]
в батнике удаление всех uwp кроме прописанных —
[CODE]Powershell «Get-AppxProvisionedPackage -Path C:\Mount|? PackageName -NotMatch ‘SecHealthUI|AppInstaller’|Remove-AppxProvisionedPackage»[/CODE]
в батнике удаление только прописанных uwp —
[CODE]Powershell «Get-AppxProvisionedPackage -Path C:\Mount|? PackageName -Match ‘SecHealthUI|AppInstaller’|Remove-AppxProvisionedPackage»[/CODE]
в батнике удаление всех uwp в подключённом образе одной командой —
[CODE]powershell «Get-AppxProvisionedPackage -path C:\Mount|Remove-AppxProvisionedPackage»[/CODE]
в батнике удаление всех uwp кроме прописанных —
[CODE]Powershell «Get-AppxProvisionedPackage -Path C:\Mount|? PackageName -NotMatch ‘SecHealthUI|AppInstaller’|Remove-AppxProvisionedPackage»[/CODE]
в батнике удаление только прописанных uwp —
[CODE]Powershell «Get-AppxProvisionedPackage -Path C:\Mount|? PackageName -Match ‘SecHealthUI|AppInstaller’|Remove-AppxProvisionedPackage»[/CODE]
Powershell SE, windows 11
.\removeapps.ps1 -pathtowim c:\Windows10\sources\install.wim -selectapps $true
PS C:\Users\Andrei_25> .\removeapps.ps1 -pathtowim c:\Windows10\sources\install.wim -selectapps $true
.\removeapps.ps1 : Имя «.\removeapps.ps1» не распознано как имя командлета, функции, файла сценария или выполняемой программы. Пр
оверьте правильность написания имени, а также наличие и правильность пути, после чего повторите попытку.
строка:1 знак:1
+ .\removeapps.ps1 -pathtowim c:\Windows10\sources\install.wim -selecta …
+ ~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (.\removeapps.ps1:String) [], CommandNotFoundException
Почему выдаёт ошибку? Заранее благодарен. Андрей.
файл removeapps.ps1 должен быть в текущей папке. Например в C:\PS:
cd c:\ps
.\removeapps.ps1 -pathtowim ...