2

我的托管引导程序中有多个 EXECPackage 链接,例如:

<ExePackage Id="Test1" SourceFile="D:\Test\TestBatch.bat" Vital="yes" Compressed="yes" 
              InstallCommand="Testinstall1"
              UninstallCommand="Testuninstall1"
              />
<ExePackage Id="Test2" .../>

我希望我的回滚执行卸载命令。生成的日志文件包含以下信息:

回滚:卸载。应用回滚包:Test2,操作:卸载,路径:C:\ProgramData\Package Cache\AD944C8E8D75C79F57819C331F46D15B4CFD9172\TestBatch.bat,参数:'"C:\ProgramData\Package Cache\AD944C8E8D75C79F57819C331F46D15B24TestunC6172" ][2013-06-05T14:45:10]e000:错误 0x80070003:无法在路径上创建进程:C:\ProgramData\Package Cache\AD944C8E8D75C79F57819C331F46D15B4CFD9172\TestBatch.bat [24F4:246C][2013-06-05:45 10]e000:错误0x80070003:执行EXE包失败。[1654:27A8][2013-06-05T14:45:10]e000:错误 0x80070003:无法配置每台机器的 EXE 包。

我意识到当触发回滚 ( Result.Cancel) 时,包含 Exe 包有效负载的缓存文件夹将从C:\ProgramData\Package Cache.

然而,这曾经工作过。

4

1 回答 1

3

UninstallCommand如果正在安装包,则在回滚时执行。我已经看到当同一个可执行文件用于ExePackage单个Chain. Burn 引擎缓存包的方式使用可执行文件的哈希来确定位置。因此,如果您将相同的可执行文件放入其中,Chain则可能会过早地删除它。确保每个可执行包在您的 Bundle 中都是唯一的。

PS:强烈建议您在ExePackage 上有一个 DetectCondition

于 2013-06-22T20:50:35.977 回答