恢复到以前版本的wix安装程序

时间:2014-02-25 16:13:38

标签: wix wix3.7

使用Visual Studio安装项目时,如果安装失败,它将恢复为先前版本的安装,因此它还原了以前的文件。 但是,使用WiX安装程序时,如果安装失败,WiX安装程序将删除已安装文件夹上的所有文件。 如何在安装失败时让WiX安装程序恢复以前的文件?

谢谢。

这是Windows服务的Wix安装程序的Product.wxs:

 <Product Id="*" Name="WixWindowsService2012" Language="1033" Version="1.0.0.1" Manufacturer="aaa" UpgradeCode="blabla">
 <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine"   Platforms="x64"/>
 <Upgrade Id="blabla">
 <UpgradeVersion OnlyDetect="no" Property="PREVIOUSFOUND" 
    Minimum="1.0.0.0"  IncludeMinimum="yes" 
    Maximum="99.0.0.0" IncludeMaximum="no" />
 </Upgrade>
 <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
 <MediaTemplate />
 <Feature Id="ProductFeature" Title="WixWindowsService2012" Level="1">
    <ComponentGroupRef Id="ProductComponents" />
 </Feature>
 </Product>
  : 
 <Component Id="ProductComponent" Win64="yes">
 <File Id="WixWindowsService2012.exe" Name="WixWindowsService2012.exe"     Source="$(var.WixWindowsService2012.TargetPath)" Vital="yes" KeyPath="yes" DiskId="1"/>
 <ServiceInstall 
  Id="ServiceInstaller" 
  Type="ownProcess" 
  Vital="yes" 
  Name="WixWindowsService2012" 
  DisplayName="WixWindowsService2012" 
  Description="A test for WiX installation for Windows Service" 
  Start="auto" 
  Account="LocalSystem" 
  ErrorControl="ignore" 
  Interactive="no"></ServiceInstall>
  <ServiceControl Id="StartService" Start="install" Stop="both" Remove="uninstall" Name="WixWindowsService2012" Wait="yes" />
  </Component>

1 个答案:

答案 0 :(得分:1)

如果您有一个设置可以恢复以前版本的文件,那么根据定义它是一个升级(Visual Studio中的RemovePreviousVersions)。在WiX中,您可以使用MajorUpgrade元素指定升级,因此您拥有的任何内容都不足或无法正常工作。您的WiX项目中的UpgradeCode需要与之前的设置相同,无论是WiX还是VS. ProductVersion必须以前3位递增,并且ProductCode必须不同。此外,每台计算机的安装不会升级每用户安装,以防万一发生这种情况。创建安装的详细日志将提供升级无效的原因。