2013-05-29 52 views
2

我有我的管理引導程序鏈多EXECPackages,例如:威克斯管理引導程序:回滾失敗

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

我希望我的回滾執行卸載命令。 生成的日誌文件有以下信息:

回滾:卸載。應用回滾包:Test2的,動作: 卸載,路徑:C:\ ProgramData \包 緩存\ AD944C8E8D75C79F57819C331F46D15B4CFD9172 \ TestBatch.bat, 論點:「 「C:\ ProgramData \包 緩存\ AD944C8E8D75C79F57819C331F46D15B4CFD9172 \ TestBatch.bat」 Testuninstall2 '[24F4:246C] [2013-06-05T14:45:10] E000:錯誤 0x80070003:無法CreateProcess的上路徑:C:\ ProgramData \包 緩存\ 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刪除。

但是這個用於之前的工作。

回答

3

如果正在安裝軟件包,則會在回滾時執行UninstallCommand。我發現當單個Chain中的多個ExePackage元素使用相同的可執行文件時,會發生此問題。 Burn引擎緩存包的方式使用可執行文件的散列來確定位置。因此,如果您將相同的可執行文件放入Chain中,可能會過早刪除它。確保每個可執行程序包在您的Bundle中都是唯一的。

PS:強烈建議您有DetectCondition on the ExePackage