C# 禁用Wix自定义操作打开/关闭/关闭
在WIX自定义操作中,是否有方法检测MSI是否使用/silent或/quiet命令行开关调用?基本上,我想要的是不执行自定义操作(因为它显示一个表单),或者在传递这些命令行开关时以不同的方式处理它,但我无法找到这一点C# 禁用Wix自定义操作打开/关闭/关闭,c#,custom-action,wix3.5,C#,Custom Action,Wix3.5,在WIX自定义操作中,是否有方法检测MSI是否使用/silent或/quiet命令行开关调用?基本上,我想要的是不执行自定义操作(因为它显示一个表单),或者在传递这些命令行开关时以不同的方式处理它,但我无法找到这一点 是否有可能检测到它?您可以检查属性并根据您的条件执行CA。您可以检查属性并根据您的条件执行CA。我终于找到了答案。Wix基本上总是将UILevel属性设置为2.0。它有自己的财产称为WixBundleUILevel。现在重要的是,在Wix 3.11之前,这个WixBundleuil
是否有可能检测到它?您可以检查属性并根据您的条件执行CA。您可以检查属性并根据您的条件执行CA。我终于找到了答案。Wix基本上总是将UILevel属性设置为2.0。它有自己的财产称为WixBundleUILevel。现在重要的是,在Wix 3.11之前,这个WixBundleuileLevel是一个内部属性,不能被捆绑项目或MSI自定义操作访问。这就是我所做的
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
我终于明白了。Wix基本上总是将UILevel属性设置为2.0。它有自己的财产称为WixBundleUILevel。现在重要的是,在Wix 3.11之前,这个WixBundleuileLevel是一个内部属性,不能被捆绑项目或MSI自定义操作访问。这就是我所做的
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
谢谢,我试过了,但不管通过与否,我的UILevel始终为2。我还注意到日志文件中的一些其他属性,如ClientUILevel和WixBundleUILevel,但我的会话参数始终为null。你知道我哪里会出错吗?@Nikhil,这很有趣,它没有改变;您是否以延迟方式运行CA?如果是这样,如果不将属性手动注入会话,您将无法访问数据库(即属性)。您好,不,我没有将其作为延迟运行。我在wixgithub上遇到一个注册问题,它声称引导程序覆盖UILevel属性并始终将其设置为2。但是没有关于这件事的最新消息。这里是链接,很高兴听到你解决了它。我一直在使用WiX v3.11.1,并且能够正常使用标准引导程序应用程序访问
UILevel
属性。谢谢Burrt。你介意分享一些你是如何做的代码示例吗?对我来说,用例是通过自定义操作(而不是延迟)访问它,这是MSI安装序列的一部分。这个MSI当时是引导程序的一部分。谢谢,我尝试了这个,但是不管通过与否,UILevel对我来说总是2。我还注意到日志文件中的一些其他属性,如ClientUILevel和WixBundleUILevel,但我的会话参数始终为null。你知道我哪里会出错吗?@Nikhil,这很有趣,它没有改变;您是否以延迟方式运行CA?如果是这样,如果不将属性手动注入会话,您将无法访问数据库(即属性)。您好,不,我没有将其作为延迟运行。我在wixgithub上遇到一个注册问题,它声称引导程序覆盖UILevel属性并始终将其设置为2。但是没有关于这件事的最新消息。这里是链接,很高兴听到你解决了它。我一直在使用WiX v3.11.1,并且能够正常使用标准引导程序应用程序访问UILevel
属性。谢谢Burrt。你介意分享一些你是如何做的代码示例吗?对我来说,用例是通过自定义操作(而不是延迟)访问它,这是MSI安装序列的一部分。这个MSI当时是引导程序的一部分。