Деинсталлятор Pro — удаление, чистка и диагностика для OpenCart 3.x / ocStore 3.x
Деинсталлятор Pro — модуль, который удаляет установленные модули целиком и без следов, а заодно находит то, что сломалось или осталось в магазине после старых установок, обновлений и переезда на другой сервер. До удаления он показывает всё, что будет удалено: каждый файл, модификацию OCMOD, событие и запись в базе. Файлы движка и других модулей защищены, перед удалением сохраняется архив, из которого модуль можно вернуть.
Зачем он нужен
Штатная корзина в истории установщика OpenCart 3 удаляет файлы пакета вслепую: если модуль при установке перезаписал файл движка, корзина удалит и его. Папку, которую установщик создал для модуля, корзина стирает целиком — вместе с файлами других модулей. В LiveStore так пропадают модели всех модулей сразу, и админка падает с ошибкой «Could not load model». Настройки, события, права доступа и модификации остаются в базе, а изменённые копии удалённых файлов продолжают работать из кэша модификаций. За годы работы магазина таких следов накапливаются десятки, а после переезда к ним добавляются старые пути, пропавшие картинки и модификации, которые перестали применяться. Деинсталлятор находит всё это и показывает понятным списком.
Удаление модулей
- Предпросмотр перед удалением. Файлы, папки, модификации OCMOD, события, расширения и записи установщика — у каждой строки статус: удалится или останется и почему. Пока удаление не подтверждено, в магазине ничего не меняется.
- Защита файлов движка и чужих файлов. Перезаписанный модулем файл движка не удаляется, файлы других пакетов остаются на месте, папки удаляются, только если опустели.
- Защита штатной корзины. Пока модуль установлен, даже штатная кнопка удаления в истории установщика не стирает общие папки и папки с файлами других модулей; файлы удаляемого пакета удаляются как обычно. Особенно важно для LiveStore.
- Один модуль — одна строка. Записи обновлений собраны вместе, раскрываются и объединяются в последнюю. Разные модули с одинаковым именем архива не склеиваются.
- Понятные цифры. Подсказки при наведении на «Файлы на месте». Пакеты на десятки тысяч файлов показываются по папкам и открываются за секунды.
- Штатная деинсталляция. Собственная процедура удаления модуля, затем запись расширения, настройки, экземпляры модуля, места в схемах и права доступа.
- OCMOD и кэш модификаций. Модификации удаляются, модификаторы обновляются автоматически, копии в кэше тоже удаляются. Модификаторы без установщика (в базе и system/*.ocmod.xml) — так же.
- Архив для отката и удаление по ZIP. Архив ставится обратно штатным установщиком; модули, залитые по FTP, находятся по их архиву.
Установочный архив из того, что стоит на сайте
Исходного архива модуля не осталось, а он нужен на другом сайте? Кнопка в строке модуля собирает обычный .ocmod.zip: все файлы модуля в том виде, в каком они лежат на сервере, и его модификации OCMOD в install.xml. Файлы движка в архив не попадают, а что не вошло — перечислено внутри архива.
Поиск файлов вне истории установки
Если установщик зарегистрировал только меню OCMOD, модуль дополнительно ищет собственные файлы по буквальным ссылкам модификатора и точному коду расширения: контроллеры, модели, языки, шаблоны, ресурсы, библиотеки и конфигурацию. Найденное входит в анализ и экспорт, но первоначально не выбрано на удаление; связанное расширение тоже нужно выбрать вручную после проверки состава.
При первом проходе структура сохраняется в собственном реестре. Повторное открытие использует кеш; изменение источников или состава каталогов вызывает новый поиск. Защита движка, наличие файлов и принадлежность другим пакетам проверяются каждый раз. После удаления OCMOD связи оставшихся файлов и запись установки сохраняются, очистка «хвостов» не считает такую запись пустой.
Полнота оригинального дистрибутива поставщика не гарантируется: динамические зависимости и файлы с другими именами могут потребовать ручной проверки. Неполный обход блокирует экспорт и удаление, ошибка записи реестра блокирует удаление до исправления прав служебной папки.
Проверка «хвостов» и диагностика
- Следы удалённых модулей. События без обработчика, расширения без файлов, пустые записи установщика, пустые места в схемах, копии в кэше модификаций без оригинала, лишние права доступа — очистка в один клик.
- Модификации, которые не применились. Какая модификация, в каком файле и какой код не найден. Реальные поломки отделены от запасных вариантов под другую версию движка и от правок неиспользуемой темы.
- Пути старого сервера. Абсолютные пути в настройках, которых на этом сервере нет, — с подсказкой, как путь выглядит сейчас.
- Таблицы без хозяина. Таблицы базы, на которые нет ссылок в коде и модификациях, — обычно данные давно удалённых модулей.
Безопасная уборка после переездов и обновлений
Анализ изображений сохраняется с датой. Повторное открытие без обхода, ручное обновление, страницы и поиск по всему отчёту. Все кандидаты первоначально не отмечены. Исключения защищают файлы и папки на сервере.
У сломанной ссылки видны название, статус и тип изображения. Выборочная очистка убирает стандартное поле фото либо только сломанный img из описания. Прежние значения сохраняются для отмены; последующие правки не перезаписываются. Неизвестные схемы и настройки доступны для ручной правки. Перед удалением изображений обязателен ZIP с проверенным содержимым.
Обновления со сменой ZIP распознаются по собственному контроллеру. Связанные установки выбираются явно. Объединение истории сохраняет файлы, OCMOD и настройки.
Изображения
- Неиспользуемые изображения и пустые папки. Ссылки ищутся во всех таблицах магазина и в файлах тем; группировка по папкам, миниатюры, поиск, архив перед удалением.
- Бережно к служебным папкам. Картинка, вставленная в описание миниатюрой из кэша, считается используемой; исходники оптимизаторов изображений (например, Lightning) и папки кэша не предлагаются к удалению.
- Старая папка image/data. После переезда с OpenCart 1.5 / ocStore 1.5: используемые файлы не трогаются, остальные показаны отдельно и не отмечены.
- Ссылки на отсутствующие изображения. Товары, производители, категории, статьи и баннеры со ссылками на пропавшие картинки — со ссылкой на редактирование и подсказкой, где файл может быть.
Как это работает
Модуль не меняет файлы движка. Для лицензии создаётся собственная служебная таблица; журнал и реестр найденных файлов хранятся в служебной папке магазина. Пункт меню «Расширения → Деинсталлятор» и кнопка-ластик у каждой записи истории установщика подключаются событиями (Events). Удаление идёт по шагам, перед каждым шагом пакет проверяется заново — удаляется ровно то, что было в предпросмотре. Диагностика только показывает и ничего не исправляет без вашего действия.
Установка
- Загрузите архив через «Расширения → Установка расширений».
- В «Расширения → Расширения → Модули» установите «Деинсталлятор Pro».
- Обновите модификаторы в «Расширения → Модификаторы», затем откройте «Расширения → Деинсталлятор».
Совместимость
Проверено:
- OpenCart 3.0.4.1
- ocStore 3.0.3.9
- ocStore 3.0.2.0 — действующий магазин с долгой историей и переездом
- PHP 7.4, 8.2 и 8.4
Для архивов нужно расширение PHP ZipArchive. Языки админки: русский и английский.
Модуль не удаляет таблицы базы данных (это делает собственная процедура удаления модуля), не восстанавливает перезаписанные файлы движка и не трогает файлы вне папок штатного установщика. Выгруженный архив закодированного модуля или модуля с лицензией на домен работает только с лицензией для нового сайта. OpenCart 2.x и 4.x не поддерживаются.
Поддержка
Поддержка включает консультации по установке и исправление ошибок модуля на заявленных совместимых версиях. Доработка под кастомные сборки обсуждается отдельно.
Список изменений
Лицензия
Пробная лицензия на 72 часа запрашивается автоматически, ключ вводить не нужно. После подтверждения покупки автором лицензия становится бессрочной для домена главного магазина; дальше модуль проверяет подпись локально.
В шапке модуля есть экран «Лицензия»: состояние, срок, пометка с площадкой и номером заказа, «Проверить сейчас» и поле для готовой строки от автора. Для подтверждения используйте контакты на этом экране. Хостинг без исходящих запросов, магазин без HTTPS или в подпапке: вставьте полученную от автора строку.
После окончания пробного периода недоступны удаление пакетов, очистка хвостов и изображений, объединение записей и экспорт установочного пакета. Анализ, диагностика, журнал, руководство, скачивание сохранённых архивов и защита штатной корзины остаются доступны; данные и архивы сохраняются.
Тестовые адреса localhost, IP, .local и .test работают без активации. Одна лицензия действует на всю установку, при смене главного домена потребуется новое подтверждение. Обновление и переустановка лицензию не сбрасывают; cron не требуется.