【问题标题】:Detect silent install in .NET Custom Action在 .NET 自定义操作中检测静默安装
【发布时间】:2010-03-05 17:09:33
【问题描述】:

您如何检测到安装正在以静默模式运行?

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

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

【问题讨论】:

  • 你在安装什么? C#?自定义应用?
  • 我编辑了这个问题,说明它是一个自定义应用程序,我添加了一个安装项目来创建 .msi 安装程序。

标签: c# windows-installer


【解决方案1】:

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

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

    /UILevel="[UILevel]"

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

    string uiLevelString = Context.Parameters["UILevel"];

  3. 然后很容易解析字符串以获取 int 值。如果值为

【讨论】:

  • 能否请您详细说明第 2 步 - 您具体在哪里编写该代码,在派生类的哪个事件上编写?提前谢谢你
  • @Andrei Cristof 在第 2 步中,我重写了“安装”方法。
  • 这是一个有用的截图教程:roelvanlisdonk.nl/2009/11/13/…
  • 我花了一些时间才找到 CustomActionData 设置。在解决方案资源管理器中右键单击项目名称,然后选择“查看->自定义操作”。然后选择操作,您应该会在属性中看到 CustomActionData。
【解决方案2】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2013-10-16
    • 1970-01-01
    • 2011-06-28
    • 1970-01-01
    • 2011-11-28
    • 1970-01-01
    • 2011-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多