#define RETURN_ON_ERROR(x,h,s) \
if
(ERROR_SUCCESS != x) { \
SimpleLogString1(h,s); \
return
x; \
}
#define RETURN_ON_ERROR_FREE(x,y,h,s) \
if
(ERROR_SUCCESS != x) { \
SimpleLogString1(h,s); \
free
(y); \
return
x; \
}
#define RETURN_ON_ERROR_FREE2(x,y,z,h,s) \
if
(ERROR_SUCCESS != x) { \
SimpleLogString1(h,s); \
free
(y); \
free
(z); \
return
x; \
}
#define RETURN_IF_NULL(x,h,s) \
if
(NULL == x) { \
SimpleLogString1(h,s); \
return
ERROR_INSTALL_FAILURE; \
}
#ifdef _DEBUG
#define LOG_DEBUG_DETAILS_IF_NULL(x,h) \
if
(NULL == x) { \
PrintUINT(h,x); \
PrintLastErrorDetails(h); \
}
#define LOG_DEBUG_DETAILS_ON_ERROR(x,h) \
if
(ERROR_SUCCESS != x) { \
PrintUINT(h,x); \
PrintLastErrorDetails(h); \
}
#else
#define LOG_DEBUG_DETAILS_IF_NULL(x,h)
#define LOG_DEBUG_DETAILS_ON_ERROR(x,h)
#endif
extern
void
SimpleLogString1(MSIHANDLE hModule,
LPCTSTR
s);
extern
void
SimpleLogString2(MSIHANDLE hModule,
LPCTSTR
s,
LPCTSTR
t);
extern
void
SimpleLogString3(MSIHANDLE hModule,
LPCTSTR
s,
LPCTSTR
t,
LPCTSTR
u);
extern
void
SimpleLogString4(MSIHANDLE hModule,
LPCTSTR
s,
LPCTSTR
t,
LPCTSTR
u,
LPCTSTR
v);
extern
void
PrintLastErrorDetails(MSIHANDLE hModule);
extern
void
PrintUINT(MSIHANDLE hModule,
UINT
i);