我在托管引导程序中链接了多个EXECPackages,例如:
<ExePackage Id="Test1" SourceFile="D:\Test\TestBatch.bat" Vital="yes" Compressed="yes"
InstallCommand="Testinstall1"
UninstallCommand="Testuninstall1"
/>
<ExePackage Id="Test2" .../>
我希望我的回滚执行卸载命令。 生成的日志文件包含以下信息:
回滚:卸载。应用回滚包:Test2,action: 卸载,路径:C:\ ProgramData \ Package 缓存\ AD944C8E8D75C79F57819C331F46D15B4CFD9172 \ TestBatch.bat, 参数:'“C:\ ProgramData \ Package 缓存\ AD944C8E8D75C79F57819C331F46D15B4CFD9172 \ TestBatch.bat” Testuninstall2'[24F4:246C] [2013-06-05T14:45:10] e000:错误 0x80070003:路径上的CreateProcess失败: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
中删除。
然而这曾经在以前工作过。
答案 0 :(得分:3)
如果正在安装软件包,则会在回滚时执行UninstallCommand
。我已经看到当同一个可执行文件用于单个ExePackage
中的多个Chain
元素时会出现此问题。 Burn引擎缓存包的方式使用可执行文件的哈希来确定位置。因此,如果您在Chain
中放入相同的可执行文件,则可能会过早删除它。确保每个可执行包在Bundle中都是唯一的。
PS:强烈建议您拥有DetectCondition on the ExePackage