Меню

проверка установки пакетов windows

Проверка присутствия пакета обновления в системе перед установкой

Установка пакетов обновлений для Windows может происходить как в автоматическом режиме службой Windows Update, так и в ручном режиме через Windows Update Stand-alone Installer (WUSA) — Автономный установщик обновлений из msu-файлов. Кроме WUSA, обновить ОС также можно с помощью Deployment Image Servicing and Management (DISM) — Система обслуживания образов развёртывания и управления ими. Используя DISM можно устанавливать обновления на не только из msu-фалов, но и из cab-файлов. Чтобы получить cab-файл пакета обновления, нужно скачать с сайта Microsoft нужный msu-файл и распаковать его запуском с ключом /extract. Замечено что установка пакетов обновлений в виде cab-файлов с помощью DISM происходит быстрее чем из msu-файлов с помощью WUSA. Я выбираю DISM для работы с обновлениями Windows, поэтому дальнейшее описание приведено для неё.

Многие системные администраторы собирают свои «коллекции» пакетов обновлений, запуская их установку в определённой последовательности из командного файла. Но иногда, обслуживая незнакомые компьютеры, точно неизвестно какие обновления установлены, а какие — нет. Если запустить установку всех обновлений из длинного списка, то при наличии некоторых обновлений в образе ОС система DISM всё равно установит их «поверх». Чтобы избежать напрасной потери времени в моём скрипте используется «функция» которая проверяет устанавливаемый пакет обновления на его присутствие в ОС. В коде скрипта, для примера, выполняется установка обновлений KB3177467 (Servicing stack update) и KB3125574 (Convenience rollup update). Также происходит автоматической определение разрядности ОС, но это не относиться к теме вопроса.

Файлы пакетов обновлений здесь не прилагаю, так как указанные в скрипте взяты для образца. По месту нахождения скрипта должны быть созданы папки x64 и x86 в которые нужно разместить нужные пакеты обновлений. Сам файл скрипта можно сохранить в кодировке ANSI если не использовать кириллицу для вывода информационных сообщений. А если хочется видеть русский текст, то нужно cmd-файл сохранить в кодировке OEM 866.

Перед началом установки система DISM запрашивет (/Get-Packages]) у ОС список уже установленных пакетов обновлений и сохраняет его в текстовом файле во временной папке %TEMP%\packages.txt. В дальнейшем перед началом установки каждого пакета обновлений происходит обращение к «функции» :exist с передачей в качестве аргумента — пути к устанавливаемому пакету для проверки. «Функция» :exist извлекает (/Get-PackageInfo) из проверяемого пакета служебную информацию, в которой отыскивается строка «Package Identity». Эта строка «по конвееру» передаётся следующей команде поиска, которая ищет данную строку в сохранённом файле %TEMP%\packages.txt. По результатам поиска возможны два варианта:

  • Если обновление не обнаруживается установленным в системе, то «функция» :exist выходит с кодом %ERRORLEVEL%1, и в этом случае происходит установка (/Add-Package) пакета системой DISM. После установки обновления (если пройдёт успешно) — обнуляется %ERRORLEVEL% и может использоваться для следующего запуска «функции» :exist;
  • Если обновление обнаруживается установленным в системе, то «функция» :exist выходит с кодом %ERRORLEVEL%, и в этом случае установка пакета обновления не происходит, а скрипт переходит к обработке следующего пункта по списку. Необходимости обнулять %ERRORLEVEL% нет.

Возможные проблемы:

Проверка присутствующих в ОС обновлениях выполняется только по полю «Package Identity», статус не проверяется! В нормальном состоянии пакеты имеют статус Installed (Установлен), но возможны ошибочные состояния присутствующих в системе пакетов обновлений: Superseded (Заменён), Not Present (Отсутствует), Staged (Промежуточное). Состояние присутствующих пакетов можно посмотреть открыв файл %TEMP%\packages.txt, созданный в процессе работы скрипта. Если «ошибочных» состояний нет, то проблем быть не должно: установиться то чего нет, и пропустится то что уже установлено.

Читайте также:  как изменить настройки видеокарты амд

Использование данного скрипта для обновления ОС недостающими пакетами значительно экономит время!

источник

Как проверить, установлен ли Service Pack 1 на Windows 7

Пакет обновления SP1 для Windows 7 — это важное обновление, содержащее ранее выпущенные обновления для системы безопасности, обеспечения производительности и стабильности работы Windows 7.
Установка пакета Service Pack 1 помогает поддерживать операционную систему Windows 7 в актуальном состоянии.

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

Чтобы проверить, установлен ли у вас Service Pack 1, нужно запустить «Проводник», в верхнем меню: «Справка» — «О программе».

Если у вас не написано: «Service Pack 1», значит, его надо скачать и установить.

Или нажать «Пуск», в правой колонке выбрать «Компьютер» и правой мышкой выбрать «Свойства».

Здесь вы увидите гораздо больше информации, в том числе и по производительности вашего компьютера.

Если Service Pack 1 не установлен, можно скачать его самому, выбрав нужную загрузку здесь.
Какой из файлов скачивать, лучше узнать у специалиста.

Есть вариант проще — через обновление системы — Windows Update, если конечно у вас стоит лицензионная система Windows 7.
Остальным же останется качать пиратский пакет Windows 7 Service Pack 1 из сети.

источник

Управление пакетами в Windows (часть 1)

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

Для того, чтобы упростить процесс установки ПО, в Windows добавлена возможность установки ПО из пакетов (package). Такой подход используется в операционных системах Linux, суть его заключается в том, что программы хранятся в специальных хранилищах (репозиториях) в виде пакетов, для управления которыми используется менеджер пакетов (напр. apt в Debian). Таким образом установка приложения сводится к выполнению всего одной команды.

Теперь давайте рассмотрим схему управления пакетами (Package Management), реализованную в Windows. Она состоит из четырех основных составляющих:

• Package Sources — источник пакетов, он же репозиторий. Место, где хранятся установочные пакеты программ. В качестве расположения источника может быть указан URL-адрес в интернете, общая папка в локальной сети или локальная папка на компьютере;
• PackageManagement Providers — провайдеры (поставщики) пакетов, отвечающие за доступ к источникам пакетов. Каждый поставщик может управлять одним или несколькими источниками;
• PackageManagement Core — ядро управления пакетами. Программный интерфейс, обеспечивающий взаимодействие поставщиков с конечными пользователями;
• End User — конечный пользователь, т.е. тот, кто пользуется функционалом Package Management с помощью командлетов PowerShell.

Читайте также:  xiaomi настройки быстрого доступа

Как следует из схемы, управление пакетами в Windows осуществляется исключительно с помощью PowerShell. Для этой цели предназначен специальный модуль PackageManagement (ранее известный как OneGet), входящий в состав PowerShell начиная с версии 5.0. Для более ранних версий PowerShell модуль можно установить вместе с WMF 5.1 либо отдельно, из репозитория PowerShell Gallery.

В модуль входит 13 командлетов, подробное описание можно найти здесь.

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

По умолчанию выполнение скриптов PowerShell запрещено (Restricted). Для успешной работы с пакетами необходимо установить значение Unrestricted или ByPass, например:

Для начала проверим, какие из поставщиков установлены в системе. Для этого выполним команду:

По умолчанию в Windows имеются следующие поставщики пакетов:

• MSI — поставщик для обработки файлов msi (файлы установки Windows);
• MSU — поставщик для обработки файлов msu (файлы обновлений Windows);
• PowerShellGet — служит для управления модулями PowerShell;
• Programs — отвечает за инвентаризационные данные обо всех программных продуктах, зарегистрированных в оснастке ″Удаление или изменение программы″;

Теперь посмотрим доступные источники командой:

На данный момент из источников доступен только репозиторий PSGallery, поставщиком которого является PowerShellGet.

Ну собственно источник у нас имеется, поставщик тоже, можно приступать к установке пакетов. В качестве примера установим модуль PSWindowsUpdate.

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

Find-Package -Provider PowerShellGet -Name PSWindowsUpdate -AllVersions

Примечание. Для работы с репозиториями небходим провайдер NuGet, поэтому при первом обращении вам будет предложено установить его. NuGet — это бесплатный менеджер пакетов с открытым исходным кодом, предназначенный для платформы Microsoft. Он требуется для работы с пакетами NuGet (.nupkg).

Следующей командой установим найденный пакет, дополнительно укажем требуемую версию:

Install-Package -Name PSWindowsUpdate -RequiredVersion 2.1.1.1 -Source PSGallery -Provider PowerShellGet -Force

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

После установки проверим наличие пакета:

Get-Package -Name PSWindowsUpdate

Get-Module -Name PSWindowsUpdate -ListAvailable

Ну и завершим демонстрацию удалением свежеустановленного пакета:

UnInstall-Package -Name PSWindowsUpdate -Force

Этот пример наглядно показывает принцип работы с пакетами. Если вспомнить схему, то действия по установке пакета выглядят примерно так:

Пользователь выполняет команду PowerShell для установки пакета -> Модуль PackageManagement обращается к ядру управления пакетами (PackageManagement Core) -> Ядро обрабатывает команду PowerShell и передает ее нужному поставщику -> Поставщик обращается к своему источнику, находит в нем требуемый пакет и запускает процесс установки.

И вот тут стоит подробнее объяснить назначение компонента PackageManagement Core. Дело в том, что каждый поставщик имеет свой собственный синтаксис команд, а ядро служит как бы переводчиком, который умеет общаться с каждым поставщиком на его родном языке. При этом конечному пользователю предоставляется строго унифицированный набор команд, независимо от используемого поставщика.

Перейдем к более жизненным примерам и установим какую нибудь программу. Для этого нам понадобится новый источник, поскольку в PSGallery нет ничего, кроме PowerShell модулей. Одним из наиболее популярных публичных источников является репозиторий Chocolatey, им и воспользуемся.

Читайте также:  настройка bios hp compaq dx7300

Для доступа к источнику необходим соответствующий поставщик, поэтому выведем список всех доступных для установки поставщиков командой:

Для работы с Chocolatey рекомендуется использовать одноименный поставщик сhocolatey. Установим его командой:

Install-PackageProvider -Name chocolatey

Еще раз проверим список источников и убедимся, что в нем появился Chocolatey. И чтобы не требовалось подтверждение на установку пакетов, сделаем его доверенным источником:

Set-PackageSource -Name Chocolatey -Trusted

Ради интереса посмотрим, сколько всего пакетов есть в новом репозитории. Сделать это можно командой:

Find-Package -Source Chocolatey | measure | select count

На момент написания статьи количество пакетов в ″шоколадке″ составляет 6533 штуки, и оно постоянно увеличивается.

В качестве примера найдем и установим мой любимый редактор Notepad++:

Find-Package -Name notepadplusplus -Source Chocolatey | Install-Package

Для проверки зайдем в меню Пуск и удостоверимся, чтоNotepad++ действительно установлен и готов к работе.

На этом можно было бы и закончить статью, в заключение написав о том, как легко и просто ставить ПО из пакетов. Но на самом деле все не так красиво, как кажется 🙂 Поэтому не будем останавливаться на достигнутом и попробуем установить еще одно приложение, к примеру архиватор 7zip.

На этот раз для поиска пакета воспользуемся выводом командлета Out-GridView:

Find-Package -Provider chocolatey | sort -Property Name | Out-GridView

А теперь начинается самое интересное — установка пакета проходит без ошибок, но самого приложения нигде нет. Для понимания происходящего запускаем установку пакета с ключом Verbose и видим, что установщик ругается на неизвестную команду Get-OSArchitectureWidth.

При этом сам пакет считается успешно установленным и его можно найти в списке доступных.

Поставщик chocolatey создает в корне диска папку Chocolatey, где хранит все загруженные пакеты. Найдем среди них пакет 7zip и посмотрим его содержимое. Как видите, пакет представляет из себя набор из стандартных инсталляторов и пары powershell скриптов — один для установки, второй для удаления.

При установке приложения из репозитория провайдер сначала загружает файлы пакета, а затем запускает скрипт установки. Откроем установочный скрипт и посмотрим его содержимое. Как видите, он просто выбирает нужный дистрибутив (x32 или x64) и устанавливает его в тихом режиме, а неизвестная команда как раз и служит для определения разрядности системы.

В процессе поисков удалось выяснить, что команда Get-OSArchitectureWidth входит в состав официального поставщика Chocolatey, точнее в один из его модулей. По какой то причине при установке поставщика chocolatey ставится только часть функционала, соответственно установка приложений с его помощью превращается в лотерею. Часть приложений ставится нормально, часть не ставится вообще.

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

Find-PackageProvider -Name choco*

Всего для работы с ″шоколадкой″ есть три поставщика. Путем проб и ошибок выбираем ChocolateyGet:

Install-PackageProvider -Name ChocolateyGet

Еще раз попробуем установить 7zip, уже с помощью нового поставщика:

Install-Package -Name 7zip -Source Chocolatey -Provider ChocolateyGet -Force -Verbose

На сей раз все прошло успешно и приложение установлено.

источник