Я наконец понял это.Wix в основном всегда устанавливает свойство UILevel на 2.0.У него есть собственное свойство WixBundleUILevel.Теперь важно отметить, что до Wix 3.11 этот WixBundleUILevel был внутренним свойством и не был доступен для проектов Bundle или пользовательских действий MSI.Итак, вот что я сделал
- Определил свойство в MSI с именем UI_LEVEL (важно, чтобы все было в верхнем регистре)
В 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