Удаление с помощью функции «Добавить / удалить» не удаляет файлы, ключи реестра или службы, которые должны

Итак, я пытался понять, как работает установщик Windows, пытаясь решить эту проблему. В его нынешнем виде я иду в раздел «Установка и удаление программ» и удаляю программное обеспечение.
Я думаю, это вызываетmsiexec.exe /x {product id}и удаляет программное обеспечение. Проблема в том, что единственное, что он действительно удаляет, - это значок на рабочем столе и пара файлов, и я думаю, один ключ реестра.

С тех пор я пытался понять, что именно msiexec.exe /x делает при его вызове. Я думаю, он просматривает InstallExecuteSequence таблицу в .msi файле и выполняет все действия? Я действительно не уверен на 100%. Заглянув внутрь файла .msi, я вижу, что есть таблица RemoveFile иRemoveRegistry, а также действие DeleteService, но я просто не понимаю, как все это сочетается друг с другом и почему он не удаляет все, что помещает, когда я устанавливаю программное обеспечение .

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


person user1427105    schedule 30.05.2012    source источник


Ответы (3)


Я решил эту проблему, создав настраиваемые действия, которые вызывали файлы .bat для удаления всего.

Если вам нужна помощь, вы можете посмотреть в этом ответе, что делать: https://stackoverflow.com/a/998756/1427105

person user1427105    schedule 04.06.2012

Удалить файл и т. Д. Предназначены для обновления до новой версии. Т.е. в старой версии был файл old.dat, в новой - new.dat, поэтому вы говорите msi удалить old.dat и привести его в порядок.

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

person Tony Hopkinson    schedule 30.05.2012
comment
Результат одинаков на всех машинах, и возможно, что база данных установщика испорчена. Я просто не уверен, где искать, чтобы определить проблему с этим. На самом деле единственный ресурс, который у меня есть для решения этой проблемы, - это возможность редактировать файл .msi. Если есть что-то еще, что мне придется отредактировать или решить, мне нужно будет принять меры для этого. - person user1427105; 31.05.2012
comment
Полностью чистая машина, если она успешно устанавливается, но не удаляется, должна быть сама msi - person Tony Hopkinson; 01.06.2012

Поскольку ваша конечная цель - удалить службу / программное обеспечение, вы можете использовать следующую команду (запустите ее из оболочки "cmd"):

    wmic product where name="product name" call uninstall

Чтобы просмотреть дополнительные примеры / документацию по команде wmic: перейдите сюда

person timmeyh    schedule 30.05.2012
comment
Извините, я должен был добавить, что это моя конечная цель с помощью программы добавления / удаления. Я могу удалить все без проблем, но теперь мне нужно сделать это с помощью функции «Добавить / удалить», которая, как я уже упоминал, вызывает msiexec.exe / x {код продукта}, так что на самом деле здесь нет никакого решения. Последовательность InstallExecuteSequence, с которой я имею дело, похожа на последовательность ссылка Правильно ли я говорю, что когда вы удаляете программное обеспечение, оно снова проходит через эту таблицу последовательности? Я действительно не вижу, чтобы он мог делать что-нибудь еще. - person user1427105; 31.05.2012