1

我在尝试将 WiX 配置为在更新期间不从安装目录中删除某些配置文件时遇到了最糟糕的情况。

我已经搜索和谷歌搜索,但我被卡住了......

这就是我所拥有的。

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" ... >
  <Product Id="PRODUCT_GUID" ...
     UpgradeCode="UPGRADE_GUID">
    ...
    <Upgrade Id="$(var.UpgradeCode)">
       <UpgradeVersion OnlyDetect="no" Property="REMOVEOLDVERSION" Maximum="$(var.ProductVersion)" IncludeMaximum="no" />
       <UpgradeVersion OnlyDetect="yes" Property="NEWERFOUND" Minimum="$(var.ProductVersion)" IncludeMinimum="no" />
    </Upgrade>


    <InstallExecuteSequence>
      <RemoveExistingProducts After="InstallFinalize" />
    </InstallExecuteSequence>
    ...

文件如下:

   <Component Id="ConfigurationFiles" Guid="ConfigurationFiles_GUID" NeverOverwrite="yes">
      <File Id="SomeConf" Source=... />

    </Component>

我究竟做错了什么?

4

1 回答 1

4

如果问题确实是删除配置文件,那么我认为您的意思是指定Permanent="yes"而不是NeverOverwrite="yes".

但是,如果新版本的安装程序没有安装配置文件(我想这就是它们在升级后消失的原因),那么它们应该不是必需的,对吧?我不确定你为什么要在这种情况下保留配置文件。将它们标记为永久有效使得无法卸载它们。

如果您真的担心覆盖用户对这些配置文件所做的更改,那么我认为 Windows Installer 已经可以正确处理这个问题。文件版本控制规则已经有了基于文件修改时间戳的“用户数据”的概念,并且不会覆盖此类文件。

于 2012-04-24T10:22:03.740 回答