2011-05-20 36 views
0

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

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

任何帮助,将不胜感激。

在此先感谢。

回答

4

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

  • 确保这些文件使用相同的组件都安装
  • 这些部件应具有相同的名称和GUID两个安装
  • 当程序包B安装在包A,Windows安装程序将使用参考计数的共享组件
  • 原始文件不会被覆写
  • 共享的组件仅被移除时这两种产品被卸载

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

+0

感谢这是有道理的,但有没有一种优雅/内置的方式来跟踪GUID,而不是手动编辑每个次要版本/更改集的加热文件? – Kao 2011-05-23 20:06:10

+0

不是。您可以尝试不从安装程序中删除资源,并使用新的GUID再次添加资源。基本上,你需要维护它们。 – 2011-05-24 06:05:05