вторник, 10 января 2017 г.

Oшибка установщика Windows Installer

   Распространённая проблема среди пользователей операционной системы Windows – ошибка msi при установке программ из файла с расширением .msi.
    Файлы с расширением .msi это обычные пакеты установки (дистрибутивы) из которых ставится программа. В отличии от обычных «setup.exe», для запуска файла msi система использует службу Windows Installer (или процесс msiexec.exe). Когда Windows Installer не работает или работает не корректно, появляются различные ошибки при установке.
   Неполадки могут быть с работой самой службы или могут возникать в процессе установки программ, когда всё настроено правильно. В первом случае нужно ковырять службу установщика, а во втором решать проблему с конкретным файлом. Рассмотрим оба варианта.
Ошибки msi файлов
   Очень часто ошибки появляются из-за недостаточных прав системы на файлы или папки. Нельзя сказать что Windows Installer не работает, в этом случае достаточно просто добавить нужные права и всё заработает. Буквально вчера я столкнулся с тем, что скаченный дистрибутив .msi не захотел устанавливаться. При этом успешно запускается мастер установки, выбираются параметры, но затем система думает несколько секунд и выдаёт ошибку:
   «Error reading from file «имя файла» verify that the file exists and that you can access it» (Error 1305). Переводится «Ошибка чтения из файла … проверьте существует ли файл и имеете ли вы к нему доступ». Естественно, что кнопка «Повторить» не помогает, а отмена прекращает всю установку. Сообщение особой смысловой нагрузки также не несёт, т.к. файл точно существует и я имею к нему доступ, иначе бы просто не смог его запустить.

   А ошибка в том, что не Я должен иметь доступ к файлу, а установщик Windows, точнее сама система. Решается очень просто:
  1. Кликаем правой кнопкой по файлу с расширением .msi, выбираем «Свойства»
  2. На вкладке «Безопасность» смотрим, есть ли в списке пользователь с именем «система» или «System»
  3. Скорее всего вы такого не увидите. Поэтому будем добавлять вручную. Нажимаем кнопку «Изменить…», затем «Добавить…»
  4. В поле пишем «система» или «System» (если у вас английская Windows) и нажимаем «Проверить имена». При этом слово должно стать подчёркнутым как на картинке.
  5. Нажимаем «ОК», ставим галочку «Полный доступ», «ОК»
  6. Кнопка «Дополнительно» -> «Изменить разрешения…» ставим «Добавить разрешения,  наследуемые от родительских объектов», «ОК» три раза.
   Всё, эта ошибка установщика Windows не появится, а установка должна пройти как по маслу! Можно добавить доступ на всю папку, из которой вы обычно инсталлируете программы, например на папку «Downloads», как у меня.
   В Windows XP вкладки «Безопасность» не будет, если включён простой общий доступ к файлам. Чтобы его выключить нужно зайти в «Пуск -> Панель управления -> Свойства папки -> Вид» и выключить опцию «Использовать простой общий доступ к файлам». В урезанных версиях Windows 7 и XP вкладки «Безопасность» нет в принципе. Чтобы её увидеть нужно загрузить Windows в безопасном режиме и зайти в неё под администратором.
   Ещё способы решить проблему:
   •  Запускайте установку, войдя в систему под администраторским аккаунтом
   •  Выключите антивирус на время
   •  Включить режим совместимости с предыдущими операционными системами

 Для этого зайдите в свойства файла msi и на вкладке «Совместимость» поставьте галочку «Запустить программу в режиме совместимости».
   •  Если файл на флешке, то попробуйте скопировать его куда-нибудь на жёсткий диск и запустить оттуда (бывает, что запрещена инсталляция программ со съёмных накопителей)
  •  Попробуйте просто создать новую папку с любым именем в корне диска, перекинуть туда дистрибутив и запустить его оттуда
Описанный метод поможет при разных сообщениях, с разными номерами. Например, вы можете видеть такие ошибки файлов msi:
   •  Error 1723
   •  Internal Error 2203
   •  Системная ошибка 2147287035
   •  Ошибка «Невозможно открыть этот установочный пакет»
   •  Ошибка 1603: Во время установки произошла неустранимая ошибка
  Во всех этих случаях должна помочь установка прав на файл и/или на некоторые системные папки. Проверьте, имеет ли доступ «система» к папке временных файлов (вы можете получать ошибку «Системе не удается открыть указанное устройство или файл»). Для этого:
 1. Сначала узнаем нужные пути. Нажмите «Win + Pause» и зайдите в «Дополнительные параметры системы -> Вкладка «Дополнительно» -> кнопка «Переменные среды»»
   2. Здесь ищем в списках переменные с названиями «TEMP» и «TMP» (значения обычно совпадают), в них записаны пути к временным папкам, которые использует установщик Windows
   3. Теперь идём к этим папкам и смотрим в их свойствах, имеет ли к ним доступ «система». Чтобы получить путь к временной папке пользователя кликните два раза по переменной, скопируйте путь и вставьте его в адресной строке «Проводника» Windows
  После нажатия «Enter» путь преобразится на «нормальный» и вы переместитесь в реальную временную папку. Права на неё и надо проверять. Также рекомендую очистить временные папки от всего что там скопилось или даже лучше удалить их и создать новые с такими же названиями. Если не получается удалить папку почитайте как удалить неудаляемое, но это не обязательно.
   Если всё равно не работает служба Windows Installer, то проверьте права на папку «C:\Config.Msi», сюда «система» также должна иметь полный доступ. В этом случае вы могли наблюдать ошибку «Error 1310».
   На всякий случай убедитесь, что к папке КУДА вы инсталлируете софт также есть все права.
Если вы используете шифрование папок, то отключите его для указанных мной папок. Дело в том, что хотя мы сами имеем к ним доступ, служба Microsoft Installer не может до них достучаться пока они зашифрованы.
Ещё ошибка может быть связана с битым файлом. Может быть он не полностью скачался или оказался битым уже на сервере. Попробуйте скачать его ещё раз оттуда же или лучше с другого места.
Ошибка установщика Windows
   В случае общих проблем не будут устанавливаться никакие msi файлы, процесс установки, скорее всего, даже не начнётся. При этом могут появляться ошибки вида:
  •  Нет доступа к службе установщика Windows
  •  Не удалось получить доступ к службе установщика Windows
  •  Ошибка пакета установщика Windows
или ещё нечто подобное со словами «ошибка msi», «Windows Installer Error».
  Всё это означает, что система дала сбой и теперь её надо лечить. Может вы ставили какой-то софт, который испоганил системные файлы и реестр, или подхватили вирус. Конечно, никогда не будет лишним удалить вирусы или убедиться что их нет. Но оставьте этот вариант на потом, т.к. обычно проблема кроется в другом.
   Сначала давайте проверим работает ли служба Windows Installer:
   1. Нажмите «Win + R» и введите services.msc
  2. Найдите в конце списка службу «Установщик Windows» или «Windows Installer»
  3. Тип запуска должен быть «Вручную». Если она «Отключена», то зайдите в «Свойства» и выберите «Вручную»
 4. Затем кликните по ней правой кнопкой и выберите «Запустить» или «Перезапустить». Если ошибок нет и состояние переходит в режим «Работает», то здесь всё нормально.
 5. Нажмите «Win + R» и введите msiexec. Если модуль MSI работает нормально, то должно появиться окно с версией установщика и параметрами запуска, а не ошибка.

   Следующее что я посоветую сделать – это выполнить команду сканирования системы на повреждённые и изменённые системные файлы. Нажмите «Win + R» и введите
Sfc /scannow
Произойдёт поиск и замена испорченных файлов на оригинальные, при этом может потребоваться вставить установочный диск с Windows. После окончания процесса перегрузитесь и посмотрите, решена ли проблема.
Microsoft сам предлагает утилиту, призванную решить нашу проблему. Зайдите на https://support.microsoft.com/en-us/kb/2970908 и запустите программу FixIt. Следуйте мастеру, и возможно ваша проблема будет решена.

Следующий способ устранения ошибки – восстановление рабочих параметров установщика Windows Installer. Для этого скачайте архив и запустите оттуда два reg-файла, согласитесь с импортом настроек.