This change comes from investigating the .NET 4.5.2 on Win7 RTM problem.  In that case, hInstApp was SE_ERR_ACCESSDENIED but ::GetLastError() was ERROR_PROC_NOT_FOUND.  The engine then translated the E_ACCESSDENIED into ERROR_INSTALL_USEREXIT.  I don't think the engine should return ERROR_INSTALL_USEREXIT unless the user actually canceled (or let the elevation prompt timeout).