wix: обновление не удаляло предыдущий продукт из ARP - PullRequest
1 голос
/ 29 марта 2012

Используя Wix 3.5, мой первоначальный пакет MSI (MyProduct v1.0) содержал довольно много функций, например MS Word 95 / XP / 2003/2007/2010, MS Excel 95 / XP / 2003/2007/2010, MS PowerPoint 95 / XP / 2003/2007/2010. Их уровень возможностей изначально был установлен на 0, но установлен на 1, если конкретное приложение существовало (используя AppSearch). Другими словами, если MS Office 2003 был установлен, только функции Word 2003, Excel 2003 и PowerPoint 2003 имели уровень = 1, а остальные остались равными 0.

Недавно я сделал пакет обновления MSI (MyProduct v2.0), используя тот же подход, который говорили люди, например, Как реализовать обновление установщика WiX?

И я запланировал «RemoveExistingProducts» После = «InstallValidate» в «InstallExecuteSequence» .

Вот фатальная ошибка: предположим, что у пользователя был MS Office 2003, когда он установил MyProduct v1.0. Теперь он обновил MS Office до Office 2007 (поэтому Office 2003 больше не существует), прежде чем он обновил MyProduct до версии 2.0. Мой установщик не может справиться с этим. Зачем? Я попытался удалить старые функции (например, Word 2003 и т. Д.), Используя настраиваемое действие типа 1, вызвав функцию MsiSetFeatureState. Хотя эта функция возвратила ERROR_SUCCESS, их состояния не были установлены на ABSENT, но остались как NULL (я знаю, что уровни возможностей для Word 2003 и т. Д. Равны 0, так как они больше не существуют, и я считаю, что поэтому состояние функции не изменилось) и я сдался в конце концов. (Если у вас есть идея заставить это работать, пожалуйста, ведите меня к свету !!!)

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

Case1: обновление без обновления MS Office (работает)

Когда я тестировал обновление без обновления MS Office, обновление работает, и в «Установка и удаление программ» есть только одна запись (MyProduct v2.0): обновление удаляло более раннюю запись продукта из ARP.

Case2: обновление после обновления MS Office (катастрофа) * ​​1021 * Однако, если я обновлю Office с Office 2003 до Office 2007 и затем выполню обновление MSI, будут установлены не только функция Word 2003 / Word 2007, но также есть две записи (MyProduct v1.0 и MyProduct v2.0 ) в ARP. Если я пытался удалить v1.0 в ARP, он, казалось, удалял его, но если я обновляю ARP, v1.0 появляется снова, поэтому я даже не могу удалить v1.0. Я сравнил файлы журнала, сгенерированные для обоих случаев, но не сказал мне, почему. И я понятия не имею, почему. Кто-нибудь может мне помочь?

...