Главное обновление WiX не запускается, когда я удаляю модуль слияния из проекта

У меня есть проект WiX, который включает установку компонентов среды выполнения Visual C ++ 2008 для x86 с отдельным модулем слияния.

К сожалению, есть хорошо известная проблема с этим .msm в MSI v4.5. Чтобы быть более конкретным, для выполнения настраиваемого действия .msm SxSUninstallCA требуется 20 минут при удалении.

Итак, короче говоря, я решил удалить .msm из новой версии продукта, установив компоненты VC ++ с файлом .exe незаметно.

Если я изменю только эту вещь (и, конечно, ProductCode), программа установки не обнаружит уже установленный продукт на машине и выполнит обычную установку, не удаляя сначала старую версию.

Есть идеи, что здесь происходит? Следует ли MSI проверять коды UpgradeCode и ProductCode, чтобы определить, является ли продукт обновлением другого продукта, уже установленного в системе?


person Paolo    schedule 03.08.2010    source источник


Ответы (3)


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

person SebastianD    schedule 28.11.2011

Если вы хотите, чтобы новый MSI обновлял старый MSI (и вам нужно использовать Major Upgrade, потому что вы удаляете компоненты), тогда, да, вам нужно использовать элементы UpgradeCode и Upgrade (или в WiX v3.5 вы можете использовать новый элемент MajorUpgrade).

Если вы предоставите более подробную информацию о том, что находится в ваших файлах .wxs, я могу быть более конкретным.

person Rob Mensching    schedule 03.08.2010
comment
Мой комментарий был слишком длинным, я добавил его как ответ ниже. Заранее благодарны за Вашу помощь. - person Paolo; 03.08.2010

Проект настроен на использование UpgradeCode и ProductCode для обнаружения обновления. Например: я создаю .msi с помощью:

ProductCode="05406C5C-8D66-4779-AECA-A93B18729ED5"  
UpgradeCode="05B87404-548E-4BEA-9621-FBF9459F25B0"  
PackageCode="*"  
Version="1.1.1"  

Этот .msi-файл содержит файлы и папки для установки, а также модуль слияния Microsoft_VC90_CRT_x86.msm.

Затем я создаю еще один .msi со следующими параметрами

ProductCode="7F626A0C-5E69-496D-999E-8E2B14C01FE6"  
UpgradeCode="05B87404-548E-4BEA-9621-FBF9459F25B0"  
PackageCode="*"   
Version="1.1.2"  

Те же файлы, модуль слияния все еще включен: он работает, приложение обновляется (удалена предыдущая версия, установлена ​​новая версия). В тот момент, когда я комментирую каждую ссылку на Microsoft_VC90_CRT_x86.msm, встроенный установщик не обнаруживает предыдущую версию приложения.

person Paolo    schedule 03.08.2010
comment
Измените свой вопрос, чтобы добавить эту информацию и информацию о таблице обновлений. Это еще одна часть головоломки. Кроме того, где вы запланировали действие RemoveExistingProducts? - person Rob Mensching; 04.08.2010