Незначительное обновление не удалось

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

MSI (c) (88:64) [21: 35: 44: 834]: примечание: 1: 2262 2: исправление 3: -2147287038
MSI (c) (88:64) [21: 35: 44: 834]: значение политики компьютера 'EnforceUpgradeComponentRules' равно 0
MSI (c) (88:64) [21: 35: 44: 834]: SELMGR: ComponentId '{A48DDBD3-3B28-F2FF-DBCE-0462EC330D7E}' зарегистрирован для функции 'Клиент', но отсутствует в Компоненте Таблица. Удаление компонентов из функции не поддерживается!
MSI (c) (88:64) [21: 35: 44: 834]: SELMGR: удаление компонента из функции не поддерживается

Я не удаляю ни один компонент во время установки обновлений. Я также проверил наличие каких-либо правил нарушения компонентов, но я этого не сделал. Я не знаю, почему это происходит. И из-за этого функция "Клиент" переходит в состояние "Реклама". Я также проверил, что этот компонент отсутствует в моем MSI.

1 ответ

Решение

По этой причине динамическое сканирование файлов / зависимостей действительно несовместимо с незначительными обновлениями. Незначительные обновления очень требовательны к своим правилам. Если вы действительно хотите сохранить динамику, подумайте о переходе на Major Upgardes. В любом случае, если вы придерживаетесь небольших обновлений, всегда тестируйте свои установщики, используя параметр свойства MSIENFORCEUPGRADECOMPONENTRULES=1.

Что касается вашей текущей ситуации, создайте 0-байтовый файл в вашей среде сборки с тем же именем и запишите его в ISM точно так же, как вы видели его в среде сборки. Скажем, первичный ключ компонента, первичный ключ файла, идентификатор компонента (guid), то же самое... все. Теперь пометьте компонент как транзитивный (я думаю, что он называется reevaluate в InstallShield... извините, что это было какое-то время) и присвойте ему условное выражение, которое всегда будет иметь значение false, такое как GoAway=1.

Теперь вы пройдете незначительные обновления правил, и компонент будет "проколот" и уйдет.

Но я надеюсь, что вы видите, что это только патч. Эта ситуация может легко повториться с использованием вашей текущей стратегии. Я настоятельно рекомендую изменить это.

Вот статья, которую я написал около 10 лет назад, которая применима здесь:

http://blog.iswix.com/2007/06/dealing-with-very-large-number-of-files.html

Другие вопросы по тегам