Есть ли способ, чтобы несколько MSI были удалены «родительским» MSI? - PullRequest
0 голосов
/ 11 ноября 2011

У меня в настоящее время есть продукт Windows с загрузчиком, который запускает 5-6 MSI во время установки.Пара таких MSI может быть обновлена ​​вне диапазона путем запуска новых версий этих MSI непосредственно в системе.В настоящее время загрузчик используется для управления удалением всех MSI при удалении основного продукта.Есть ли способ удалить загрузчик из логики удаления?Я хотел бы найти способ удаления основного MSI продукта для удаления всех остальных «дочерних» MSI.

Например: у меня есть установщик продукта Foo.exe, который запускает A.msi, B.msi и C.msi во время установки.В течение времени жизни приложения пользователь обновляет B.msi до B'.msi и C.msi до C'.msi, теперь у пользователя установлены A.msi, B'.msi и C'.msi (только A.MSI появляется в ARP).Как я могу получить деинсталляцию A.msi для удаления B'.msi и C'.msi?

Ответы [ 2 ]

0 голосов
/ 18 ноября 2013

Одним из возможных способов является установка A.msi Uninstaller.msi.Uninstaller.msi - это, по сути, пустая msi с записями таблицы обновлений для кодов обновления для A.msi, B.msi и C.msi.Uninstaller.msi также имеет стандартное условие действия PublishProduct, установленное в «0», чтобы оно никогда не выполнялось.Затем A.msi вручную подключает Uninstaller.msi к записи ARP продукта.Когда Uninstaller.msi запускается, он выполняет FindRelatedProducts, RemoveExistingProducts (удаляя все 3 msis) и завершает свою работу, не регистрируясь как «установленный» окнами.Это выполняет работу в одной транзакции с возможностью отката.Единственный трюк - выяснить, как вывести Uninstaller.msi из системы, когда все сказано и сделано ...

0 голосов
/ 13 ноября 2011

Вы должны иметь возможность удалить старые продукты, авторизовав крупное обновление с помощью таблицы обновлений.Может быть, проверить http://www.appdeploy.com/tips/detail.asp?id=106 и http://msdn.microsoft.com/en-us/library/windows/desktop/aa372374(v=vs.85).aspx.

...