12

我有一个使用 WiX 安装程序安装的程序。

程序本身会在 [CommonAppDataFolder]\[MyAppName]\ 目录中创建许多文件。这些文件都具有相同的扩展名(我们称之为 .dat)。

升级时,我想保留这些文件。
卸载时,我想删除这些文件。

我目前正在删除文件:

<Directory Id='CommonAppDataFolder'>
  <Directory Id='MyCommonAppDataFolder' Name='MyAppName'>
    <Component Id='RemoveFilesComponent' Guid='71cb0cd8-8459-4a8f-89b7-f00977aa7b70'>
      <RemoveFile Id='RemoveFiles' Name='*.dat' On='uninstall'/>
    </Component>
  </Directory>
</Directory>

我有这个来促进升级:

<InstallExecuteSequence>
  <RemoveExistingProducts After='InstallInitialize'/>
</InstallExecuteSequence>

现在,当我卸载时,.dat 文件被正确删除。
但是,当我升级时,.dat 文件也会被删除。我猜是因为升级正在对以前的版本执行卸载。

我是否正确地解决了这个问题?如何在升级时保留文件,而在卸载时删除它们?

4

2 回答 2

2

您是否尝试向 RemoveExistingProducts 添加条件?这就是我会做的。

<RemoveExistingProducts After='InstallInitialize'>(NOT UPGRADINGPRODUCTCODE) AND (Installed)</RemoveExistingProducts>
于 2010-07-21T19:35:45.993 回答
1

一种选择是切换到次要更新。这有很多限制,所以它不像听起来那么容易。

于 2010-07-20T15:34:23.763 回答