Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: user1427105Ответов: 3

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

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

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

cmdwindowswindows-installeruninstallation

Ответы

Ответ 1 · рейтинг 1 · user1427105

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

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

Ответ 2 · Tony Hopkinson

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

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

Ответ 3 · timmeyh

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

    wmic product where name="product name" call uninstall

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы