Извлечь условия установки из MSI (C #)

У нас есть большое приложение C #, которое развертывается с использованием файла .MSI, который создается с помощью Visual Studio 2010 (или MSBuild.exe) из файла .VDProj. При обычном запуске установщик .MSI проверит, установлены ли определенные части программного обеспечения и соответствуют ли они какой-либо минимальной версии, а также выдаст полезное сообщение об ошибке и завершит работу, если условия версии не соблюдены.

Все работает нормально. Однако мы экспериментируем с использованием msiexec.exe для автоматического запуска существующего установщика. Если дополнительное программное обеспечение, необходимое для MSI, уже установлено, мы получаем код ошибки 0 обратно от msiexec, и аналогично, если MSI выходит из строя из-за того, что другое программное обеспечение не существует в системе или не соответствует требованиям минимальной версии, мы получаем ненулевой код ошибки обратно.

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

Любая помощь приветствуется.


person JamesPD    schedule 22.02.2011    source источник


Ответы (1)


Запрос MSI, чтобы увидеть условия внутри, действительно даст вам список указанных условий, но не то, какое из них не удалось. Возможно, вы захотите запустить msiexec с / L, чтобы переключиться на лучшее ведение журнала (точный синтаксис см. В документации).

Если списка условий достаточно, предлагаю взглянуть на Orca (MSDN), простой способ заглянуть внутрь файлов .msi.

person J.N.    schedule 22.02.2011
comment
Большое спасибо, JN. Переключатель / LE, кажется, работает у меня нормально, поскольку все, что мне действительно нужно, это знать, не удалось ли установка (что я могу сказать по коду ошибки), и сообщение об ошибке, которое было бы отображено, если бы установщик не был запущен в / тихий режим (который я могу найти в журнале ошибок.) - person JamesPD; 22.02.2011