【问题标题】:wix Managed bootstrapper: Rollback failingwix 托管引导程序:回滚失败
【发布时间】: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 中删除。

不过这在以前是可行的。

【问题讨论】:

    标签: wix wix3.6 wix-extension wix3.7


    【解决方案1】:

    如果正在安装包,UninstallCommand 将在回滚时执行。我已经看到当同一个可执行文件用于单个Chain 中的多个ExePackage 元素时会出现此问题。 Burn 引擎缓存包的方式使用可执行文件的哈希来确定位置。因此,如果您将相同的可执行文件放在Chain 中,它可能会被提前删除。确保每个可执行包在您的 Bundle 中都是唯一的。

    PS:强烈建议你有DetectCondition on the ExePackage

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多