我们有一个使用wix构建的MSI,它安装了我们的基于ruby的产品。当我们发布第一个版本时,有一个错误。升级会覆盖对ruby配置文件(gemrc)的更改,在某些情况下会有效打破产品。WIX,如何不替换配置文件
我一直在试图让MSI无法删除或替换升级时的配置文件,但没有成功。
我现在拥有的是:
<InstallExecuteSequence>
<RemoveExistingProducts After="InstallExecuteAgain" />
</InstallExecuteSequence>
<Directory Id="embeddedDir" Name="embedded">
<Directory Id="embeddedEtcDir" Name="etc">
<Component Id="gemrcComponent" Guid="uuid..." NeverOverwrite='yes' Permanent='yes'>
<File Id='gemrc' Name='gemrc'
Source='$(var.ProjectSourceDir)\embedded\etc\gemrc.default' Vital='yes' KeyPath='yes' />
</Component>
</Directory>
</Directory>
然而,从当前版本(1.0)到新版本(1.1)打算将离开安装没有gemrc可言。继续前进它可以工作,所以从1.1到1.2会离开现有的(修改过的)文件。
我假设,它不起作用的原因是因为它使用旧的1.0 MSI来删除现有的安装,并且该版本已将gemrc文件标记为需要删除的产品的一部分。
这意味着我可以解决这个问题的唯一方法是使用自定义操作(在安装之前将文件复制到临时路径,然后再将其移回 或类似的东西)。有更好/更简单的方法吗?
由于安装程序和配置文件的问题,我们在项目中决定不安装安装程序的配置文件。麻烦是不值得的。我们的应用程序查找现有的配置文件,如果它们不存在,请创建一个默认文件。 在移除过程中,我们要求保留配置文件,如果不是,请删除它们。 – linuxrocks