在WiX中重新启动后继续安装

时间:2013-06-20 16:22:33

标签: .net wix restart resume wix3.7

我正在尝试使用WixStandardBootstrapperApplication创建一个引导程序。除了处理重启之外,它还能做我需要做的所有事情。

我需要安装一组EXE文件。只有第一个是.NET 4.5,需要重启。我会延迟重启,但我不能,因为其他程序之一依赖于它。我尝试使用退出代码强制重启,但是当计算机启动备份时,引导程序每次都会卡在该退出代码上,而我无法安装任何其他内容。当且仅当程序尚未重启(或任何其他逻辑方式)时,是否有办法应用退出代码?

这就是我正在做的......

<ExePackage
  Id               = "NetFx45Redist"
  Cache            = "no"
  Compressed       = "yes"
  PerMachine       = "yes"
  Permanent        = "yes"
  Vital            = "yes"
  InstallCommand   = "/quiet /norestart"

  SourceFile       = "C:\Users\visibleEP\Documents\Visual Studio 2012\Projects\Bootstrapper1\VEP Deploy\Setup Files\dotNetFx45_Full_setup.exe"
  DetectCondition  = "(Netfx4FullVersion=&quot;4.5.50709&quot;) AND (NOT VersionNT64 OR (Netfx4x64FullVersion=&quot;4.5.50709&quot;))"
  InstallCondition = "(VersionNT >= v6.0 OR VersionNT64 >= v6.0) AND (NOT (Netfx4FullVersion=&quot;4.5.50709&quot; OR Netfx4x64FullVersion=&quot;4.5.50709&quot;))">

  <ExitCode Behavior = "forceReboot"/>
</ExePackage>

<ExePackage
  SourceFile = "...\...\Setup Files\Encoder_en.exe"
  InstallCommand = "/q"/>

<ExePackage
  SourceFile = "...\...\Setup Files\vcredist_x86.exe"
  InstallCommand = "/q /ACTION=Install"
  RepairCommand = "/q ACTION=Repair /hideconsole" />

<ExePackage
  SourceFile = "...\...\Setup Files\vcredist_x64.exe"
  InstallCommand = "/q /ACTION=Install"
  RepairCommand = "/q ACTION=Repair /hideconsole" />

1 个答案:

答案 0 :(得分:2)

替换

<ExitCode Behavior="forceReboot"/>

使用

<ExitCode Behavior="forceReboot" Value="1641" />
<ExitCode Behavior="forceReboot" Value="3010" />

1641和3010都是“完成安装需要重启。此消息表示成功。”

您的版本会将您观察到的所有退出代码视为相同。请参阅该安装程序上的the documentation。幸运的是,退出代码已记录在案。

更新: 如果您确信所有成功代码都已记录在案,我添加了已知的成功代码和全部可能error

<ExitCode Behavior="success" Value="0" />
<ExitCode Behavior="error"/>