|
From: Rob M. <ro...@us...> - 2007-09-21 07:59:14
|
Update of /cvsroot/wix/wix/src/ca/serverca/scasched In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv19110/src/ca/serverca/scasched Modified Files: scacert.cpp scasqlstr.cpp scaweb.cpp Log Message: AaronSte: Creating separate Votive and Sconce DLLs for VS 2005 and VS 2008. Adding the VS 2008 SDK source code that is needed to build the VS 2008 Votive and Sconce dlls. HeathS: SFBUG:1789825 - CreationTimeUTC documents wrong format SFFEATURE:1768845 - Patch element should support MinorUpdateTargetRTM attribute SFFEATURE:1735295 - Patch build should add PATCHNEW* properties to patch transform Added support for ignorables to CompareUnit in WixUnit HeathS: SFBUG:1768842 - PatchProperty does not allow Company RobMen: Ensure RegistryKey element never ends up as KeyPath because MSI SDK says it isn't allowed. RobMen: Component guid generation. RobMen: SFBUG:1795309 - respect the rollback flag for the last SQL string like all the other strings. RobMen: SFBUG:1787888 - correctly handle certificates that are in Components that are conditioned out. RobMen: SFBUG:1675194 - loop through all server bindings when searching for a match. Index: scaweb.cpp =================================================================== RCS file: /cvsroot/wix/wix/src/ca/serverca/scasched/scaweb.cpp,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** scaweb.cpp 27 Jun 2007 05:35:59 -0000 1.11 --- scaweb.cpp 21 Sep 2007 07:58:33 -0000 1.12 *************** *** 625,629 **** // loop through the "web keys" looking for the "IIsWebServer" key that matches wzWeb ! for (dwIndex = 0; SUCCEEDED(hr); dwIndex++) { hr = piMetabase->EnumKeys(METADATA_MASTER_ROOT_HANDLE, L"/LM/W3SVC", wzSubkey, dwIndex); --- 625,629 ---- // loop through the "web keys" looking for the "IIsWebServer" key that matches wzWeb ! for (dwIndex = 0; SUCCEEDED(hr) && !fFound; dwIndex++) { hr = piMetabase->EnumKeys(METADATA_MASTER_ROOT_HANDLE, L"/LM/W3SVC", wzSubkey, dwIndex); *************** *** 645,683 **** hr = MetaGetValue(piMetabase, METADATA_MASTER_ROOT_HANDLE, wzKey, &mrAddress); ! if (MD_ERROR_DATA_NOT_FOUND == hr) { hr = S_FALSE; continue; } - ExitOnFailure(hr, "Failed to get address from metabase while searching for web servers"); // break down the first address into parts ! pwzIPExists = (LPCWSTR)mrAddress.pbMDData; ! pwzExists = const_cast<LPWSTR>(wcsstr(pwzIPExists, L":")); ! *pwzExists = L'\0'; ! pwzPortExists = pwzExists + 1; ! pwzExists = const_cast<LPWSTR>(wcsstr(pwzPortExists, L":")); ! *pwzExists = L'\0'; ! iPortExists = wcstol(pwzPortExists, NULL, 10); ! pwzHeaderExists = pwzExists + 1; ! // compare the passed in address with the address listed for this web ! if (S_OK == hr && ! (0 == lstrcmpW(wzIP, pwzIPExists) || 0 == lstrcmpW(wzIP, L"*")) && ! iPort == iPortExists && ! 0 == lstrcmpW(wzHeader, pwzHeaderExists)) ! { ! // if the passed in buffer wasn't big enough ! if (*pcchWebBase < mr.dwMDDataLen) ! hr = HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER); ! else ! StringCchCopyW(wzWebBase, *pcchWebBase, wzKey); ! *pcchWebBase = mr.dwMDDataLen; ! fFound = TRUE; ! break; } } --- 645,696 ---- hr = MetaGetValue(piMetabase, METADATA_MASTER_ROOT_HANDLE, wzKey, &mrAddress); ! if (MD_ERROR_DATA_NOT_FOUND == hr || NULL == mrAddress.pbMDData) { hr = S_FALSE; continue; } ExitOnFailure(hr, "Failed to get address from metabase while searching for web servers"); // break down the first address into parts ! pwzExists = (LPWSTR)mrAddress.pbMDData; ! while (*pwzExists) ! { ! pwzIPExists = pwzExists; ! pwzExists = const_cast<LPWSTR>(wcsstr(pwzIPExists, L":")); ! ExitOnNull(pwzExists, hr, E_INVALIDARG, "Invalid web address. IP was not separated by a colon."); ! *pwzExists = L'\0'; ! pwzPortExists = pwzExists + 1; ! pwzExists = const_cast<LPWSTR>(wcsstr(pwzPortExists, L":")); ! ExitOnNull(pwzExists, hr, E_INVALIDARG, "Invalid web address. Port was not separated by a colon."); ! *pwzExists = L'\0'; ! iPortExists = wcstol(pwzPortExists, NULL, 10); ! pwzHeaderExists = pwzExists + 1; ! // compare the passed in address with the address listed for this web ! if (S_OK == hr && ! (0 == lstrcmpW(wzIP, pwzIPExists) || 0 == lstrcmpW(wzIP, L"*")) && ! iPort == iPortExists && ! 0 == lstrcmpW(wzHeader, pwzHeaderExists)) ! { ! // if the passed in buffer wasn't big enough ! if (*pcchWebBase < mr.dwMDDataLen) ! { ! hr = HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER); ! } ! else ! { ! StringCchCopyW(wzWebBase, *pcchWebBase, wzKey); ! } ! *pcchWebBase = mr.dwMDDataLen; ! fFound = TRUE; ! break; ! } ! ! // move to the next block of data, this may move beyond the available ! // data and exit the while loop above. ! pwzExists = const_cast<LPWSTR>(pwzHeaderExists + lstrlenW(pwzHeaderExists) + 1); } } Index: scasqlstr.cpp =================================================================== RCS file: /cvsroot/wix/wix/src/ca/serverca/scasched/scasqlstr.cpp,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** scasqlstr.cpp 27 Jun 2007 05:35:59 -0000 1.5 --- scasqlstr.cpp 21 Sep 2007 07:58:33 -0000 1.6 *************** *** 642,646 **** if (psss->iAttributes & SCASQL_ROLLBACK) { ! iRollback= 1; } else --- 642,646 ---- if (psss->iAttributes & SCASQL_ROLLBACK) { ! iRollback = 1; } else *************** *** 727,731 **** { Assert(pwzCustomActionData && *pwzCustomActionData && uiCost); ! hr = WcaDoDeferredAction(L"ExecuteSqlStrings", pwzCustomActionData, uiCost); ExitOnFailure(hr, "Failed to schedule ExecuteSqlStrings action"); --- 727,731 ---- { Assert(pwzCustomActionData && *pwzCustomActionData && uiCost); ! hr = WcaDoDeferredAction(1 == iRollback ? L"RollbackExecuteSqlStrings" : L"ExecuteSqlStrings", pwzCustomActionData, uiCost); ExitOnFailure(hr, "Failed to schedule ExecuteSqlStrings action"); Index: scacert.cpp =================================================================== RCS file: /cvsroot/wix/wix/src/ca/serverca/scasched/scacert.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** scacert.cpp 27 Jun 2007 05:35:59 -0000 1.1 --- scacert.cpp 21 Sep 2007 07:58:33 -0000 1.2 *************** *** 206,211 **** ExitOnFailure1(hr, "failed to get state for component: %S", pwzComponent); ! if ((WcaIsInstalling(isInstalled, isAction) && SCA_ACTION_INSTALL != saAction) || ! (WcaIsUninstalling(isInstalled, isAction) && SCA_ACTION_UNINSTALL != saAction)) { WcaLog(LOGMSG_VERBOSE, "Skipping non-action certificate: %S", pwzId); --- 206,211 ---- ExitOnFailure1(hr, "failed to get state for component: %S", pwzComponent); ! if (!(WcaIsInstalling(isInstalled, isAction) && SCA_ACTION_INSTALL == saAction) && ! !(WcaIsUninstalling(isInstalled, isAction) && SCA_ACTION_UNINSTALL == saAction)) { WcaLog(LOGMSG_VERBOSE, "Skipping non-action certificate: %S", pwzId); |