Hi all, I am trying to detect whether a user cancels within a custom action by doing
the following UINT __stdcall CA() { int retVal = 0; PMSIHANDLE hRecord = MsiCreateRecord(1); ... SomeLongOperation(); // trigger cancellation while this function is running MsiRecordSetString(hRecord, 0, L"[1]"); MsiRecordSetString(hRecord, 1, L"Some Message"); retVal = MsiProcessMessage(hInstall, INSTALLMESSAGE_INFO, hRecord); if(retVal == IDCANCEL) { MsiLogWrapper(L"User cancellation is detected!"); return ERROR_USER_EXIT; } else { MsiLogWrapper(L"MsiProcessMessage() returned %d", retVal); } ... } The problem is that the value returned by MsiProcessMessage() is always 0. And I've confirmed that the installation was cancelled during the SomeLongOperation() was running,and the string L"Some Message" is properly logged. What is wrong in this case? am I missing anything? The CA is scheduled to be a deferred and no-impersonate action. I wanted to detect it so that I could return ERROR_USER_EXIT from the CA. ------------------------------------------------------------------------------ Enter the BlackBerry Developer Challenge This is your chance to win up to $100,000 in prizes! For a limited time, vendors submitting new applications to BlackBerry App World(TM) will have the opportunity to enter the BlackBerry Developer Challenge. See full prize details at: http://p.sf.net/sfu/blackberry _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users