Подавить код ошибки MSI
Я получил error 2803: dialog view did not find a record for the dialog
, Это потому, что я явно удалил FilesInUse
диалог от моего установщика. Это диалог, который иногда запрашивается для презентации msiexec
когда есть блокировки файлов. Моя логика установщика явно не пытается показать этот диалог. У моего установщика есть настраиваемые действия для уничтожения процессов, которые блокируют файлы, поэтому никогда не возникает проблем с игнорированием этого сообщения и последующей установкой (но для завершения этого процесса мне нужны разрешения и, следовательно, отложенное настраиваемое действие, которое должно выполняться после диалога запрашивается). Этот диалог по сути бесполезен для всех моих намерений и целей. Вместо того, чтобы показывать диалоговое окно с фатальной ошибкой, когда появляется этот код ошибки, как я могу подавить этот код ошибки? Кто-нибудь знает, есть ли способ сделать это в WiX, возможно, через форму пользовательского действия C# или что-то? Любой способ отловить и обработать коды ошибок?
1 ответ
Я не думаю, что вы можете подавить эту ошибку, если вы не готовы использовать свой собственный пользовательский интерфейс и игнорировать запросы диалога FilesInUse. Или измените код WiX, если это разрешено. В основном вы будете получать сообщения и реагировать (или нет) на них:
https://msdn.microsoft.com/en-us/library/aa370573(v=vs.85).aspx
Вы бы вернули ответ игнорирования вместо показа диалога.
Можете ли вы использовать загрузчик, который поднимается при запуске и который запускает MSI? В этом случае вся установка повышается, и ваши CA повышаются при запуске до InstallFinalize, даже если они выполняются немедленно.
Если они являются вашими приложениями, то другим решением было бы интегрировать их с Restart Manager, чтобы им было приказано завершить работу с добавленной функцией, чтобы они могли сохранять состояние и восстанавливать его при необходимости. Вам не нужны ваши CA.