// </summary> //------------------------------------------------------------------------------------------------- #include "precomp.h" // constants #define INITIAL_STRINGDICT_SIZE 48 const LPCWSTR vcszIgnoreDependenciesDelim = L";"; // internal function declarations static HRESULT SplitIgnoreDependencies( __in_z LPCWSTR wzIgnoreDependencies, __deref_inout_ecount_opt(*pcDependencies) DEPENDENCY** prgDependencies, __inout LPUINT pcDependencies ); static HRESULT JoinIgnoreDependencies( __out_z LPWSTR* psczIgnoreDependencies, __in_ecount(cDependencies) const DEPENDENCY* rgDependencies, __in UINT cDependencies ); static HRESULT GetIgnoredDependents( __in const BURN_PACKAGE* pPackage, __in const BURN_PLAN* pPlan, __deref_inout STRINGDICT_HANDLE* psdIgnoredDependents );
// structs struct POSSIBLE_TARGETPRODUCT { WCHAR wzProductCode[39]; LPWSTR pszLocalPackage; MSIINSTALLCONTEXT context; }; // internal function declarations static HRESULT GetPossibleTargetProductCodes( __in BURN_PACKAGES* pPackages, __deref_inout_ecount_opt(*pcPossibleTargetProductCodes) POSSIBLE_TARGETPRODUCT** prgPossibleTargetProductCodes, __inout DWORD* pcPossibleTargetProductCodes ); static HRESULT AddPossibleTargetProduct( __in STRINGDICT_HANDLE sdUniquePossibleTargetProductCodes, __in_z LPCWSTR wzPossibleTargetProductCode, __in MSIINSTALLCONTEXT context, __deref_inout_ecount_opt(*pcPossibleTargetProducts) POSSIBLE_TARGETPRODUCT** prgPossibleTargetProducts, __inout DWORD* pcPossibleTargetProducts ); static HRESULT AddDetectedTargetProduct( __in BURN_PACKAGES* pPackages, __in BURN_PACKAGE* pPackage, __in DWORD dwOrder, __in_z LPCWSTR wzProductCode, __in MSIINSTALLCONTEXT context