如何检测安装是否以静默模式运行?
我有一个自定义应用程序,我添加了一个.msi安装项目。我使用/ qb开关运行.msi文件,并在我的自定义安装程序c#代码中,我希望能够检测到这一点。
编辑:nobugs说测试UILevel属性。如何从派生自System.Configuration.Install.Installer类的类访问UILevel属性?
答案 0 :(得分:10)
从nobugz那里得到提示,我做了以下事情:
在.msi安装项目的自定义操作视图中,我将以下内容添加到我的CustomActionData(将UILevel传递给我的自定义安装程序):
/ UILevel = “[UILevel]”
在我从基类Installer派生的代码的C#代码中,我添加了代码来获取值:
string uiLevelString = Context.Parameters [“UILevel”];
然后解析字符串的int值很简单。如果值为< = 3,则为静默安装。
答案 1 :(得分:0)
首先我要指出InstallUtil是一个非常糟糕的模式。它们用完了进程,用CLR版本解决了这个过程,当它们失败时,即使在静默安装期间也会引发1001错误模式对话框。
相反,你应该使用WiX的DTF模式。
在延迟执行期间,MsiGetMode(Session.Mode)受到限制,因此您必须序列化和反序列化UILevel。