跳过捆绑应用程序时Wix安装程序卸载程序出现问题

时间:2018-01-25 22:25:36

标签: wix uninstall

我有一个捆绑的应用程序说XYZ-1.0.0.1.exe,其中捆绑了应用程序A-2.2.0.1.exe和B-1.2.0.1.exe。因此,当我们安装XYZ时,我们会在添加删除程序中列出A和B.但是当我用XYZ-1.0.0.2升级XYZ-1.0.0.1时,它有A-2.2.0.1.exe和B-1.2.0.2.exe,所以A是相同的并且已经安装,B需要升级。我实际上通过使安装条件为false来跳过A的安装,因为已经安装了相同的版本并且在升级时仅安装了B.

成功升级后,我无法卸载应用程序XYZ,它会显示一些程序包错误,只有当用于升级的源文件从机器中删除时才会发生这种情况。实际上,卸载程序包时必须从程序缓存中引用,我想我们跳过了包缓存有问题。

我得到的错误如下“提示容器来源:WixAttachedContainer,路径:C:\ Users \ ABC \ Desktop \ XYZ-1.0.0.2.exe无法解析文件源:C:\ Users \ ABC \ Desktop \ XYZ-1.0.0.2.exe,错误:0x80070002。错误0x80070002:提示输入源时失败(原始路径'C:\ Users \ ABC \ Desktop \ XYZ-1.0.0.2.exe')。无法获取容器:WixAttachedContainer到工作路径:C:\ Users \ ABC \ AppData \ Local \ Temp {b4a1c780-306c-40f0-83ad7},错误:0x80070002。“

只有当我将XYZ.exe复制到任何路径,例如桌面和安装后(跳过安装A或B,因为已经安装了相同版本的A或B捆绑)并从保存的路径中删除安装文件XYZ.exe时,才会出现此错误即这里桌面。除非我卸载独立跳过的A或B,否则我无法卸载。

还有另一种情况。

我有一个捆绑的应用程序说XYZ-1.0.0.1.exe,其中捆绑了应用程序A-2.2.0.1.exe和B-1.2.0.1.exe。 XYZ-1.0.0.2.exe,具有A-2.2.0.1.exe和B-1.2.0.2.exe。我们在两个版本的XYZ中使用相同版本的A.当我安装XYZ-1.0.0.1.exe时,我通过将安装条件设置为false来跳过安装A-2.2.0.1.exe。因此安装了XYZ-1.0.0.1.exe并且还安装了B-1.2.0.1。此外,当我升级到XYZ-1.0.0.2时,我需要安装所有A和B.安装成功,现在我有XYZ-1.0.0.2,A-2.2.0.1和B-1.2.0.2。现在如果我从原始路径删除XYZ-1.0.0.2.exe的安装文件并尝试卸载它中断。

最初我认为包缓存问题出现了,因为A-2.2.0.1.exe没有与XYZ-1.0.0.2.exe一起安装,因为我跳过它,因为它已经可用。但在第二个场景得知跳绳不是问题之后。由于在第二种情况下,A-2.2.0.1.exe与XYZ-1.0.0.2.exe一起安装。

1 个答案:

答案 0 :(得分:1)

同一个问题也花费了我很多时间。解决了它。由于问题是“提示容器来源:WixAttachedContainer,路径:”,因此,您可以在升级到程序数据或默认名称为xyz的其他路径时,复制exe文件XYZ-1.0.0.2。可执行程序。首先注册ResolveSource事件,然后添加以下代码。假设复制的exe路径为 c:/XYZ/xyz.exe

private void OnResolveSource(object sender, ResolveSourceEventArgs e)
{   
Application.Engine.SetLocalSource(e.PackageOrContainerId, e.PayloadId, "c:/XYZ/xyz.exe");
e.Result = Result.Retry;
}

如果有人知道更好的答案,请提供帮助。