对于Wix工具集和UpgradeVersion,标记为Property ever reset

对于Wix工具集和UpgradeVersion,标记为Property ever reset,wix,Wix,我们的Product.wxs的代码如下。 运行安装程序后,我们可以看到BackupFiles自定义操作会运行,但RestoreFiles不会如日志文件所示运行: “跳过操作:恢复文件(条件为false)” 为什么备份文件在相同条件下运行而恢复文件不运行? 找到的旧版本是否已更改 <?xml version="1.0" encoding="UTF-8"?> <Wix xmlns="http://schemas.m

我们的Product.wxs的代码如下。 运行安装程序后,我们可以看到BackupFiles自定义操作会运行,但RestoreFiles不会如日志文件所示运行:

“跳过操作:恢复文件(条件为false)”

为什么备份文件在相同条件下运行而恢复文件不运行? 找到的旧版本是否已更改


    <?xml version="1.0" encoding="UTF-8"?>
    <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" >
    
    
      <Product Id="*" Name="My Product" Language="1033" Version="0.0.0.0" Manufacturer="MyCompany"
             UpgradeCode="{B55B9CB0-BA28-4BB3-834B-6075AD5D45E4}">
    
        <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
        <UIRef Id="WixUI_ErrorProgressText" />
    
    
        <!-- Specify UI -->
        <Property Id="WIXUI_INSTALLDIR" Value="INSTALL_FOLDER" />
        <Property Id="RestoreFiles" Value="INSTALL_FOLDER" />
    
    
    <Upgrade Id="{B55B9CB0-BA28-4BB3-834B-6075AD5D45E4}">
      <UpgradeVersion Minimum="1.0.0"
                      IncludeMinimum="yes"
                      OnlyDetect="no"
                      Maximum="0.0.0.0"
                      IncludeMaximum="no"
                      Property="OLDVERSIONFOUND" />
    </Upgrade>    
    
    <InstallExecuteSequence>
    
        <Custom Action="BackupFiles" After="InstallValidate" >OLDVERSIONFOUND</Custom>
        <Custom Action="SetRestoreFiles" Before="RestoreFiles" />
        <Custom Action="RestoreFiles" After="InstallFiles" >OLDVERSIONFOUND></Custom>
    
    
        <RemoveExistingProducts After="InstallInitialize" />    
    
      </InstallExecuteSequence>
    </Wix>


发现旧版本
OLDVERSIONFOUND>

像这样的自定义操作并不推荐。请参见底部“设置保存”的链接

简短的版本是,永远不要安装设置文件,而是由应用程序根据默认值或模板创建(这样安装程序就不会干扰它们),或者您可以对所有设置进行云计算,并在启动时从数据库中检索


主要升级-卸载和安装:主要升级有一个重要的奇怪之处。您必须记住,您启动了新安装程序,然后它将启动旧安装程序的卸载序列,作为其自身操作的一部分
因此,主要升级将运行旧安装程序的卸载顺序和新安装程序的安装顺序
(可能根据主要升级设置的配置以不同的顺序)

反直观效果:这种组合式“安装/卸载”方法会对逻辑、条件、顺序以及属性值产生很大的影响,有些更改非常反直观。除了“同时”(或在同一操作过程中)运行的两个不同版本外,您还必须记住,每个安装/卸载序列都以两种不同的模式运行:
立即
(构建执行脚本)和
延迟
(执行脚本执行)<代码>条件较差时,相同的自定义操作可能会意外运行多次(包括在启动设置的GUI序列中)。令人困惑。

详细解释:此处详细解释了这种复杂性以及安装过程中属性值似乎发生变化的现象:-请阅读该答案(双源和全部)。我以后再回头看,今晚进行测试已经太晚了


加入一些进一步的链接:


您解决了这个问题吗?