我正在尝试使用 WixStandardBootstrapperApplication 运行引导程序应用程序。到目前为止,它适用于我需要它做的一切,甚至在安装过程中处理重启。过程是这样的——我检查计算机上是否安装了 .net 4.5,如果没有,则安装 .net 4.5。安装后,burn 然后知道要重新启动,因为我处理了退出代码。恢复后,安装程序会处理另外三个 .exe 文件,其中一个取决于 .net 安装。在重新启动之前,这一切都运行良好,此时引导程序会尝试修复每个 exe 的安装后运行时间加倍。这不会那么糟糕,除了安装 .net 4.5 需要很长时间以至于翻倍是非常不可取的。我试过省略一个修复命令,我' 我注意到没有任何形式的 RepairCondition 像安装和检测条件。有什么方法可以阻止修复过程?
这是引导程序代码:
<Chain>
<ExePackage Id="NetFx45Redist" Cache="no" Compressed="yes" PerMachine="yes" Permanent="yes" Vital="yes" InstallCommand="/q /norestart" RepairCommand="/q"
SourceFile="...\...\Setup Files\dotNetFx45_Full_setup.exe"
DetectCondition="(Netfx4FullVersion="4.5.50709") AND (NOT VersionNT64 OR (Netfx4x64FullVersion="4.5.50709"))"
InstallCondition="(VersionNT >= v6.0 OR VersionNT64 >= v6.0) AND (NOT (Netfx4FullVersion="4.5.50709" OR Netfx4x64FullVersion="4.5.50709"))"
RepairCondition="" >
<ExitCode Value="1641" Behavior="forceReboot"/>
<ExitCode Value="3010" Behavior="forceReboot"/>
<ExitCode Value="0" Behavior="success"/>
<ExitCode Behavior="error"/>
</ExePackage>
<ExePackage
SourceFile="...\...\Setup Files\Encoder_en.exe"
InstallCommand="/q"
RepairCommand="/q">
<ExitCode Behavior="success"/>
</ExePackage>
<ExePackage
SourceFile="...\...\Setup Files\vcredist_x86.exe"
InstallCommand="/q"
RepairCommand="/q">
<ExitCode Behavior="success"/>
</ExePackage>
<ExePackage
SourceFile="...\...\Setup Files\vcredist_x64.exe"
InstallCommand="/q"
RepairCommand="/q">
<ExitCode Behavior="success"/>
</ExePackage>
<!-- installer for actual software at some point -->
</Chain>
我知道让这些其他.exe的行为成功基本上是一种黑客行为,但是在修复问题得到处理之前,他们需要否则安装程序会说它失败。我也尝试从这些命令中删除修复命令,但这似乎根本没有帮助,所以我让它们安静下来,至少它们不会弹出并让用户感到困惑。