[wix-users] Managed Bootstrapper: Error 0x80070002: Failed while prompting for source

Phill Hogland phill.hogland at rimage.com
Mon Apr 4 06:25:52 PDT 2016


Glad it helped. I knew there was a way to set the local source, but I did not need to implement that.  Regarding skipping components, you might search the old nabble.com wix-users list for information on taking a reboot in the middle of a chain.  Also the WixStdBA supports taking a reboot in the middle of a chain.  So I used both approaches to implement taking the reboot in the middle of a chain in my mvvm mba.  I am not sure that I can detail all of the points now, but I point this out because it envolves in saving the name of the package that needs the reboot, rebooting, and then on reentry skipping the part of the plan that had already been executed.  While you are trying to do something different, I just thought that this last part might be helpful in your scenario.

In a very brief nutshell, in the CA for the package that may need the immediate reboot, I use the WcaDeferredActionRequiresReboot global atom to signal the mba that the CA needs an immediate reboot.  In the mba in PakageComplete if I am completing the packageId that may need this reboot I use GlobalFindAtom to check for the above atom (and if I find it delete it) and return Result.Restart.

In ApplyComplete after determining if restart is allowed (see the WixStdBA to figure out this implementation) and if the user blesses a reboot I return  Result.Restart

Then in a Startup handler I read the Burn variable WixBundleForceRestartPackage, and save that in a member Property of my VM class.  

My InstalltionViewModel class has a AfterForcedRestartPackage property in which I store the packageId for the last package in the chain that was processed, prior to doing the reboot in my case.  Then in PlanPackageBegin if this member Property is not empty, I know I need to skip past the portion of the plan already completed (by returning RequestState.None) and start processing the packageid that comes after the packagId that was stored by the forced reboot.

So in this process I did not reset the plan as you are doing, but I skipped over the part of the plan that was already processed.  And I think you could do the same and then for the 'new' (to the plan items return a RequestState in PlanPackageBegin that indicates what you want the plan to be.

Sorry for the lack of detail but that is all I can pull together at the moment.  I hope this helps.

________________________________________
From: wix-users <wix-users-bounces at lists.wixtoolset.org> on behalf of Farrukh Waheed <farrukh1 at gmail.com>
Sent: Saturday, April 2, 2016 12:00 AM
To: WiX Toolset Users Mailing List
Subject: Re: [wix-users] Managed Bootstrapper: Error 0x80070002: Failed while prompting for source

Hey Phill,
In my scenario, nothing would be downloaded. And I got the hint from your
snippet, which has succeeded partially, i.e. In ResolveSource, I called
Engine.SetLocalSource(), then called Engine.Detect(). This would reset all
searches, etc, etc and would re-initiate the Add/Remove/Uninstall/Repair
session with updated path in SetLocalSource. And this is working fine now.
Rest is, I have to struggle a little to hide the restart of session and
continue the screen from where user selected new component (or if
de-selected any), i.e. I guess PlantAction(LaunchAction.Install). That I
almost figured-out where this would be injected, just have to drown into
code again (its MVVM :( actually )

Thanks a bunch for your effort..
Regards




On 30 March 2016 at 18:38, John Cooper <JoCooper at jackhenry.com> wrote:

> Interesting piece of code.  I was running into problems accessing an
> executable in the bundle payload.  I ultimately had to take another tack to
> get the path to my IIS daemon.
>
> --
> John Merryweather Cooper
> Senior Software Engineer | Integration Development Group | Enterprise
> Notification Service
> Jack Henry & Associates, Inc.® | Lenexa, KS  66214 | Ext:  431050 |
> JoCooper at jackhenry.com
>
>
>
>
> -----Original Message-----
> From: wix-users [mailto:wix-users-bounces at lists.wixtoolset.org] On Behalf
> Of Phill Hogland
> Sent: Wednesday, March 30, 2016 8:30 AM
> To: WiX Toolset Users Mailing List <wix-users at lists.wixtoolset.org>
> Subject: Re: [wix-users] Managed Bootstrapper: Error 0x80070002: Failed
> while prompting for source
>
> The e-mail below is from an external source.  Please do not open
> attachments or click links from an unknown or suspicious origin.
>
> I am not sure that I really follow the original question, and I do run on
> Wix 3.10.2 and do not have any problem modifying the source for my MSI
> packages.  while e.LocalSource and e.DownloadSource are read only, I parse
> those values and other information and if I need to change the source in
> Resolve source I call Engine.SetDownloadSource followed by returning
> Result.Download.
>
> Here is a snippet of the last part of my ResolveSource handler (which I
> originally based on code similar to
> WixBA::InstallationViewModel::ResolveSource.  After I have determined if I
> need to change the download URL I do the following (which may be different
> than what the OP is doing since my MSI packages are staged to a web server
> similar to the WixBA, and I suspect he is using a local embedded container).
>
>             if (!fIsBundle && need_to_chang_url_to_value_of_downloadURL)
>             {
>                  try
>                 {
>                     // Throws exception when called on a bundle with
> either a ContainerId and PayloadId is provided
>                    myapp.Engine.SetDownloadSource(e.PackageOrContainerId,
> e.PayloadId, downloadUrl.ToString(), String.Empty, String.Empty);
>                 }
>                 // Since now we test for !fIsBundle this exception should
> not happen.
>                 catch (InvalidOperationException ex)
>                 {
>                     ....log the exception
>                 }
>                 catch (ArgumentException ex)
>                 {
>                     ....log the exception
>                 }
>             }
>             //use e.PayloadId as the downloadRetries Dicionay index,
> unless it is null.  For packages (or containers) e.PayloadId and
> e.PackageOrContainer are the same value.
>             string packageContainerPayloadId =
> String.IsNullOrEmpty(e.PayloadId) ? e.PackageOrContainerId : e.PayloadId;
>
>             this.downloadRetries.TryGetValue(packageContainerPayloadId,
> out this.retries);
>             this.downloadRetries[packageContainerPayloadId] = this.retries
> + 1;
>             e.Result = this.retries < this.RetriesMaxLimit && (null !=
> downloadUrl) ? Result.Download : Result.Ok;
>         }
>
> Not an expert and I may not understand the issue, but I hope this helps.
> My mba/the Burn Engine downloads only the packages that it needs at install
> time, and Burn caches the bundle. Later I also allow the user to launch and
> modify selecting a msi that may not have been selected, and it installs as
> expected using the downloadURL to locate the package.
>
> ________________________________________
> From: wix-users <wix-users-bounces at lists.wixtoolset.org> on behalf of
> John Cooper <JoCooper at jackhenry.com>
> Sent: Wednesday, March 30, 2016 8:08 AM
> To: WiX Toolset Users Mailing List
> Subject: Re: [wix-users] Managed Bootstrapper: Error 0x80070002: Failed
> while   prompting for source
>
> In WiX 3.10.2 and later, you're going to have problems the bundle like
> that.  You're getting ACCESS DENIED.
>
> --
> John Merryweather Cooper
> Senior Software Engineer | Integration Development Group | Enterprise
> Notification Service Jack Henry & Associates, Inc.® | Lenexa, KS  66214 |
> Ext:  431050 |JoCooper at jackhenry.com
>
>
>
>
> -----Original Message-----
> From: wix-users [mailto:wix-users-bounces at lists.wixtoolset.org] On Behalf
> Of Farrukh Waheed
> Sent: Wednesday, March 30, 2016 7:15 AM
> To: WiX Toolset Users Mailing List <wix-users at lists.wixtoolset.org>
> Subject: [wix-users] Managed Bootstrapper: Error 0x80070002: Failed while
> prompting for source
>
> The e-mail below is from an external source.  Please do not open
> attachments or click links from an unknown or suspicious origin.
>
> Hi Experts,
> I'm delivering 3 msi packages in my Managed Bootstrapper (MBA). User is
> given choice to select which packages he/she wants to install. All goes
> well. When user tries to Modify the installation from Control Panel,
> selects new package from dialog and original source (MBA.exe) is missing,
> installation failed with following log:
>
> [553C:0A88][2016-03-30T16:00:54]w341: Prompt for source of container:
> WixAttachedContainer, path: D:\work\MBA.Install.Bundle\bin\Debug\MBA.exe
> [553C:0A88][2016-03-30T16:00:54]e054: Failed to resolve source for file:
> D:\work\MBA.Install.Bundle\bin\Debug\MBA.exe, error: 0x80070002.
> [553C:0A88][2016-03-30T16:00:54]e000: Error 0x80070002: Failed while
> prompting for source (original path
> 'D:\work\MBA.Install.Bundle\bin\Debug\MBA.exe').
> [553C:0A88][2016-03-30T16:00:54]e311: Failed to acquire container:
> WixAttachedContainer to working path:
>
> C:\Users\Me\AppData\Local\Temp\{1338381A-F85F-4B6D-83EA-A0A2D1A369C1}\10A35D6D6CAC04B3DC248033B1588CBD67AD698B,
> error: 0x80070002.
> [553C:0A88][2016-03-30T16:00:54]i000: CachePackageComplete:
> Pkg_Id=EMS.Server Resulted=None
> [553C:0A88][2016-03-30T16:00:54]i000: CacheComplete: Status=-2147024894
> [553C:3C24][2016-03-30T16:00:54]e000: Error 0x80070002: Failed while
> caching, aborting execution.
>
> I've tried to capture this in ResolveSource event handler. e.LocalSource
> and e.DownloadSource are readonly properties. There is not criteria to
> download missing file, all needs to be present locally.
>
> I read about the Propmpt to get the Source of original installer here:
>
> https://blogs.msdn.microsoft.com/heaths/2007/10/25/resolvesource-requires-source/
>
> but this is about msi installer, while in my MBA, this dialog is
> suppressed.
>
> How can I take set the LocalSource manually (may be by taking input via
> dialog from user)?
> Can I set WixAttachedContainer to some other working path at runtime but
> taking input from user?
>
> Thanks a bunch...
>
> ____________________________________________________________________
> WiX Toolset Users Mailing List provided by FireGiant
> http://www.firegiant.com/
>
> NOTICE: This electronic mail message and any files transmitted with it are
> intended exclusively for the individual or entity to which it is addressed.
> The message, together with any attachment, may contain confidential and/or
> privileged information.
> Any unauthorized review, use, printing, saving, copying, disclosure or
> distribution is strictly prohibited. If you have received this message in
> error, please immediately advise the sender by reply email and delete all
> copies.
>
>
> ____________________________________________________________________
> WiX Toolset Users Mailing List provided by FireGiant
> http://www.firegiant.com/
>
> ____________________________________________________________________
> WiX Toolset Users Mailing List provided by FireGiant
> http://www.firegiant.com/
>
> NOTICE: This electronic mail message and any files transmitted with it are
> intended
> exclusively for the individual or entity to which it is addressed. The
> message,
> together with any attachment, may contain confidential and/or privileged
> information.
> Any unauthorized review, use, printing, saving, copying, disclosure or
> distribution
> is strictly prohibited. If you have received this message in error, please
> immediately advise the sender by reply email and delete all copies.
>
>
> ____________________________________________________________________
> WiX Toolset Users Mailing List provided by FireGiant
> http://www.firegiant.com/
>

____________________________________________________________________
WiX Toolset Users Mailing List provided by FireGiant http://www.firegiant.com/


More information about the wix-users mailing list