Настраиваемое действие типа 2 не выполняется на InstallUISequence во время его выполнения, если оно установлено на InstallExecuteSequence - PullRequest
0 голосов
/ 01 октября 2019

У меня есть пользовательское действие типа 2, которое выполняет исполняемый файл с параметрами. Мне нужно выполнить этот CA перед диалогом InstallWelcome, потому что он используется для сбора некоторой информации, чтобы предварительно заполнить диалог позже. Поэтому я упорядочил этот CA после действия CostFinalize в InstallUISequence, но установщику не удалось выполнить его с ошибкой, как показано ниже.

Если я переместил CA в последовательности InstallExecuteSequence, он выполняется, как и ожидалось. (Как объяснено в последующем комментарии, это не так, в этой последовательности это также не работает).

Кто-нибудь знает, что могло бы произойти?

Может быть, полезная информация : Если этот же исполняемый файл используется в настраиваемом действии типа 18 (исполняемый файл устанавливается вместе с двоичными файлами приложения), он выполняется без проблем.

<CustomAction Id='RunEXE' BinaryKey='EditCfg.exe.CA.ID' ExeCommand='[INSTALLFOLDER][SEPARATOR][CONFIG_FILE_NETWORK_LOCATION][SEPARATOR][USER_NAME][SEPARATOR][PASSWORD][SEPARATOR][WIX_UPGRADE_DETECTED][SEPARATOR][CHECKED_RULE][SEPARATOR][CERTIFICATE_LOCATION]' Execute='immediate' Impersonate='no' Return='check' />

<Binary Id='EditCfg.exe.CA.ID' SourceFile='path_to_the_exe_file'/>


MSI (c) (14:04) [15:18:36:452]: Note: 1: 2228 2:  3: Error 4: SELECT `Message` FROM `Error` WHERE `Error` = 1722 
Error 1722. There is a problem with this Windows Installer package. A program run as part of the setup did not finish as expected. Contact your support personnel or package vendor.  Action RunEXE, location: C:\Users\yyyyy\AppData\Local\Temp\MSIC8A9.tmp, command: param1§param2§param3§§param5§§param7

1 Ответ

0 голосов
/ 02 октября 2019

Ошибка 1722 указывает, что исполняемый файл возвратил ненулевой код выхода. Если это ожидается, вы можете изменить атрибут Return , чтобы использовать ignore вместо check. Но если этого не ожидается, вам, вероятно, нужно выяснить, что указывает этот код возврата, поскольку высока вероятность того, что это какой-то сбой.

Вот пара вещей, которые могут вызвать сбои:

  • У исполняемого файла могут быть некоторые зависимости. Помещение только исполняемого файла в двоичную таблицу не несет с собой его зависимостей, поэтому попытки загрузить и запустить исполняемый файл могут потерпеть неудачу, даже до того, как они попадут в основной код исполняемого файла, в зависимости от вида зависимости.
  • При выполнении в виде файла, установленного с продуктом, файл может не существовать в указанном месте на момент выполнения настраиваемого действия. Во время установки новые файлы не отображаются до отложенного действия в сценарии после InstallFiles (или регулярного планирования после InstallExecute);во время удаления они часто исчезают с помощью RemoveFiles. Техническое обслуживание может быть комбинацией тех. Тем не менее, отсутствие exe, скорее всего, приведет к ошибке 1721 вместо ошибки 1722.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...