Finally got the linker errors resolved.  I run my msi, and if I leave 
the name or email blank, instead of an error, the installer just quits.  
Here's the CA:

UINT __stdcall VerifyUserInformation(__in MSIHANDLE hInstall)
{
     wchar_t *filePath = L"C:\\Log.txt";
     log(filePath, L"Inside VerifyUserInformation(__in MSIHANDLE 
hInstall)");
     LPWSTR userName = NULL;
     LPWSTR email = NULL;
     HRESULT hr = S_OK;
     UINT er = ERROR_SUCCESS;

     hr = WcaInitialize(hInstall, "VerifyUserInformation");
     ExitOnFailure(hr, "Failed to Initialize");

     log(filePath, L"After initialize");

     hr = WcaSetProperty(L"UserInfoError", L"");
     ExitOnFailure(hr, "Failed to initialize UserInfoError");

     log(filePath, L"After set property");

     if (WcaIsPropertySet("UNAME"))
     {
         log(filePath, L"Inside (WcaIsPropertySet('UNAME')");
         hr = WcaGetProperty(L"UNAME", &userName);
         log(filePath, userName);
         ExitOnFailure(hr, "Failed to get UNAME.");
         WcaLog(LOGMSG_VERBOSE, "UNAME is %ls.", userName);
     }

     if (WcaIsPropertySet("EMAIL"))
     {
         log(filePath, L"Inside (WcaIsPropertySet('EMAIL')");
         hr = WcaGetProperty(L"EMAIL", &email);
         log(filePath, email);
         ExitOnFailure(hr, "Failed to get EMAIL.");
         WcaLog(LOGMSG_VERBOSE, "EMAIL is %ls.", email);
     }

     if(wcslen(userName) == 0)
     {
         log(filePath, L"Inside (wcslen(userName) == 0)");
         hr = WcaSetProperty(L"UserInfoError", L"Please enter your name.");
         WcaLog(LOGMSG_VERBOSE, "Please enter your name.");
     }
     else if(wcslen(email) == 0)
     {
         log(filePath, L"Inside (wcslen(email) == 0)");
         hr = WcaSetProperty(L"UserInfoError", L"Please enter your email 
address.");
         WcaLog(LOGMSG_VERBOSE, "Please enter your email address.");
     }

     log(filePath, L"After all the if statements");

LExit:
        /* ReleaseStr(userName);
         ReleaseStr(email); */
     if (FAILED(hr))
     {
         er = ERROR_INSTALL_FAILURE;
     }
     return WcaFinalize(er);
}

Here's the xml with the call to the CA:

<CustomAction Id="verifyUserInformation" BinaryKey="installerDLL" 
DllEntry="VerifyUserInformation" Execute="immediate" 
Return="check"></CustomAction>
<Publish Event="DoAction" Value="verifyUserInformation" 
Order="1">1</Publish>
<Publish Event="SpawnDialog" Order="2" Value="ConfigDlg"><![CDATA[ 
UserInfoError ]]></Publish>
<Publish Event="NewDialog" Order="3" Value="PassDlg"><![CDATA[ NOT 
UserInfoError ]]></Publish>

I added some logs (as you can see) to see what was going on.  I get the 
log "After Set Property", and that's it.  Nothing else after that.  Not 
even one for "After all the if statements".

------------------------------------------------------------------------------
All the data continuously generated in your IT infrastructure 
contains a definitive record of customers, application performance, 
security threats, fraudulent activity, and more. Splunk takes this 
data and makes sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-novd2d
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to