В этой статье я расскажу об исправлении одной очень распространенной ошибки Windows Installer. Обыскавши Интернет как русскоязычный, так и англоязычный, включая форумы и ньюсгруппы Microsoft, я понял что ошибка довольно распространенная, однако исправить ее, на самом деле никому не удавалось.
Суть проблемы
Как то одним жарким летним вечером я решил установить на свой компьютер ActeiveState ActivePerl. Скачал инсталлятор, который был в .msi файле и запустил его. Каково же было мое удивление, когда вместо привычного инсталлятора я увидел вот это:
Как вскоре оказалось, подобная ошибка выпадала при запуске на моем компьютере любого .msi файла.
Недолго думая, я полез в интернет, ввел в поиск появившееся сообщение, и, «О ужас!» — я увидел сотни постов людей с этой проблемой! В русскоязычном и англоязычном сегменте Интернета у множества людей была аналогичная проблема, и никто ее не смог решить по существу.
Решение проблемы
Для начала я включил Log-файл установщика Windows. Как включить лог Windows Installer вы можете почитать здесь, или поискать в любом поисковике по ключевому слову «voicewarmup».
Лог-файлы появляются во временной папке пользователя, которая обычно находится по пути C:\Users\имя_профиля\AppData\Local\Temp. Открыв лог, я увидел следующую ошибку:
MSI (c) (B8:84) [22:08:06:894]: Failed to connect to server. Error: 0x80040154
Поискав по коду ошибки в Интернете, и не нашедши никаких способов решения проблемы, я решил подумать логически.
Что означает ошибка 0x80040154? Поискав в поисковике, и воспользовавшись утилитой Error Lookup, я определил, что ошибка означает «Класс не зарегистрирован».
Обычно такая ошибка появляется, когда вы запрашиваете у системы создать COM-объект, который не был должным образом зарегистрирован в реестре. Но как определить какой именно объект не зарегистрирован?
Для начала я воспользовался старым добрым отладчиком WinDbg, который входит в пакет Debugging Tools For Windows. Мне понадобилась именно 64-разрядная версия данного отладчика.
Перед началом отладки необходимо загрузить отладочные символы для распознавания имен системных функций и переменных. Эти символы являются довольно полезной вещью не только для поиска ошибок, но также и для исследования работы Windows в целом.
Я предпочитаю указывать отладчику путь для поиска символов через переменную среды _NT_SYMBOL_PATH, которая должна быть задана как: C:\Symbols;srv*C:\Symbols*https://msdl. microsoft. com/download/symbols. В данном случае папка C:\Symbols — это хранилище загруженных символов на жестком диске, чтобы отладчик каждый раз не лез в интернет за ними.
Загрузил я в отладчик файл c:\windows\system32\msiexec. exe и задал для него параметры командной строки так, чтобы он открыл .msi файл. В моем случае параметром командной строки было: /i «C:\Users\MAV\Desktop\ActivePerl-5.12.4.1205-MSWin32-x64-294981.msi» однако можно задавать путь к любому другому .msi файлу.
Сам по себе отладчик, конечно не решит проблему, нужно ее локализовать. Поразмыслив, какие функции могут создавать COM-объекты, я остановился на CoCreateInstance, CoCreateInstanceEx и CoGetClassObject
Для установки точек прерывания на эти функции вводим в командной строке отладчика:
bp ole32!CoCreateInstance
bp ole32!CoCreateInstanceEx
bp ole32!CoGetClassObject
Если точки останова у вас не ставятся, значит вы неправильно настроили символы.
После запуска приложения (F5), срабатывает точка останова на ole32!CoCreateInstance. Если точка останова не срабатывает, а выпадает окно с параметрами Wndows Installer, то вы неправильно указали параметры командной строки для запуска.
Давайте теперь посмотрим, из какого же места кода вызывается создание нашего объекта, для этого мы можем нажать Debug->Step Out (Shift+F11). Мне пришлось нажать указанную комбинацию дважды, для того чтобы выйти в исходную вызывающую функцию.
Исходная вызывающая функция называется msi! CreateMsiServerProxy и, очевидно, находится в модуле msi. dll.
Запомнив имя функции, а также примерный вид искомого кода, я открыл дизассемблер IDA Pro, и загрузил в него файл msi. dll. Следует отметить пару особенностей данного отладчика: во первых, IDA любит блокировать доступ к исследуемому файлу, во вторых, она создает в папке с исследуемым файлом несколько своих файлов баз данных, так что я рекомендую копировать исследуемые файлы в отдельную папку. В третьих, IDA не всегда подгружает файлы с символами, поэтому рекомендую в указанную отдельную папку также скопировать файл msi. pdb из вышеуказанной папки C:\Symbols.
После нахождения функции CreateMsiServerProxy, находим знакомые строки кода в ней:
Не иначе как функция пытается создать объект по CLSID IID_IMsiServer. Здесь я не буду вдаваться в подробности COM и искать различия между CLSID и IID, важно что я получил зацепку — имя интерфейса ID_IMsiServer и CLSID .
Windows Registry Editor Version 5.00
После импорта ключа реестра я вновь попробовал запустить .msi файл, и, «О чудо!», он запустился, после чего я успешно установил ActivePerl.
У вас может быть аналогичная проблема, но при этом отсутствовать другой ключ реестра. Импортировать при этом необходимо те ключи, которых у вас нет.
Выводы
Спасибо за внимание, я очень надеюсь что статья вам понравилась, жду ваших отзывов, а также с удовольствием отвечу на ваши вопросы.
Лучшие хитрости, чтобы исправить ошибку 0x80040154
Решения
Причины ошибок
Чтобы избежать неудобств при запуске программ на ПК с Windows, рекомендуется устранить ошибку 0x80040154.
Дополнительная информация и ручной ремонт
Вот некоторые из лучших методов, которые вы можете попытаться решить с помощью кода ошибки 0x80040154 на вашем компьютере:
# 1. Используйте Regsvr32.exe для повторной регистрации неисправного компонента COM
Это один из способов решить код ошибки 0x80040154. Regsvr32.exe это программа, которую вы можете использовать для регистрации DLL (Dynamic Link Libraries) и элементов управления ActiveX в реестре.
Чтобы использовать этот файл для повторной регистрации неисправных компонентов COM, просто откройте командную строку с повышенными привилегиями. Если 32-разрядная DLL находится в папке% systemroot% System32, переместите ее в папку% systemroot% SysWoW64.
# 2. Установите и запустите Restoro PC Fixer.
Другой альтернативой является загрузка Restoro. Это новый, продвинутый и инновационный инструмент для ремонта ПК, в котором используется множество утилит, таких как Active X control и class fixer, системный оптимизатор, антивирус и очиститель реестра.
Имеет удобный интерфейс с простой навигацией. Это делает его довольно простым в использовании для всех уровней пользователей. Это безопасно, быстро и совместимо со всеми версиями Windows.
Была основана Активное управление X и утилита класса сканирует весь ваш компьютер, обнаруживает и устраняет все ошибки, такие как 0x80040154, вызывая проблемы ActiveX и ID класса в считанные секунды.
Помимо этого, Restoro предлагает и другие преимущества. Запустив это программное обеспечение в своей системе, вы также можете обеспечить хорошее состояние и производительность ПК, поскольку оно также удаляет антивирусы, устраняет проблемы с реестром, исправляет поврежденные файлы DLL, а также повышает скорость вашего ПК.
DLL-файлы часто могут быть повреждены или повреждены из-за перегрузки данных. Это связано с реестром. Если вы не чистите реестр часто, он перегружается данными и повреждает файлы DLL.
Однако с помощью встроенной в программу утилиты очистки реестра вы можете легко восстановить эти файлы. Очиститель реестра удаляет все ненужные файлы из вашей системы, занимающие дисковое пространство, и одновременно исправляет поврежденные файлы DLL и восстанавливает реестр.
Однако, если файлы DLL повреждены из-за атаки вредоносного ПО, антивирусный модуль позаботится о них. Он удаляет все вредоносное ПО, такое как рекламное ПО, шпионское ПО, вирусы и трояны, и восстанавливает ваши файлы.
Нажмите чтобы загрузить Restoro на свой компьютер и устранить ошибку 0x80040154 на своем ПК прямо сейчас!
Ошибка 0x80040154 в Microsoft Security Essentials: методы решения
Ошибка 0x80040154 может появиться на вашем компьютере без каких-либо предвещающих на то событий. Большинство пользователей утверждают, что до начала сессии с ошибкой, их ПК функционировал нормально. 0x80040154 относиться к работе Microsoft Security Essentials.
При ее появлении, пользователь лишается возможности открывать Microsoft Security Essentials или удалять его. Также нужно упомянуть о том, что данная проблема может возникнуть на любой стадии использования Windows, например, во время открытия какого-нибудь почтового клиента или Skype.
Так из-за чего возникает указанная ошибка? Иногда сторонние антивирусы на вашем компьютере могут создавать конфликты с Microsoft Security Essentials. Даже если вы удалите этот конфликтный антивирус, то он все равно, скорее всего, продолжит вызывать проблему, так как тот оставил за собой некоторые файлы в системе. Еще одной причиной может служить заражение вирусами, которые каким-то образом смогли изменить файлы Microsoft Security Essentials, либо повредить их.
Решаем ошибку
Метод №1 Выполнение Восстановления системы
Сразу же давайте начнем с самого простого – восстановление системы. Если ошибка 0x80040154 является следствием воздействия вирусов или вредоносного ПО, то можно выполнить Восстановление, чтобы вернуть свою систему в более стабильное состояние, т. е. вы отмените те изменение в системе, которые привели к этой ошибке.
Теперь вашему компьютеру потребуется перезагрузка и немного времени на выполнение Восстановления системы.
Метод №2 Удаление сторонних антивирусов
Убедитесь, что вы удалили такие сторонние антивирусы, как Norton или McAfee с вашей системы. Если вы не уверены в их установке, то это можно легко проверить. Для этого сделайте следующее:
Как только избавитесь от стороннего антивируса, то попробуйте запустить Microsoft Security Essentials и проверьте наличие ошибки 0x80040154.
Метод №3 Удаление Microsoft Security Essentials
Если файлы Microsoft Security Essentials подверглись каким-то изменениям или были повреждены, то удаление и повторная их установка должна полностью исправить ситуацию.
Для удаления Microsoft Security Essentials достаточно просто зайти в «Программы и компоненты». Однако, этот привычный способ удаления не всегда может избавиться от всех файлов этого пакета антивирусных приложений.
Подождите окончания процесса. Как только все завершиться, перезагрузите свой компьютер. Затем пройдите на сайт Microsoft и скачайте пакет Microsoft Security Essentials. Установите его, а затем проверьте наличие проблемы в виде ошибки 0x80040154.
https://habr. com/ru/sandbox/33155/
https://errortools. com/ru/outlook/how-to-fix-0x80040154-error-code/
https://gamesqa. ru/kompyutery/0x80040154-6683/