Результатом установки обновления является повторяющаяся запись для установленного программного обеспечения (FindRelatedProducts не выполняется) - PullRequest
2 голосов
/ 04 января 2010

Я пытаюсь выполнить крупное обновление с помощью моего установщика MSI с тихой установкой. Установщик уже работает хорошо при использовании обычной установки с полным пользовательским интерфейсом. В этом случае старый продукт удаляется, поскольку действие FindRelatedProducts (из последовательности пользовательского интерфейса в FolderForm) обнаруживает мою ранее установленную версию.

Когда ключ / qr для msiexec используется для подавления диалогов и необходимости взаимодействия с пользователем (по существу, повторного использования настроек из последней версии), тогда происходит сбой:

MSI (s)  : Doing action: FindRelatedProducts
Action  FindRelatedProducts. Searching for related applications
Action start  FindRelatedProducts.
MSI (s)  : Skipping FindRelatedProducts action: already done on client side
Action ended  FindRelatedProducts. Return value 0.

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

Есть ли какой-либо другой командный переключатель msiexec, который я мог бы использовать, который все еще выполнял бы действие FindRelatedProducts? Может ли он быть интегрирован в другом месте, чтобы он выполнялся в такой тихой установке?

Ответы [ 2 ]

2 голосов
/ 05 января 2010

Я нашел способ решить проблему, и обновление выполняется, как и ожидалось.

При запуске с переключателем / qb для msiexec, FindRelatedProducts и обновление работает как ожидалось .

Я не нашел лучшей спецификации или объяснения для различных уровней пользовательского интерфейса и последствий для выполнения, но этой информации может быть достаточно для отладки и решения подобных проблем.

Переключатель / qr, по-видимому, запускает пропуск: «Действие Пропустить FindRelatedProducts: уже выполнено на стороне клиента».

Спасибо за вашу поддержку!

0 голосов
/ 05 января 2010

Вы, кажется, сосредоточились на симптоме, а не на реальной проблеме. FindRelatedProducts необходимо выполнить только один раз, если выполняются следующие две вещи: свойство action каждой записи Upgrade является открытым (ALL_CAPS) свойством, а имя этого свойства указано в свойстве SecureCustomProperties. Когда оба они имеют значение true, первая последовательность пользовательского интерфейса должна установить свойство действия, его значение должно сделать его неповрежденным для последовательности выполнения, а RemoveExistingProducts должен обработать и удалить связанные коды продуктов, перечисленные в этом свойстве. (Конечно, запуск / qb пропустит последовательность UI и вернется к выполнению только записи последовательности выполнения, как вы описали в своем ответе).

...