Закрыть ... [X]

Как сделать с exe inf

сделать Windows 8 стала первой ОС Microsoft с возможностью управления дисковым пространством, которое занимают компоненты системы. Сегодня я подробно расскажу о том, как работает включение и отключение, а также удаление и добавление компонентов, что является новинкой.

С течением времени в операционных системах Microsoft эволюционировал механизм обслуживания, развивались инструменты для управления состоянием системы, но один момент оставался неизменным. Компоненты ОС могли находиться только в двух состояних — включенном и отключенном, причем в обоих случаях их файлы оставались на локальном диске.

Конечно, находились умельцы, вырезавшие компоненты из дистрибутива или WIM-образа системы, но это никогда не поддерживалось и порождало массу проблем для незадачливых владельцев г-сборок. Начиная с Windows 8, появился полностью поддерживаемый способ удаления компонентов из WIM-образа и работающей системы. О нем и пойдет речь сегодня во второй статье серии, раскрывающей изменения в обслуживании Windows.

[+] Сегодня в программе

История инструментов обслуживания Windows

Прежде чем перейти к тонкостям управления компонентами в Windows, я кратко расскажу о развитии инструментов обслуживания Windows. Ввиду сжатого формата мое описание утилит не претендует на абсолютную полноту, а лишь подчеркивает их ключевые функции.

Windows 2000/XP

Для управления компонентами в установленной системе наряду с графическим интерфейсом можно было использовать средство командной строки sysocmgr, опиравшееся на INF-файлы. Но ни установочные файлы XP, ни работающая система не являлись образом в современном понимании этого слова.

Эту тему я давно поднимал на OSZone, рассказывая о ключевых различиях развертывания XP и следующих ОС Microsoft. Указанная статья будет полезна новичкам для понимания того, о чем пойдет речь сегодня.

Windows Vista

Начиная с Windows Vista, в ОС Microsoft применяется новый механизм обслуживания. Он позволяет изменять состояние операционной системы и образов в формате WIM одними и тем же средствами.

В Vista для обслуживания автономных образов и работающей системы предназначался целый набор инструментов командной строки, где основными были:

  • pkgmgr для управления компонентами Windows и установки пакетов (в том числе драйверов)
  • peimg  для работы с образами Windows PE
  • intlcfg для настройки языковых параметров
  • lpksetup для установки языковых пакетов
  • ocsetup для управления ролями в серверной ОС
  • imagex для подключения, захвата и применения образов

С этим зоопарком нужно было что-то делать…

Windows 7

В Windows 7 появилась единая система обслуживания и управления образами (Deployment Image Servicing and Management — DISM) и соответствующий ей инструмент командной строки DISM.exe. Эта утилита не просто вошла в WAIK, но и стала частью операционной системы. Кроме того, увидел свет API DISM, позволяющий внутренним и сторонним разработчикам использовать гибкую платформу обслуживания.

Обширные возможности DISM.exe позволили избавиться от утилит pkgmgr, peimg, intlcfg и автономных функций lpksetup для обслуживания WIM-образов и установленной системы, а также от ocsetup для управления ролями сервера. Начиная с Windows 7, на DISM уже возложены все основные задачи по управлению компонентами/ролями Windows и пакетами (кстати, именно в Windows 7 появилась возможность удалять пакеты драйверов, установленные утилитой).

В DISM Windows 7 уже было можно подключать WIM-образы, но для их захвата и применения без утилиты imagex было не обойтись.

Windows 8 и новее

В новой ОС Microsoft все представленные когда-то в Vista инструменты командной строки фактически слились в один. Так, DISM.exe ожидаемо обзавелась способностью захвата и применения образов (как следствие, утилита imagex автоматически получила статус устаревшей). Это далеко не единственная новая функция DISM — например, автономное обслуживание теперь доступно не только для WIM-образов, но и для VHD-файлов.

Кроме того, появилась возможность обслуживания системы с помощью PowerShell, в том числе из Windows PE 4.0. Другими словами, у основных функций DISM.exe есть эквивалентные командлеты PowerShell. Именно PowerShell в будущем станет главным инструментом обслуживания.

Компоненты по требованию

Даже при современной системе обслуживания у компонентов Windows Vista и 7 (а также ролей серверных систем 2008 и 2008 R2) было всего два основных состояния — включено и отключено. В обоих случаях файлы, относящиеся к компоненту, после установки системы хранились на локальном диске. Другими словами, можно было в любой момент изменить состояние компонента или роли, задействовав имеющиеся в распоряжении Windows файлы.

В Windows 8 у компонентов и ролей сервера появилось новое состояние — отключено с удалением полезных файлов (disabled with payload removed). В Windows 10 его уже нет, потому что для восстановления используется текущее состояние системы минус 30 дней.

В этом состоянии файлы, необходимые для работы компонента, физически отсутствуют на локальном диске. Поэтому для включения такого компонента необходим источник файлов:

  • Windows Update
  • другая работающая система
  • автономный или подключенный образ Windows

Когда компонент или роль сервера отключены с удалением полезных файлов, операционная система занимает меньше места на диске. Это актуально в первую очередь для ролей Windows Server 2012+, но применимо и к Windows 8+.

Тонкости управления ролями Windows Server 2012 демонстрировал в блоге виртуализации Денис Дягилев, поэтому я расскажу об управлении компонентами клиентской Windows.

Пример установки компонента по требованию (.NET Framework 3.5)

Если вы запустите программу, которой требуется.NET Framework 3.5, появится такое окно:

Компоненты по требованию
Увеличить рисунок

Вам придется подождать, пока необходимые файлы загрузятся с серверов Windows Update. То же самое произойдет при попытке установить этот компонент из панели управления. Давайте посмотрим, что про него расскажут консольные инструменты.

Управление компонентами Windows с помощью DISM.exe и PowerShell

Для экспериментов, описанных в цикле статей о DISM, достаточно установленной Windows 8 и новее. В Windows 7 новые возможности DISM по обслуживанию образов доступны после установки Deployment Tools из ADK. Чтобы использовать командлеты PowerShell, необходимо установить.NET Framework 4.0 и Windows Management Framework 3.0, а затем импортировать модуль DISM.

Вам также пригодится знание параметров командной строки DISM. Я не буду дублировать встроенную справку, которая также опубликована в библиотеке TechNet для утилиты DISM.exe и командлетов PowerShell.

Примечание. В своих командах я использую переменную %ua%, которая соответствует моей рабочей папке. Если вы планируете копировать мои команды, имеет смысл задать в консоли такую же переменную. Параметры командной строки DISM.exe и PowerShell не чувствительны к регистру, но в именах компонентов его нужно соблюдать.

Отображение сведений о компонентах

Для начала вы можете вывести в текстовый файл полный список компонентов с информацией об их текущим состоянии:

DISM /online /get-features /format:table >%userprofile%\desktop\features.txt

Зная название компонента, можно получить о нем подробную информацию:

DISM /online /get-featureinfo /featurename:NetFx3

Компоненты по требованию
Увеличить рисунок

Как видите, компонент не просто отключен, но его файлы еще и отсутствуют на локальном диске.

Эквивалентные команды PowerShell

Очевидно, что с выходом.NET Framework 4.0 предыдущие версии потребуются лишь не самым новым программам.

Microsoft удалила файлы.NET Framework 3.5 из WIM-образа Windows, чтобы сэкономить место, которое занимает на диске установленная ОС.

Однако.NET Framework 3.5 входит в состав установочного диска, откуда его можно восстановить, как вы увидите чуть ниже.

Отключение и удаление компонентов в образе

Теперь Windows — это просто праздник для г-сборщиков! Ведь теперь не надо вырезать компоненты из дистрибутива кривыми руками, ибо можно просто удалить их абсолютно поддерживаемым методом.

Я предлагаю вам на минутку стать г-сборщиком и выпилить из дистрибутива что-нибудь, допустим, все компоненты Hyper-V!

Скопируйте на локальный диск файл install.wim из папки sources установочного диска и последовательно выполняйте перечисленные ниже команды.

  1. Подключите образ: DISM /Mount-Image /Imagefile:%ua%\wim\install.wim /index:1 /MountDir:C:\mount\

    В данном случае я подключаю образ Windows 8 Корпоративная, у которой в WIM-файле единственный образ, имеющий индекс 1. Кстати, Mount-Image — это новый параметр командной строки, позволяющий подключать не только WIM, но и VHD!

  2. Проверьте состояние компонента Hyper-V (он должен быть включен): DISM /Image:%ua%\mount /Get-FeatureInfo /FeatureName:Microsoft-Hyper-V-All
  3. Удалите компонент Hyper-V: DISM /Image:%ua%\mount /Disable-Feature /FeatureName:Microsoft-Hyper-V-All /Remove

    Как и в Windows 7, параметр Disable-Feature отключает компонент, но теперь у него появился новый ключ Remove для удаления файлов с диска в Windows 8 и 8.1. В Windows 10 удаления не происходит, потому что файлы необходимы для восстановления, при котором используется текущее состояние системы.

  4. Снова проверьте состояние компонента. На этот раз он должен быть отключен с удалением полезных данных.
    Компоненты по требованию
    Увеличить рисунок
  5. Сохраните изменения в образе: DISM /Unmount-Image /MountDir:%ua%:\mount /Commit

Все, теперь из этого WIM-образа система будет установлена на локальный диск без компонента Hyper-V. Именно такую операцию в Microsoft проделали с.NET Framework 3.5.

Эквивалентные команды PowerShell

Включение и восстановление компонентов в образе

В форуме Windows 7 я не раз видел владельцев г-сборок, безуспешно пытавшихся включить вырезанный компонент. Помочь им могла только переустановка поверх с неповрежденного дистрибутива. Начиная с Windows 8, у них появился шанс обойтись малой кровью (если, конечно, г-сборщик действовал по науке).

Я предлагаю вам переключиться в PowerShell и попробовать в деле новые командлеты DISM. Вообще, для работы с компонентами рекомендуется PowerShell, поскольку командлеты понимают зависимости, в отличие от DISM.ехе.

Скопируйте оригинальный образ install.wim в ту же папку, где лежит образ с удаленным компонентом Hyper-V. Назовите чистый образ install-clean.wim, чтобы не запутаться. Теперь последовательно выполняйте перечисленные ниже команды.

  1. Подключите образ с удаленным компонентом Hyper-V: Mount-WindowsImage -ImagePath $env:ua\wim\install.wim -index 1 -Path C:\mount

    Компоненты по требованию
    Увеличить рисунок

  2. Посмотрите список всех удаленных компонентов. В PowerShell это делается элементарно: Get-WindowsOptionalFeature -Path $env:ua\mount | where state -like removed

    Состояние DisabledWithPayloadRemoved означает, что компонент был отключен с удалением полезных файлов.
    Компоненты по требованию
    Увеличить рисунок
    На рисунке видны изъятые компоненты Hyper-V, а также изначально отсутствующий.NET Framework 3.5. Но если в вашем установочном диске удалено что-то еще, это дело рук г-сборщика ;)

  3. Восстановите компонент Hyper-V, указывая путь к чистому WIM-образу в качестве источника файлов: Enable-WindowsOptionalFeature -Path $env:ua\mount -FeatureName Microsoft-Hyper-V-All -Source $env:ua\wim\install-clean.wim:1

    «Чистый» WIM-образ подключается автоматически, что является новой возможностью DISM. Eсли не указывать источник параметром -Source, DISM попытается использовать файлы текущей ОС и Windows Update, что не отражено в документации. Можно добавить в конце параметр -LimitAccess, запрещающий DISM контакт с Windows Update.

  4. Убедитесь в том, что компонент включен: Get-WindowsOptionalFeature -Path $env:ua\mount -FeatureName Microsoft-Hyper-V-All

    Результат выполнения двух последних команд показан на рисунке ниже. Восстановление компонента прошло успешно — он включен.
    Компоненты по требованию
    Увеличить рисунок

  5. Отключите образы: Dismount-WindowsImage -Path $env:ua\mount -Save Dismount-WindowsImage -Path $env:ua\mount-clean -Discard

    Первая команда сохраняет экспериментальный образ при отключении, а вторая — отключает чистый образ без сохранения изменений.

Таким способом можно восстановить любой удаленный компонент за маленьким исключением, о котором я расскажу дальше.

Добавление компонента.NET Framework 3.5 в образ

В отличие от всех прочих компонентов, файлы.NET Framework 3.5 находятся не в WIM-образе, а в папке sources\sxs установочного диска. Поэтому процедуру включения компонента надо слегка подкорректировать.

Подключите ISO-образ установочного диска и последовательно выполняйте команды PowerShell:

Mount-WindowsImage -Imagepath C:\wim\install.wim -Index 1 -Path C:\mount Enable-WindowsOptionalFeature -Path C:\mount -FeatureName NetFx3 -Source Х:\sources\sxs -LimitAccess Dismount-WindowsImage -Path C:\mount -Save

Во второй команде X обозначает букву диска подключенного ISO.

После развертывания образа компонент уже будет включен. Кстати, если в вашей организации используется WSUS, а на клиентских ПК необходим.NET Framework 3.5, следует подготовить образ с включенным компонентом и развертывать уже его.

Управление компонентами работающей системы

На «живой» системе все происходит точно так же, как и в случае с WIM-образом. Разница лишь в том, что вместо параметра -Path, указывающего на подключенный образ, задается параметр -Online, обозначающий работающую систему.

Поэтому я просто приведу примеры команд PowerShell для управления компонентом Hyper-V:

# Проверка состояния компонента Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All # Удаление компонента Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All -Remove # Восстановление компонента из чистого WIM-образа Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All -Source C:\wim\install-clean.wim:1

Компонент.NET Framework 3.5 включается так:

Enable-WindowsOptionalFeature -Online -FeatureName NetFx3 -Source Х:\sources\sxs -LimitAccess

Сколько места можно сэкономить удалением компонентов

Теоретически у этого вопроса несколько аспектов:

  • размер WIM-образа, что может быть актуально для организаций, хранящих множество образов на серверах
  • требования к дисковому пространству для первоначальной установки системы
  • объем всех файлов установленной системы за срок ее работы, что имеет значение для маленьких дисков

На некоторые вопросы можно ответить только экспериментальным путем. Поэтому я сначала установил оригинальную Windows 8 и посмотрел, сколько места она занимает по окончании установки. Затем я определил все компоненты, которые находятся в отключенном состоянии:

Get-WindowsOptionalFeature -Online | where state -eq 'disabled'| ft

После чего удалил их все из WIM-образа, сохранил его, создал ISO и установил Windows 8 заново с получившегося диска.

Windows 8 Enterprise x64 RU Размер WIM-образа Занято места на диске Стандартный образ 2.60GB 9.75GB Образ с удаленными компонентами 2.63GB 9.66GB Экономия Нет 90MB (1%)

Во-первых, размер WIM-образа даже слегка увеличился (видимо, по причине недостаточно сильного сжатия при сохранении). Во-вторых, удаление отключенных изначально компонентов не дало существенной экономии дискового пространства.

Что же касается увеличения размеров папки Windows со временем, то обновления для отключенных компонентов все равно не приходят из Windows Update. Другими словами, удаление компонента не дает дополнительной экономии дискового пространства по сравнению с отключением.

Зачем может понадобиться удаление компонентов

Казалось бы, особой выгоды из удаления компонентов извлечь невозможно. Однако не забывайте, что в своем эксперименте я удалял только те компоненты, которые изначально отключены. В организациях могут быть свои причины для удаления других компонентов (например, мультимедийных), когда заранее известны сценарии использования рабочих станций.

С другой стороны, по этой же схеме происходит управление.NET Framework 3.5, добавление которого съедает 600 мегабайт на диске.

Кроме того, удалив компонент, администратор может быть уверен, что пользователь его уже не установит. Конечно, для включения компонента нужны права администратора, но во многих организациях пользователи работают с полными правами.

Наконец, управление компонентами в клиентской ОС и ролями сервера в Windows Server — это смежные технологии. При этом удаление ролей дает намного более ощутимый эффект. Так, если оставлена только одна роль сервера (например, Hyper-V), счет в экономии дискового пространства идет уже на гигабайты.

Дискуссия и опрос

Список нововведений в обслуживании Windows еще не исчерпан! В следующей статье серии я расскажу о новых возможностях DISM, связанных с управлением приложениями.

Сегодняшний опрос призван выяснить, что установлено на компьютерах читателей блога. Пожалуйста, в комментариях расскажите:

  • за какой пункт вы проголосовали и какая у вас версия Windows (XP, 7, 8)
  • если в основе вашей Windows лежит чужая сборка, объясните, почему вы не пользуетесь оригинальными дистрибутивами
  • создавали ли вы когда-нибудь свои сборки Windows и с какой целью

Результаты голосования утеряны в связи с прекращением работы веб-сервиса опросов.


Источник: http://www.outsidethebox.ms/14162/


Поделись с друзьями



Рекомендуем посмотреть ещё:



Борьба с вирусом на флешках «Вместо папок ярлыки» Сильный зуд на коже в одном месте

Как сделать с exe inf Как сделать с exe inf Как сделать с exe inf Как сделать с exe inf Как сделать с exe inf Как сделать с exe inf

ШОКИРУЮЩИЕ НОВОСТИ