恢复到以前版本的 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 安装程序的主要内容,如果未能解决你的问题,请参考以下文章