【发布时间】:2011-06-28 23:53:59
【问题描述】:
我们使用 Wix 创建我们的 MSI 安装程序。我们有一些自定义操作在正常使用带有 GUI 的安装程序时效果很好,但是当使用静默安装(使用 "msiexec /qb /i" )时,自定义操作将不会运行。
我该怎么做才能让它们通过 Wix 工作?
【问题讨论】:
标签: wix windows-installer silent
我们使用 Wix 创建我们的 MSI 安装程序。我们有一些自定义操作在正常使用带有 GUI 的安装程序时效果很好,但是当使用静默安装(使用 "msiexec /qb /i" )时,自定义操作将不会运行。
我该怎么做才能让它们通过 Wix 工作?
【问题讨论】:
标签: wix windows-installer silent
我建议您阅读(如果需要,可以多读几遍……一开始我花了一些时间):
Installation Phases and In-Script Execution Options for Custom Actions in Windows Installer
在编写问题时需要考虑很多事情,详细信息都在这篇写得很好的文章中。基本上听起来你只将自定义操作放在 UI 序列中而不是执行序列中,但除此之外还有其他事情你应该确保你做得正确。
【讨论】:
他们只是不运行还是失败?它们可能会被限制在安静模式下运行(请参阅UILevel 属性)。如果他们失败了,他们可能会缺少一些来自用户在完整 UI 模式下的输入信息(属性)。
无论如何,详细日志应该会给你更多信息。
【讨论】:
您可以在 ExeCommand 中设置“[UILevel]”并通过参数访问它。
<CustomAction Id="customActionId" BinaryKey="InstallerProgram" ExeCommand="[UILevel]" Execute="deferred" Return="check" />
static void Main(string[] args)
{
var uiLevel = args[0]; //==> [Here is the UILevel][1]
}
【讨论】: