Произошла ошибка с настраиваемым действием RegisterComPlus с WIX 3.9 и выше
Мы в Microsoft так долго использовали набор инструментов WIX 3.5.2519.0 для сборки программы установки и исправлений для нашего продукта с именем (System Center Service Manager или SCSM). Недавно нам нужно обновить WIX Toolset 3.14.0.1703, так как эта версия поддерживает TLS1.2.
Сборка нашего проекта с использованием WIX Toolset 3.14.0.1703 прошла нормально, но при его установке я получаю следующую ошибку:
Затем я создал продукт один за другим со всеми версиями WIX, и вот результаты:
Продукт, созданный с использованием WIX ToolSet версии 3.8 и ниже, работает нормально, а программа установки работает нормально.
Но с ToolSet 3.9 и выше, установщик получает сбой с ошибкой: произошла ошибка при выполнении пользовательского действия RegisterComPlus
Фрагмент журналов:+++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++ Начало действия 21:11:37: RegisterTypeLibraries.
MSI (48:B0) [21:11:37:585]: Выполнение действий: SelfRegModules
Действие завершено 21:11:37: RegisterTypeLibraries. Возвращаемое значение 0.
Начало действия 21:11:37: SelfRegModules.
MSI (48:B0) [21:11:37:588]: Выполнение действия: RegisterComPlus
Действие завершено 21:11:37: SelfRegModules. Возвращаемое значение 1.
MSI (48:B0) [21:11:37:589]: примечание: 1: 2205, 2: 3: Complus
MSI (s) (48:B0) [21:11:37:589]: примечание: 1: 2228 2: 3: Complus 4: SELECT ComponentId
, FileName
, Component
,Directory_
, ExpType
, Component
,Action
, Component
,Installed
ОТ Complus
, Component
, File
ГДЕ Complus
,Component_
знак равно Component
А ТАКЖЕ Component
,KeyPath
знак равно File
,File
А ТАКЖЕ (Action
= 1 ИЛИ Action
= 2)
Начало действия 21:11:37: RegisterComPlus.
MSI (48:B0) [21:11:37:591]: примечание: 1: 2265 2: 3: -2147287035
MSI (48:B0) [21:11:37:591]: значение политики компьютера 'DisableRollback' равно 0
MSI (48) B0 [21:11:37:592]: примечание: 1: 1402 2:
HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows \ CurrentVersion \ Installer \ Откат \ Сценарии 3: 2
Действие завершено 21:11:37: RegisterComPlus. Возвращаемое значение 0.
MSI (48) B0 [21:11:37:592]: примечание: 1: 1402 2:
HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows \ CurrentVersion \ Installer \ Откат \ Сценарии 3: 2
MSI (48:B0) [21:11:37:592]: нет порядкового номера восстановления системы для этой установки.
MSI (48:B0) [21:11:37:592]: разблокировка сервера
MSI (48:B0) [21:11:37:602]: примечание: 1: 2717 2:
_Set_Rollback_RemoveCodeGroup.1CA03A32_06E0_4726_8E63_FEA4484D9D6F ОТЛАДКА: Ошибка 2717: условие неверного действия или ошибка при вызове настраиваемого действия '_Set_Rollback_RemoveCodeGroup.1CA03A32_06E0_4726_8E63_FEA4484D.
MSI (48:74) [21:11:37:622]: ввод / вывод в потоке 720 не может быть отменен. Ошибка: 1168
MSI (48:74) [21:11:37:622]: ввод / вывод в потоке 1244 не может быть отменен. Ошибка: 1168
MSI (48:74) [21:11:37:622]: ввод / вывод в потоке 3392 не может быть отменен. Ошибка: 1168
MSI (48:74) [21:11:37:622]: ввод / вывод в потоке 928 не может быть отменен. Ошибка: 1168
MSI (48:74) [21:11:37:622]: ввод / вывод в потоке 680 не может быть отменен. Ошибка: 1168
MSI (48:74) [21:11:37:622]: ввод / вывод в потоке 4528 не может быть отменен. Ошибка: 1168
MSI (48:74) [21:11:37:622]: ввод / вывод в потоке 2156 не может быть отменен. Ошибка: 1168
MSI (48:74) [21:11:37:622]: ввод / вывод в потоке 2316 не может быть отменен. Ошибка: 1168
MSI (48:74) [21:11:37:622]: ввод / вывод в потоке 3980 не может быть отменен. Ошибка: 1168
MSI (48:74) [21:11:37:622]: ввод / вывод в потоке 5172 не может быть отменен. Ошибка: 1168
MSI (48:74) [21:11:37:622]: ввод / вывод в потоке 2724 не может быть отменен. Ошибка: 1168
MSI (48:B0) [21:11:37:622]: Продукт: Microsoft System Center Service Manager - Программа установки обнаружила непредвиденную ошибку при установке этого пакета. Это может указывать на проблему с этим пакетом. Код ошибки - 2717. Аргументы: _Set_Rollback_RemoveCodeGroup.1CA03A32_06E0_4726_8E63_FEA4484D9D6F,,
Установщик обнаружил непредвиденную ошибку при установке этого пакета. Это может указывать на проблему с этим пакетом. Код ошибки - 2717. Аргументы: _Set_Rollback_RemoveCodeGroup.1CA03A32_06E0_4726_8E63_FEA4484D9D6F,, Действие завершено 21:11:37: УСТАНОВИТЬ. Возвращаемое значение 3. ++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++
Существуют ли какие-либо изменения, внесенные в WIX Toolset 3.9 и выше, которые нарушают работу моего установщика? Любое решение для этого?
Пожалуйста, дайте мне знать, если вам потребуется дополнительная информация.
Спасибо, Раджив
1 ответ
Хм, пока никаких предложений. Это не будет ответом, но некоторые предложения помогут вам помочь себе. Это происходит слишком часто для вопросов развертывания, поскольку их трудно отладить или определить, что происходит с доступной ограниченной информацией.
Мне кажется, что это не может быть проблемой COM+, так как похоже, что пользовательское действие завершается ОК:
Action ended 21:11:37: RegisterComPlus. Return value 0.
Давайте попробуем несколько длинных бросков. Терпите меня, потому что многое из этого будет немного там. Торпеды. Полное распространение и все такое:-) (бегите за прикрытием):
Сравнительное страдание - :-): Я мог бы сравнить работающий MSI и новый MSI, используя подходы сравнения, найденные здесь. Я не думаю, что вы найдете много, но, вероятно, должно быть сделано. Сравнивать MSI напрямую и декомпилировать с помощью dark.exe? Последнее имеет мало логического смысла, но я хочу посмотреть, изменилось ли что-то в том, как WiX связывает MSI.
Устранить сложность: мне нравится вынимать сложные детали и смотреть, если остальная часть установки устанавливается нормально. Это может быть настоящей пустой тратой времени, но иногда освещает.
Я бы взял этот модуль слияния, который добавляет это настраиваемое действие, и проверил бы, что остальная часть пакета устанавливается как ожидалось. Иногда это не работает, если происходит высокая связь для пользовательских действий (очевидно).
Вы также можете установить условие для некоторых пользовательских действий:
0
, Это должно предотвратить запуск настраиваемого действия. Можете добавитьAND 0
если есть существующее условие.
Отключить откат?: Еще один длинный выстрел. Отключить откат MSI и попробовать тестовую установку на чистой виртуальной машине? Просто чтобы увидеть, есть ли проблемы в откате пользовательских действий. Я бы использовал свойство DISABLEROLLBACK, чтобы отключить откат. Обратите внимание, что отключение отката не является решением, хотя! (должно быть упомянуто для тех, кто находит это).
Доступ к источнику настраиваемых действий. Если у вас есть доступ к исходному коду настраиваемых действий, я бы попытался выполнить интерактивную отладку с помощью Visual Studio, как описано здесь: Отладка C# Настраиваемых действий. Вы компилируете код в режиме отладки (таким образом, у вас есть отладочные dll-файлы в MSI - убедитесь, что они не включены случайно для публичного выпуска!) И отображаете окно сообщения из настраиваемого действия, затем вы присоединяете отладчик Visual Studio и проходите через код. Для родного кода прикрепить к
msiexec.exe
, для управляемого кода прикрепить кrundll32.exe
,