Я прищурился, как я могу удалить свою программу?
Мой установщик Wix работал над установкой моей программы, но он был поврежден для удаления. Файл удаляется слишком рано, и он нуждается в дальнейшем в строке. Деинсталлятор терпит неудачу и возвращает изменения.
Это означает, что я не могу удалить пакет с моей машины и, следовательно, не могу установить дальнейшие сборки моего установщика (значительные неудобства). Как я могу принудительно удалить пакет?
Ответы
Ответ 1
-
Найдите свой пакет в C:\Windows\Installer
, где Windows хранит копии установленных пакетов MSI. Имена генерируются случайным образом, поэтому вам нужно будет посмотреть даты создания файлов.
-
Откройте файл MSI с Orca.
-
Удалить нарушающее пользовательское действие из Таблица CustomAction
Теперь вы сможете удалить пакет.
изменить: в соответствии с @darkrock76 ниже, папка для шага 1 также может быть C:\ProgramData\Package Cache\
. У меня есть оба на моей машине Windows 7 SP1. Я не мог сразу найти документацию об этом.
Ответ 2
В зависимости от конкретной причины описанного вами поведения у вас может быть как минимум пара опций.
Если причиной сбоя является пользовательское действие, которое выполняется при удалении, и это настраиваемое действие обусловлено некоторыми свойствами, на которые вы можете повлиять, вы можете попытаться передать нужное значение через командную строку:
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, и после этого вы сможете удалить его обычным способом.
Замечание: вы должны протестировать свою установку на виртуальной машине, чтобы не рисковать своим реальным.
Ответ 3
Эта команда обычно работает для меня:
msiexec /fv installer.msi
Он несколько расширяет программу установки, поэтому вы можете попробовать еще раз с исправленной.
Однажды эта команда не работала, и мне пришлось использовать Microsoft FixIt. Это решило проблему (довольно шокирую для меня).
Ответ 4
FYI: в Windows 8.1 установщики были перемещены здесь: C:\ProgramData\Package Cache\
Ответ 5
Microsoft FixIt разобрал его для меня, я нашел детали в базе знаний.
Ответ 6
Если вы действительно в отчаянии, и все вышеперечисленные решения не работают, попробуйте
msizap.exe
Это приведет к стиранию всего, что ваш установщик поставил на машину
МАЛЕНЬКИЕ ПРЕДУПРЕЖДЕНИЯ
Не запускайте msizap, не зная, с какими параметрами вы хотите его запустить (для списка параметров сначала запускается msizap/?).
Ответ 7
Обычно я просто смотрю <Your Installer Name>.msi
или <Your Installer Company Name>
в реестре и удаляю некоторые из ключей удаления из некоторого из Products
под деревьями установщика Windows, и все, что обычно работает нормально и dandy впоследствии, хотя это WOODD оставляют некоторые вещи, лежащие вокруг, как кэшированные инсталляторы, и, возможно, множество других разделов реестра для каждого установленного файла и т.д., Но его ВСЕГДА работали для меня при разработке инсталляторов, потому что честно, кто заботится, если один MSI оставлен и кэширован где-то? Вы все равно используете машину для разработки, верно?