Hello,

I have a CustomAction that checks a license key against a cloud 
database. This uses an async method to wait for the response before 
continuing.

When I test the methods below outside of the CustomAction, it works 
fine; sends request, task waits for completion, returns results.

When I use the same methods in the CustomAction, I can see (using 
debug) that as soon as the t.Wait() line is hit the Dialog instantly 
goes to the "ended prematurely" page.

Is there something I am missing or are tasks - specifically waiting for 
async tasks - not possible in CustomActions?

Thank you,
-Brock

=====

     [CustomAction]
     public static ActionResult LicenseCheck(Session session)
     {
     #if DEBUG
         System.Diagnostics.Debugger.Launch();
     #endif
         // Default Values
         ReturnActionResult = ActionResult.Success;
         session["PIDACCEPTED"] = "0";

         string key = session["PIDKEY"].Replace("-", "");

         IEnumerable<ParseObject> results = 
ParseCustom.StartQueryRequest("Store", "Key", key);

         // Not making it past this point

...

     public static class ParseCustom
     {

         public static IEnumerable<ParseObject> StartQueryRequest(string 
className, string key, string value)
         {
             Task<IEnumerable<ParseObject>> t = DoWorkAsync(className, 
key, value);
             t.Wait(); // Hitting this line in CustomAction causes 
instant Failure, doesnt get past this line
             return t.Result;
         }

         private static Task<IEnumerable<ParseObject>> 
DoWorkAsync(string className, string key, string value)
         {
             return Task<IEnumerable<ParseObject>>.Factory.StartNew(() 
=>
             {
                 var x = AsyncTaskHelper(className, key, value);
                 return x.Result;
             });
         }

         private static Task<IEnumerable<ParseObject>> 
AsyncTaskHelper(string className, string key, string value)
         {
             return Task.Run(async () =>
             {
                 IEnumerable<ParseObject> ParseResults = await 
AccessParseAsync(className, key, value);
                 return ParseResults;
             });
         }

         private static async Task<IEnumerable<ParseObject>> 
AccessParseAsync(string className, string key, string value)
         {
             ParseQuery<ParseObject> query = 
ParseObject.GetQuery(className).WhereEqualTo(key, value);
             IEnumerable<ParseObject> parseResults = await 
query.FindAsync();
             return parseResults;
         }
     }

...

TempLog:

     MSI (c) (0C:BC) [09:24:13:569]: Doing action: LicenseCheckAction
     Action 9:24:13: LicenseCheckAction.
     Action start 9:24:13: LicenseCheckAction.
     MSI (c) (0C:04) [09:24:13:591]: Invoking remote custom action. DLL: 
C:\Users\dirt\AppData\Local\Temp\MSIFF5.tmp, Entrypoint: LicenseCheck
     MSI (c) (0C:F0) [09:24:13:592]: Cloaking enabled.
     MSI (c) (0C:F0) [09:24:13:592]: Attempting to enable all disabled 
privileges before calling Install on Server
     MSI (c) (0C:F0) [09:24:13:592]: Connected to service for CA 
interface.
     MSI (c) (0C!A4) [09:24:16:819]: PROPERTY CHANGE: Adding PIDACCEPTED 
property. Its value is '0'.
     Action ended 9:24:16: LicenseCheckAction. Return value 3.
     DEBUG: Error 2896:  Executing action LicenseCheckAction failed.
     The installer has encountered an unexpected error installing this 
package. This may indicate a problem with this package. The error code 
is 2896. The arguments are: LicenseCheckAction, ,
     Action ended 9:24:16: WelcomeDlg. Return value 3.
     MSI (c) (0C:BC) [09:24:16:873]: Doing action: FatalError
     Action 9:24:16: FatalError.
     Action start 9:24:16: FatalError.
     Action 9:24:16: FatalError. Dialog created
     Action ended 9:32:02: FatalError. Return value 2.
     Action ended 9:32:02: INSTALL. Return value 3.
     MSI (c) (0C:BC) [09:32:02:489]: Destroying RemoteAPI object.
     MSI (c) (0C:F0) [09:32:02:489]: Custom Action Manager thread 
ending.

=====




--
View this message in context: 
http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/WiX-Bootstrapper-CustomAction-Task-Wait-instant-Failure-tp7589448.html
Sent from the wix-users mailing list archive at Nabble.com.
------------------------------------------------------------------------------
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from 
the latest Intel processors and coprocessors. See abstracts and register >
http://pubads.g.doubleclick.net/gampad/clk?id=60134791&iu=/4140/ostg.clktrk
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to