Failed to extract payloads from container after reboot continuation

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Failed to extract payloads from container after reboot continuation

Jiri Tomek
I have a BS that I wrap in a NSIS based bundle due to some historical resons. My BS has .NET 4.5.1 as prerequisity. If I install on a machine that does not have .NET 4.5.1 it properly installs it as prerequisity and then requires restart. After restart BS starts automatically again but then when I continue with installation it fails with:

w341: Prompt for source of container: WixAttachedContainer, path: C:\setup.exe
e054: Failed to resolve source for file: C:\setup.exe, error: 0x80070002.
e000: Error 0x80070002: Failed while prompting for source (original path 'C:\setup.exe').
e311: Failed to acquire container: WixAttachedContainer to working path: C:\Users\ADMINI~1\AppData\Local\Temp\2{4569b6db-8ebb-4840-b563-e7a2f32801b7}\1ABA140A968B8430F69FA944589F83F8969199BA, error: 0x80070002.

Original file that was used to run installation was "C:\installer.exe" but it was that NSIS bundle that just extracted setup.exe and run that. It looks that Burn does not expect that someone extracted it and run it so it now tries to access itself on wrong path (C:\ instead of %temp% where it was extracted).

So I thought that it does not know where to find source so I implemented handler for ResolveSource event and I provided proper path to cached bundle in %temp%. Then I hit different error:

Error 0x80070001: Failed to extract all files from container, erf: 1:2:0
Error 0x80070001: Failed to wait for operation complete.
Error 0x80070001: Failed to open container.
Error 0x80070001: Failed to open container: WixAttachedContainer.
Failed to extract payloads from container: WixAttachedContainer to working path: C:\Users\ADMINI~1\AppData\Local\Temp\{7f669658-cb4a-40fe-a129-8344bca8bf17}\9C68790D48E03F93002770A0A5E80F0C06BB3D8A, error: 0x80070001.

After that there is ARP entry in Add Remove programs for BS so I have to uninstall it and then I'm able to install it using the same installer without issues.

If I pre-install .NET 4.5.1 manually and then run exactly the same installer is installs without issues. So it seems that there is some flaw in "extract -> prereq -> reboot -> install" flow only.
Is this something known that Burn can't handle when it's not the ultimate parent process but it's extracted from other .exe?
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Failed to extract payloads from container after reboot continuation

Jiri Tomek
I found some more information. The issue does not seem to be caused by NSIS wrapper but by fact that original .exe name is different than what Burn expects.

New STR are:
- Build BS as "setup.exe"
- Rename BS to "installer.exe"
- Run install from "installer.exe"
- Let .NET prereq be installed
- Reboot

Now continuation fails with error mentioned in first post "Failed to resolve source for file: C:\setup.exe, error: 0x80070002.". If I don't rename "setup.exe" to "installer.exe" it works.
So it seems that Burn has issues if you rename original built file and install flow contains a reboot.

It's probably because generated BurnManifest contains:
<Container Id="WixAttachedContainer" FileSize="83859245" Hash="11D22668B518B8EF8B246BD9298058B88F82790C" FilePath="setup.exe" ... /> and this value is used after reboot.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Failed to extract payloads from container after reboot continuation

Rob Mensching-7
Sounds right.
_____________________________________________________________
 Short replies here. Complete answers over there: http://www.firegiant.com/


-----Original Message-----
From: Jiri Tomek [mailto:[hidden email]]
Sent: Friday, May 29, 2015 5:19 AM
To: [hidden email]
Subject: Re: [WiX-users] Failed to extract payloads from container after reboot continuation

I found some more information. The issue does not seem to be caused by NSIS wrapper but by fact that original .exe name is different than what Burn expects.

New STR are:
- Build BS as "setup.exe"
- Rename BS to "installer.exe"
- Run install from "installer.exe"
- Let .NET prereq be installed
- Reboot

Now continuation fails with error mentioned in first post "Failed to resolve source for file: C:\setup.exe, error: 0x80070002.". If I don't rename "setup.exe" to "installer.exe" it works.
So it seems that Burn has issues if you rename original built file and install flow contains a reboot.

It's probably because generated BurnManifest contains:
<Container Id="WixAttachedContainer" FileSize="83859245"
Hash="11D22668B518B8EF8B246BD9298058B88F82790C" FilePath="setup.exe" ... /> and this value is used after reboot.

------------------------------------------------------------------------------
_______________________________________________
WiX-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/wix-users
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Failed to extract payloads from container after reboot continuation

Gerhard Matzen
This post has NOT been accepted by the mailing list yet.
In reply to this post by Jiri Tomek
I got a ResolveSource handler to work by references in the original source:

private void ResolveSourceHandler(object sender, ResolveSourceEventArgs args)
{
//In my bundle, I cache some of the built-in variables under my own Bundle.Variables
Engine.SetLocalSource(args.PackageOrContainerId, args.PayloadId,       Bundle.Variables.WixBundleOriginalSource);
args.Result = Result.Retry;
}
Loading...