Я облажался, как я могу удалить свою программу?

StackOverflow https://stackoverflow.com//questions/9700646

Вопрос

Мой установщик Wix сработал при установке моей программы, но он не работает при деинсталляции.Файл удален слишком рано, и он необходим в дальнейшем.Деинсталлятор завершает работу с ошибкой и отменяет свои изменения.

Это означает, что я не могу удалить пакет со своего компьютера и, следовательно, не могу установить какие-либо дальнейшие сборки моего установщика (значительное неудобство).Как я могу принудительно удалить пакет?

Это было полезно?

Решение

Обновление, Штейн Осмул: внедрение этого нового списка подходов к очистке.


  1. Найдите свой пакет в C:\Windows\Installer, где Windows хранит копии установленных пакетов MSI.Имена генерируются случайным образом, поэтому вам придется смотреть даты создания файлов.

  2. Откройте файл MSI с помощью Орка.(К сожалению, простой загрузки установщика orca не существует.Вы можете получить его, установив «MSI Tools» из Windows 10 SDK, а затем выполните поиск orca.msi в C:\Program Files (x86)\Windows Kits.)

  3. Удалите нарушающее пользовательское действие из Таблица CustomAction

Теперь вы сможете удалить пакет.

редактировать:согласно ответу @darkrock76 ниже, папка для шага 1 также может быть C:\ProgramData\Package Cache\.У меня есть оба на моем компьютере с Windows 7 SP1.Я не смог сразу найти документацию по этому поводу.


ОБНОВЛЯТЬ:Привет, Вим! Спасибо за полезную информацию о COM без регистрации, которую вы предоставили ранее!Несколько обновлений по этой проблеме удаления:ответ darkrock76 неверен, пожалуйста, посмотрите мой комментарий к нему ниже.Кроме того, вместо удаления настраиваемого действия на шаге 3 выше вы можете установить его условие в таблице InstallExecuteSequence на 0 (числовой ноль == false), чтобы предотвратить его запуск.Удаление записи таблицы настраиваемых действий оставляет несколько неработающих ссылок на внешние ключи (я думаю, в какой-то момент это может привести к сбою). Инструмент Microsoft FixIt также можно попробовать, прежде чем прибегать к этому хаку.Есть некоторые альтернативные бесплатные инструменты/редакторы/просмотрщики MSI (внизу) помимо Орки.Возможно, пользователю также следует заархивировать исходный MSI перед редактированием, но я думаю, это подразумевается.Пожалуйста, удалите этот беспорядочный комментарий, как только вы его получите - я мог бы написать краткое описание различных способов принудительного удаления, если у меня будет время (инструмент FixIt MS, используя небольшие обновления, напрямую редактирует кэшированный MSI, применяет преобразование для удалить и все остальное, что есть).Продолжайте развертывание :-).Ваш ответ COM без регистрации очень помог мне (Штайну) в прошлом.Большое спасибо.

И забыл одно: вы можете найти фактический MSI-файл кеша с помощью Powershell.Это было за одну посылку, вы также можете получить за все пакеты (прокрутите вниз до первого скриншота).

Другие советы

Эта команда обычно работает для меня:

msiexec /fv installer.msi
.

Это несколько пересматривает установщик, так что вы можете попробовать еще раз с исправленным.

Одно время эта команда не работает, и мне пришлось использовать Microsoft Fixit.Это решило проблему (довольно ударный для меня).

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

Если причиной сбоя является пользовательское действие, которое выполняется при удалении, и это пользовательское действие обусловлено некоторыми свойствами, на которые вы можете повлиять, вы можете попытаться передать желаемое значение через командную строку:

msiexec /x {YOUR-PRODUCTCODE-HERE} RUNMYACTION=false

В этом примере RUNMYACTION это свойство установщика Windows, которое участвует в пользовательском условии действия, и если вы передадите false как и его значение, действие не будет выполнено.

В противном случае вы можете исправить логику (или просто явно отключить пользовательское действие) и создать новый пакет MSI.Затем загрузите его на этот целевой компьютер и запустите следующим образом:

msiexec /i YourPackage.msi REINSTALL=ALL REINSTALLMODE=vomus

Здесь YourPackage.msi это новый фиксированный пакет, REINSTALL=ALL инструктирует msiexec чтобы переустановить продукт, используя этот новый пакет, и REINSTALLMODE=vomus (тот v часть этого) повторно кэширует пакет MSI, и впоследствии вы сможете удалить его обычным способом.

Дополнительное примечание:вам следует протестировать свою установку на виртуальной машине, чтобы не рисковать своей реальной.

fyi: в Windows 8.1 Установщики были перемещены здесь: C: \ ProgramData \ Пакет Cache \

Обычно я просто ищу <Your Installer's Name>.msi или <Your Installer's Company Name> в реестре и удалите некоторые ключи удаления из некоторых Products под деревьями установщика Windows, и после этого все обычно работает нормально и денди, хотя это было бы оставьте какой-нибудь материал валяться где попало, например, кэшированные установщики и, возможно, тонны других разделов реестра для каждого установленного файла и т.д.но его всегда сработало у меня при разработке установщиков, потому что, честно говоря, кого волнует, если один MSI остался и где-то кэширован?Вы все равно используете машину для разработки, верно?

Я использовал этот маленький инструмент также от Microsoft

https://support.microsoft.com/en-us/help/17588/fix-problems-that-block-programs-from-beed-installed-fromed

В основном этот инструмент может быть использован для «исправления, включая поврежденные ключи реестра, которые блокируют вас от установки или удаления программ»

Что он исправляет:

  1. поврежденные ключи реестра на 64-битных операционных системах

  2. Поврежденные ключевые ключи реестра, которые контролируют данные обновления

  3. Проблемы, которые предотвращают установку новых программ

  4. Проблемы, которые предотвращают полностью удаление существующих программ, или обновляются

  5. Проблемы, которые блокируют вас от удаления программы через добавление или удаление программ (или программ и функций) на панели управления

  6. Его можно использовать для:

      .
    • Windows 7
    • Windows 8
    • Windows 8.1
    • Windows 10
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top