在.NET自定义操作中检测静默安装

时间:2010-03-05 17:09:34

标签: c# windows-installer

如何检测安装是否以静默模式运行?

我有一个自定义应用程序,我添加了一个.msi安装项目。我使用/ qb开关运行.msi文件,并在我的自定义安装程序c#代码中,我希望能够检测到这一点。

编辑:nobugs说测试UILevel属性。如何从派生自System.Configuration.Install.Installer类的类访问UILevel属性?

2 个答案:

答案 0 :(得分:10)

从nobugz那里得到提示,我做了以下事情:

  1. 在.msi安装项目的自定义操作视图中,我将以下内容添加到我的CustomActionData(将UILevel传递给我的自定义安装程序):

    / UILevel = “[UILevel]”

  2. 在我从基类Installer派生的代码的C#代码中,我添加了代码来获取值:

    string uiLevelString = Context.Parameters [“UILevel”];

  3. 然后解析字符串的int值很简单。如果值为< = 3,则为静默安装。

答案 1 :(得分:0)

首先我要指出InstallUtil是一个非常糟糕的模式。它们用完了进程,用CLR版本解决了这个过程,当它们失败时,即使在静默安装期间也会引发1001错误模式对话框。

相反,你应该使用WiX的DTF模式。

在延迟执行期间,MsiGetMode(Session.Mode)受到限制,因此您必须序列化和反序列化UILevel。

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