Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Wix执行回滚_Wix_Windows Installer_Uninstallation_Rollback - Fatal编程技术网

使用Wix执行回滚

使用Wix执行回滚,wix,windows-installer,uninstallation,rollback,Wix,Windows Installer,Uninstallation,Rollback,我目前正在使用Wix生成两个msi,我们称它们为A和B。我将A安装到目录C:\test,然后将B安装到同一目录。第二次安装时,某些文件将被覆盖 那么,我如何将A恢复到其原始安装状态,同时删除B的所有跟踪?我知道如果msi B安装失败,msi可以进行回滚,但我了解到如果安装成功,回滚脚本等将被删除 任何帮助都将不胜感激 提前谢谢。我认为你的方法不正确。为什么您的软件包在同一位置安装文件?它们是共享文件吗?如果是,您可以使用Windows Installer组件共享机制: 确保这些文件在两个安装程

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

那么,我如何将A恢复到其原始安装状态,同时删除B的所有跟踪?我知道如果msi B安装失败,msi可以进行回滚,但我了解到如果安装成功,回滚脚本等将被删除

任何帮助都将不胜感激


提前谢谢。

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

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

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

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

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

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

谢谢,这是有道理的,但是除了在每个小版本/更改集手动编辑heat文件之外,还有一种优雅的/内置的方法来跟踪GUI吗?不太可能。您可以尝试不从安装程序中删除资源,并使用新的GUID再次添加它们。基本上,您需要维护它们。谢谢,这是有意义的,但是除了在每个小版本/更改集手动编辑heat文件之外,是否还有一种优雅的/内置的方法来跟踪GUI?不太可能。您可以尝试不从安装程序中删除资源,并使用新的GUID再次添加它们。基本上,您需要维护它们。