WiX安装程序在卸载时删除文件,但不在升级时删除
我有一个用WiX安装程序安装的程序 程序本身在[CommonAppDataFolder]\[MyAppName]\目录中创建了许多文件。这些文件都有相同的扩展名(我们称之为.dat) 在升级时,我想保留这些文件。WiX安装程序在卸载时删除文件,但不在升级时删除,wix,windows-installer,upgrade,uninstallation,delete-file,Wix,Windows Installer,Upgrade,Uninstallation,Delete File,我有一个用WiX安装程序安装的程序 程序本身在[CommonAppDataFolder]\[MyAppName]\目录中创建了许多文件。这些文件都有相同的扩展名(我们称之为.dat) 在升级时,我想保留这些文件。 在卸载时,我想删除这些文件 我目前正在删除文件,如下所示: <Directory Id='CommonAppDataFolder'> <Directory Id='MyCommonAppDataFolder' Name='MyAppName'> &l
在卸载时,我想删除这些文件 我目前正在删除文件,如下所示:
<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文件也会被删除。我猜是因为升级正在对以前的版本执行卸载
我处理这个问题正确吗?如何在升级时保留文件,而在卸载时删除它们?一个选项是切换到次要更新。这有很多限制,所以不像听起来那么简单。您是否尝试过向RemoveExistingProducts添加条件?这就是我要做的
<RemoveExistingProducts After='InstallInitialize'>(NOT UPGRADINGPRODUCTCODE) AND (Installed)</RemoveExistingProducts>
(不升级ProductCode)和(已安装)
这似乎是我想要的,但这当然意味着升级时不会删除以前的版本。例如,我的应用程序在“添加或删除程序”控制面板中有多个条目。有解决方法吗?您可以尝试在安装完成后删除现有产品。这将删除所有已更改的文件和注册表设置,但保留未更改的文件和注册表设置。它也可能与您的ProductID或版本有关。操作系统可能认为这是一个完全不同的程序。升级是内部卸载和重新安装吗?还是覆盖DLL/文件?你有没有找到解决这个问题的方法。很久以前,但我记不起来了。我想卸载后,我只是将文件留在CommonAppDataFolder中。感谢Matt的回答。您的回答可能在wix burn之前或早期阶段,因此我想知道您是否会或现在可以以不同的方式回答此问题。是使用2个msi包创建wix引导程序的可能解决方案。他的.dat文件将在第二个msi软件包中,不会升级。如果原始软件包的发货方式不同,很多事情都可以完成。我的回答是假设他需要处理装运的东西。@RobMensching没有装运的包裹有答案吗?(目前正在开发)这将非常有帮助。谢谢