2013-03-19 114 views
3

我现在有一个方案之后重新启动,由此我需要做的使用烧录维克斯烧伤:如何安装MsuPackage

  1. 安装Windows图像处理组件
  2. 安装Windows Installer 4.5
  3. 安装.NET以下4网络
  4. 运行安装程序我(使用维克斯3.6创建)

我想知道是否有一种方法来强制重启在安装MsuPackage之后...

在我的方案中,当引导程序在Windows vista上安装Windows6.0-KB942288-v2-x86.msu,并随后尝试安装.Net Framework而不重新启动时会抛出错误:0x8007064d - 此安装包不能由Windows安装程序服务安装...

如果在错误后重新启动并再次运行安装程序,它将正常工作。请注意,对于ExePackage,可以指定InstallCommand以及ExitCode,如何在MsuPackage中实现相同的行为?

请参阅我的WXS的内容如下文件:

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" 
    xmlns:bal="http://schemas.microsoft.com/wix/BalExtension" 
    xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"> 
    <Bundle Name="$(var.MyProject.ProjectName)" Version="2.6.0.0" Manufacturer="Awesome Software (Pty) Ltd" UpgradeCode="6a77118d-c132-4454-850b-935edc287945"> 
    <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense"> 
     <bal:WixStandardBootstrapperApplication 
     LicenseFile="$(var.SolutionDir)Awesome.EULA\Awesome CE Eula.rtf" 
     SuppressOptionsUI="yes"/> 
    </BootstrapperApplicationRef> 

    <util:FileSearch Path="[SystemFolder]\windowscodecs.dll" Variable="windowscodecs" Result="exists" /> 

    <Chain> 
     <!-- Windows Imaging Component--> 
     <ExePackage Cache="no" Compressed="no" PerMachine="yes" Permanent="yes" Vital="yes" 
     SourceFile="redist\wic_x86_enu.exe" 
     DownloadUrl="http://download.microsoft.com/download/f/f/1/ff178bb1-da91-48ed-89e5-478a99387d4f/wic_x86_enu.exe" 
     InstallCondition="VersionNT &lt; v5.2 AND NOT VersionNT64" 
     DetectCondition="windowscodecs" 
     InstallCommand="/quiet /norestart"> 
     </ExePackage> 
     <ExePackage Cache="no" Compressed="no" PerMachine="yes" Permanent="yes" Vital="yes" 
     SourceFile="redist\wic_x64_enu.exe" 
     DownloadUrl="http://download.microsoft.com/download/6/4/5/645FED5F-A6E7-44D9-9D10-FE83348796B0/wic_x64_enu.exe" 
     InstallCondition="VersionNT &lt; v5.2 AND VersionNT64" 
     DetectCondition="windowscodecs" 
     InstallCommand="/quiet /norestart"> 
     </ExePackage> 
     <!-- Windows Installer 4.5 --> 
     <ExePackage Cache="no" Compressed="no" PerMachine="yes" Permanent="yes" Vital="yes" 
      SourceFile="redist\WindowsXP-KB942288-v3-x86.exe" 
      DownloadUrl="http://download.microsoft.com/download/2/6/1/261fca42-22c0-4f91-9451-0e0f2e08356d/WindowsXP-KB942288-v3-x86.exe" 
      InstallCondition="VersionNT=v5.1 AND NOT VersionNT64 AND VersionMsi &lt; v4.5" 
      InstallCommand="/quiet /norestart"> 
     <ExitCode Behavior="forceReboot"/> 
     </ExePackage> 
     <ExePackage Cache="no" Compressed="no" PerMachine="yes" Permanent="yes" Vital="yes" 
      SourceFile="redist\WindowsServer2003-KB942288-v4-x86.exe" 
      DownloadUrl="http://download.microsoft.com/download/2/6/1/261fca42-22c0-4f91-9451-0e0f2e08356d/WindowsServer2003-KB942288-v4-x86.exe" 
      InstallCondition="VersionNT=v5.2 AND NOT VersionNT64 AND VersionMsi &lt; v4.5" 
      InstallCommand="/quiet /norestart"> 
     <ExitCode Behavior="forceReboot"/> 
     </ExePackage> 
     <ExePackage Cache="no" Compressed="no" PerMachine="yes" Permanent="yes" Vital="yes" 
      SourceFile="redist\WindowsServer2003-KB942288-v4-x64.exe" 
      DownloadUrl="http://download.microsoft.com/download/2/6/1/261fca42-22c0-4f91-9451-0e0f2e08356d/WindowsServer2003-KB942288-v4-x64.exe" 
      InstallCondition="VersionNT=v5.2 AND VersionNT64 AND VersionMsi &lt; v4.5" 
      InstallCommand="/quiet /norestart"> 
     <ExitCode Behavior="forceReboot"/> 
     </ExePackage> 
     <MsuPackage Cache="no" Compressed="no" Permanent="yes" Vital="yes" KB="KB942288" 
      SourceFile="redist\Windows6.0-KB942288-v2-x86.msu" 
      DownloadUrl="http://download.microsoft.com/download/2/6/1/261fca42-22c0-4f91-9451-0e0f2e08356d/Windows6.0-KB942288-v2-x86.msu" 
      InstallCondition="VersionNT=v6.0 AND NOT VersionNT64 AND VersionMsi &lt; v4.5"> 
     </MsuPackage> 
     <MsuPackage Cache="no" Compressed="no" Permanent="yes" Vital="yes" KB="KB942288" 
      SourceFile="redist\Windows6.0-KB942288-v2-x64.msu" 
      DownloadUrl="http://download.microsoft.com/download/2/6/1/261fca42-22c0-4f91-9451-0e0f2e08356d/Windows6.0-KB942288-v2-x64.msu" 
      InstallCondition="VersionNT=v6.0 AND VersionNT64 AND VersionMsi &lt; v4.5"> 
     </MsuPackage> 
     <PackageGroupRef Id="NetFx40Web"/> 
     <RollbackBoundary /> 
     <MsiPackage Id="MaxCut" SourceFile=".\StagingBundle\Awesome.msi" DisplayInternalUI="no"/> 
    </Chain> 
    </Bundle> 
</Wix> 

回答

1

MsuPackage重新启动自动检测。你安装的MSU可能会说它需要重新启动(日志文件应该说些什么,IIRC),但不需要重新启动。要求Burn有一种方法可以将“需要重新启动”升级为“如果此时需要重新启动,现在重新启动”。不幸的是,此时该功能尚不存在。

但是,您可以通过从OnExecutePackageComplete()回调返回IDRESTART实行“强制重启,现在”在自定义BootstrapperApplication行为。这是唯一的选择,直到有人实现该功能。

+0

感谢罗布, 我用dotNetInstaller来引导我的MSU文件,然后使用我在上面我烧伤项目ExePackage创建的可执行文件,以确保我有<的ExitCode行为=“forceReboot” /> – 2013-03-20 09:29:58

+1

哇,这有点沉重,但我想它是有效的。 :) – 2013-03-20 14:01:30

+0

@RobMensching在IDRESTART上找不到任何示例。在我安装了Burn boot strapper内的所有包后,我需要重新启动机器。你能告诉我,我可以在这种情况下使用它吗? – mayooran 2017-04-09 01:13:35