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