Обнаружение автоматической установки в .NET Custom Action - PullRequest
5 голосов
/ 05 марта 2010

Как вы обнаруживаете, что установка работает в автоматическом режиме?

У меня есть специальное приложение, в которое я добавил проект установки .msi. Я запускаю MSI-файл с ключом / qb, и в моем коде установщика C # я хотел бы обнаружить это.

Редактировать: nobugs говорит, что нужно проверить свойство UILevel. Как получить доступ к свойству UILevel из класса, производного от класса System.Configuration.Install.Installer?

Ответы [ 2 ]

10 голосов
/ 05 марта 2010

Получив подсказку от nobugz, я сделал следующее:

  1. В представлении «Настраиваемые действия» проекта установки .msi я добавил в свой CustomActionData следующее (чтобы передать UILevel в мой пользовательский установщик):

    / UILevel = "[UILevel]"

  2. В своем коде C # для кода, полученного из установщика базового класса, я добавил код, чтобы получить значение:

    string uiLevelString = Context.Parameters ["UILevel"];

  3. Тогда было просто разобрать строку на предмет значения int. Если значение <= 3, это автоматическая установка. </p>

0 голосов
/ 06 марта 2010

Во-первых, я бы отметил, что InstallUtil - очень плохой шаблон. Они заканчивают процесс, татуируют процесс с версией CLR, а когда они терпят неудачу, они вызывают модальное диалоговое окно с ошибкой 1001 даже во время автоматической установки.

Вместо этого вы должны использовать шаблон DTX WiX.

MsiGetMode (Session.Mode) ограничен во время отложенного выполнения, поэтому вам придется сериализовать и десериализовать UILevel.

http://www.msifaq.com/a/1044.htm

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