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

Posted

技术标签:

【中文标题】恢复到以前版本的 wix 安装程序【英文标题】:revert back to previous version of wix installer 【发布时间】:2014-02-25 16:13:37 【问题描述】:

在使用 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】:

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

【讨论】:

感谢您的快速回复。像下面这样在 MajorUpgrade 元素中添加 Schedule="afterInstallInitialize" 可以满足我的需要。 "

以上是关于恢复到以前版本的 wix 安装程序的主要内容,如果未能解决你的问题,请参考以下文章

Wix 安装程序不会覆盖以前版本的可执行文件

Wix 安装程序有选择地卸载以前的版本

WIX:安装应用程序的多个实例并升级应用程序(如果安装在以前安装的位置)

如何实现 WiX 安装程序升级?

有条件地卸载 Wix 中的先前版本

WIX 安装程序根目录和版本控制