wix 托管引导程序:回滚失败
Posted
技术标签:
【中文标题】wix 托管引导程序:回滚失败【英文标题】:wix Managed bootstrapper: Rollback failing 【发布时间】:2013-05-29 15:55:30 【问题描述】:我的托管引导程序中链接了多个 EXECPackage,例如:
<ExePackage Id="Test1" SourceFile="D:\Test\TestBatch.bat" Vital="yes" Compressed="yes"
InstallCommand="Testinstall1"
UninstallCommand="Testuninstall1"
/>
<ExePackage Id="Test2" .../>
我希望我的回滚能够执行卸载命令。 生成的日志文件有以下信息:
回滚:卸载。应用回滚包:Test2,动作: 卸载,路径:C:\ProgramData\Package 缓存\AD944C8E8D75C79F57819C331F46D15B4CFD9172\TestBatch.bat, 参数:'"C:\ProgramData\Package 缓存\AD944C8E8D75C79F57819C331F46D15B4CFD9172\TestBatch.bat" Testuninstall2' [24F4:246C][2013-06-05T14:45:10]e000:错误 0x80070003: 无法在路径上创建进程:C:\ProgramData\Package 缓存\AD944C8E8D75C79F57819C331F46D15B4CFD9172\TestBatch.bat [24F4:246C][2013-06-05T14:45:10]e000:错误 0x80070003:未能 执行EXE包。 [1654:27A8][2013-06-05T14:45:10]e000:错误 0x80070003: 配置单机EXE包失败。
我意识到当触发回滚 (Result.Cancel
) 时,包含 Exe 包负载的缓存文件夹会从C:\ProgramData\Package Cache
中删除。
不过这在以前是可行的。
【问题讨论】:
【参考方案1】:如果正在安装包,UninstallCommand
将在回滚时执行。我已经看到当同一个可执行文件用于单个Chain
中的多个ExePackage
元素时会出现此问题。 Burn 引擎缓存包的方式使用可执行文件的哈希来确定位置。因此,如果您将相同的可执行文件放在Chain
中,它可能会被提前删除。确保每个可执行包在您的 Bundle 中都是唯一的。
PS:强烈建议你有DetectCondition on the ExePackage
【讨论】:
以上是关于wix 托管引导程序:回滚失败的主要内容,如果未能解决你的问题,请参考以下文章
[Wix Bundle Managed Bootstrapper]错误 0x80070002:无法创建托管引导程序应用程序