WiX:在卸载时保留(重命名)文件

时间:2011-03-06 21:36:25

标签: wix uninstall

我的应用程序有一个设置文件,我需要在用户卸载应用程序时保留该文件。我可以使用组件执行此操作,还是需要使用自定义操作?

这是我到目前为止(不工作):

<Directory Id="INSTALLLOCATION" Name="_MyApp">
  <Component>
    <File KeyPath="yes" Source="$(var.Source)\settings.ini" />
  </Component>
  <Component Id="Backup" Guid="SOME-GUID">
    <Condition>REMOVE=ALL</Condition>
    <CopyFile Id="settings.ini" Delete="no" SourceProperty="INSTALLLOCATION" DestinationProperty="INSTALLLOCATION" SourceName="settings.ini" DestinationName="settings.ini.bak" />
  </Component>
</Directory>

如果重要,这些组件属于:

<Feature Id="Default" Level="1">
  <ComponentRef Id="settings.ini" />
  <ComponentRef Id="Backup" />
</Feature>

我怀疑这不起作用,因为动作MoveFiles在RemoveFiles之后运行,然后没有什么可以移动,所以我从安装程序中删除了settings.ini并在安装后手动复制它。我在想这样的方式,在RemoveFiles之后ini文件仍然存在,它将被重命名。嗯,ini文件确实存在,但它没有重命名。知道为什么吗?

1 个答案:

答案 0 :(得分:1)

Windows Installer没有用于备份和还原文件的内置机制。通常,解决方案是使用复制文件的自定义操作。

  

我从安装程序中删除了settings.ini   并在之后手动复制   安装。我这样想   ini文件仍然存在   RemoveFiles,它将被备份。   嗯,ini文件确实存在但是   它没有得到备份。

尝试创建卸载日志,看看执行MoveFiles时会发生什么。作为旁注,我不知道如何在安装后手动复制文件比备份自定义操作更好。