使用Wix执行回滚

时间:2011-05-20 19:08:19

标签: wix windows-installer uninstall rollback

我正在使用Wix生成两个msis,我们将它们称为A和B.我将A安装到目录C:\ test然后将B安装到同一目录。第二次安装发生时,某些文件将被覆盖。

那么,在删除B的每一条痕迹时,如何将A恢复到其原始安装状态?我知道msis可以做回滚,例如,msi B的安装失败,但我读到如果安装成功,则删除回滚脚本等。

任何帮助都将不胜感激。

提前致谢。

1 个答案:

答案 0 :(得分:4)

我不认为你的方法是正确的。为什么您的软件包在同一位置安装文件?他们是共享文件吗?如果是,则可以使用Windows Installer组件共享机制:

  • 确保这些文件在两个安装程序中使用相同的组件
  • 这两个组件在两个安装程序中应具有相同的名称和GUID
  • 当软件包B安装在软件包A上时,Windows Installer将使用共享组件的引用计数
  • 原始文件不会被覆盖
  • 仅在卸载两个产品时才删除共享组件

如果它们不是共享文件,为什么对不同的文件版本使用相同的位置?