Отключить пользовательское действие Wix в / тихий / тихий - PullRequest
0 голосов
/ 25 октября 2018

В пользовательском действии WIX есть способ определить, был ли MSI вызван с помощью ключей / silent или / quiet командной строки?По сути, я хочу не выполнять пользовательское действие (поскольку оно показывает форму) или обрабатывать его по-другому, если эти параметры командной строки были переданы, но я не могу это выяснить.

Есть ли способ, чтобы возможнообнаружить это?

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

Я наконец понял это.Wix в основном всегда устанавливает свойство UILevel на 2.0.У него есть собственное свойство WixBundleUILevel.Теперь важно отметить, что до Wix 3.11 этот WixBundleUILevel был внутренним свойством и не был доступен для проектов Bundle или пользовательских действий MSI.Итак, вот что я сделал

  1. Определил свойство в MSI с именем UI_LEVEL (важно, чтобы все было в верхнем регистре)
  2. В Bundle.wxs, прямо там, где я вызываю MSIPackageЯ установил свойство UI_LEVEL так:

Затем, наконец, в пользовательском действии я проверяю это свойство как

int uiLevel;
                if (int.TryParse(session["UI_LEVEL"], out uiLevel))
                {
                    if (uiLevel == 4)
                        using (var form = new WhatsNew())
                        {
                            form.ShowDialog();
                        }
                    else
                        session.Log("Skipping What's new dialogue as UI Level is not 4");

                }
                else
                {
                    session.Log("Couldnt figure out the UI level, so skipped the prompt");
                }

И, наконец,

here are the possible values of this f**ed up property
                WixBundleUILevel              Value     Burn parameters
                BOOTSTRAPPER_DISPLAY_FULL       4         (none)
                BOOTSTRAPPER_DISPLAY_PASSIVE    3         /silent
                BOOTSTRAPPER_DISPLAY_NONE       2         /quiet
0 голосов
/ 25 октября 2018

Вы можете проверить свойство UILevel и выполнить свой CA в соответствии с вашими условиями.

...