41#define REG_INDEX_CLASSES_ROOT 0
42#define REG_INDEX_DYN_DATA 6
100 ERR(
"Could not load msiserver.tlb\n");
106 ITypeLib_Release(lib);
120 ITypeInfo_Release(ti);
217 IDispatch_AddRef(iface);
254 TRACE(
"(%p/%p)->(%p)\n", iface,
This, pctinfo);
268 TRACE(
"(%p/%p)->(%u, %ld, %p)\n", iface,
This, iTInfo, lcid, ppTInfo );
274 ITypeInfo_AddRef(*ppTInfo);
290 TRACE(
"(%p/%p)->(%s, %p, %u, %ld, %p)\n", iface,
This,
299 hr = ITypeInfo_GetIDsOfNames(ti, rgszNames, cNames, rgDispId);
305 if (rgDispId[
idx] == DISPID_UNKNOWN)
313#define MAX_FUNC_PARAMS 20
322 DISPPARAMS* pDispParams,
324 EXCEPINFO* pExcepInfo,
329 unsigned int uArgErr;
334 TRACE(
"(%p/%p)->(%ld, %s, %ld, %d, %p, %p, %p, %p)\n", iface,
This,
336 pDispParams, pVarResult, pExcepInfo, puArgErr);
346 ERR(
"NULL pVarResult not allowed when DISPATCH_PROPERTYGET specified\n");
351 if (puArgErr ==
NULL) puArgErr = &uArgErr;
352 if (pVarResult ==
NULL) pVarResult = &varResultDummy;
364 ITypeInfo_GetDocumentation(ti, dispIdMember, &bstrName,
NULL,
NULL,
NULL);
371 if (bstrName ==
NULL) ITypeInfo_GetDocumentation(ti, dispIdMember, &bstrName,
NULL,
NULL,
NULL);
372 FIXME(
"method %ld, %s wflags %d not implemented, clsid %s\n", dispIdMember,
debugstr_w(bstrName),
wFlags,
375 else if (pExcepInfo &&
383 if (
FAILED(ITypeInfo_GetNames(ti, dispIdMember, bstrParamNames,
386 TRACE(
"failed to retrieve names for dispIdMember %ld\n", dispIdMember);
390 memset(szExceptionDescription, 0,
sizeof(szExceptionDescription));
391 for (
i=0;
i<namesNo;
i++)
393 if (bFirst) bFirst =
FALSE;
397 lstrcpyW(&szExceptionDescription[
lstrlenW(szExceptionDescription)], bstrParamNames[
i]);
401 memset(pExcepInfo, 0,
sizeof(EXCEPINFO));
402 pExcepInfo->wCode = 1000;
404 pExcepInfo->bstrDescription =
SysAllocString(szExceptionDescription);
410 if (pVarResult == &varResultDummy)
VariantClear(pVarResult);
441 return IDispatch_QueryInterface(&
This->IDispatch_iface,
riid, ppvoid);
447 return IDispatch_AddRef(&
This->IDispatch_iface);
453 return IDispatch_Release(&
This->IDispatch_iface);
461 TRACE(
"(%p/%p)->(%p)\n", iface,
This, ppTI);
465 ITypeInfo_AddRef(*ppTI);
475 if (dwGuidKind != GUIDKIND_DEFAULT_SOURCE_DISP_IID)
487 TRACE(
"(%p/%p)->(%p)\n", iface,
This, pcti);
497 ULONG* pcdispidReserved,
503 TRACE(
"(%p/%p)->(%lu, %#lx, %p, %p, %p, %p, %p)\n", iface,
This, iti,
dwFlags, ti, pdwTIFlags, pcdispidReserved,
504 piidPrimary, piidSource);
509 if (
dwFlags & MULTICLASSINFO_GETTYPEINFO)
515 ITypeInfo_AddRef(*ti);
518 if (
dwFlags & MULTICLASSINFO_GETNUMRESERVEDDISPIDS)
521 *pcdispidReserved = 0;
524 if (
dwFlags & MULTICLASSINFO_GETIIDPRIMARY)
527 if (
dwFlags & MULTICLASSINFO_GETIIDSOURCE)
551 This->msiHandle = msiHandle;
587 IEnumVARIANT_AddRef(iface);
609 if (
This->list) IDispatch_Release(&
This->list->autoobj.IDispatch_iface);
622 TRACE(
"%p, %lu, %p, %p\n", iface, celt, rgVar, fetched);
624 if (fetched) *fetched = 0;
635 if (fetched) *fetched =
local;
645 TRACE(
"%p, %lu\n", iface, celt);
661 TRACE(
"(%p)\n", iface);
672 TRACE(
"(%p,%p)\n", iface, ppEnum);
681 if (*ppEnum) IEnumVARIANT_Release(*ppEnum);
715 if (
list) IDispatch_AddRef(&
list->autoobj.IDispatch_iface);
729 DISPPARAMS *pdispparams,
736 TRACE(
"position=%d, cArgs=%d, cNamedArgs=%d\n",
737 *position, pdispparams->cArgs, pdispparams->cNamedArgs);
738 if (*position < pdispparams->cArgs) {
740 pos = pdispparams->cArgs - *position - 1;
743 for (
pos=0;
pos<pdispparams->cNamedArgs;
pos++)
744 if (pdispparams->rgdispidNamedArgs[
pos] == *position)
break;
746 if (
pos==pdispparams->cNamedArgs)
751 &pdispparams->rgvarg[
pos]);
760 DISPPARAMS* pDispParams,
762 EXCEPINFO* pExcepInfo,
774 switch (dispIdMember)
794 ERR(
"MsiSummaryInfoGetProperty returned %d\n",
ret);
811 ERR(
"Out of memory\n");
814 ERR(
"MsiSummaryInfoGetProperty returned %d\n",
ret);
833 ERR(
"Unhandled variant type %d\n",
type);
838 UINT posValue = DISPID_PROPERTYPUT;
845 *puArgErr = posValue;
849 switch (
V_VT(&varg1))
868 FIXME(
"Unhandled variant type %d\n",
V_VT(&varg1));
875 ERR(
"MsiSummaryInfoSetPropertyW returned %d\n",
ret);
886 ERR(
"MsiSummaryInfoGetPropertyCount returned %d\n",
ret);
912 DISPPARAMS* pDispParams,
914 EXCEPINFO* pExcepInfo,
926 switch (dispIdMember)
945 ERR(
"Out of memory\n");
951 ERR(
"MsiRecordGetString returned %d\n",
ret);
960 ERR(
"MsiRecordSetString returned %d\n",
ret);
980 ERR(
"MsiRecordSetInteger returned %d\n",
ret);
1006 *disp = &
record->IDispatch_iface;
1017 DISPPARAMS* pDispParams,
1019 EXCEPINFO* pExcepInfo,
1026 switch (dispIdMember)
1034 ERR(
"failed to create IEnumVARIANT object, hresult %#lx\n",
hr);
1073 for (
i = 0;
i <
list->count;
i++)
1133 for (
i = 0;
i <
list->count;
i++)
1159 DISPPARAMS* pDispParams,
1161 EXCEPINFO* pExcepInfo,
1172 switch (dispIdMember)
1193 ERR(
"failed to create Record object, hresult %#lx\n",
hr);
1199 ERR(
"MsiViewFetch returned %d\n",
ret);
1217 ERR(
"MsiViewModify returned %d\n",
ret);
1243 DISPPARAMS* pDispParams,
1245 EXCEPINFO* pExcepInfo,
1263 DISPPARAMS* pDispParams,
1265 EXCEPINFO* pExcepInfo,
1277 switch (dispIdMember)
1293 ERR(
"failed to create SummaryInfo object: %#lx\n",
hr);
1297 ERR(
"MsiGetSummaryInformation returned %d\n",
ret);
1315 ERR(
"failed to create View object, hresult %#lx\n",
hr);
1320 ERR(
"MsiDatabaseOpenView returned %d\n",
ret);
1329 pVarResult, pExcepInfo,
1348 DISPPARAMS* pDispParams,
1350 EXCEPINFO* pExcepInfo,
1366 switch (dispIdMember)
1371 IDispatch_AddRef(
session->installer);
1386 ERR(
"Out of memory\n");
1392 ERR(
"MsiGetProperty returned %d\n",
ret);
1405 ERR(
"MsiSetProperty returned %d\n",
ret);
1416 V_I4(pVarResult) = langId;
1434 ERR(
"MsiSetMode returned %d\n",
ret);
1451 ERR(
"failed to create Database object, hresult %#lx\n",
hr);
1455 ERR(
"MsiGetActiveDatabase failed\n");
1471 V_I4(pVarResult) = msiDoActionStatusNoAction;
1474 V_I4(pVarResult) = msiDoActionStatusSuccess;
1477 V_I4(pVarResult) = msiDoActionStatusUserExit;
1480 V_I4(pVarResult) = msiDoActionStatusFailure;
1483 V_I4(pVarResult) = msiDoActionStatusSuspend;
1486 V_I4(pVarResult) = msiDoActionStatusFinished;
1489 V_I4(pVarResult) = msiDoActionStatusWrongState;
1492 V_I4(pVarResult) = msiDoActionStatusBadActionData;
1496 FIXME(
"MsiDoAction returned unhandled value %d\n",
ret);
1533 ERR(
"MsiSetInstallLevel returned %d\n",
ret);
1546 V_I4(pVarResult) = iInstalled;
1549 ERR(
"MsiGetFeatureState returned %d\n",
ret);
1550 V_I4(pVarResult) = msiInstallStateUnknown;
1562 V_I4(pVarResult) = iAction;
1565 ERR(
"MsiGetFeatureState returned %d\n",
ret);
1566 V_I4(pVarResult) = msiInstallStateUnknown;
1579 ERR(
"MsiSetFeatureState returned %d\n",
ret);
1602 DWORD dwNewSize = 0;
1610 while (
idx >= 0 && !szString[
idx])
idx--;
1612 if (!szString[
idx]) szString[
idx] =
'\n';
1623 ERR(
"Out of memory\n");
1654 FIXME(
"Unhandled registry value type %lu\n", dwType);
1659 DISPPARAMS* pDispParams,
1661 EXCEPINFO* pExcepInfo,
1687 DISPPARAMS* pDispParams,
1689 EXCEPINFO* pExcepInfo,
1701 if (pDispParams->cArgs == 0)
1704 if (
V_VT(&pDispParams->rgvarg[pDispParams->cArgs - 1]) !=
VT_BSTR)
1713 if (pDispParams->cArgs == 2)
1745 DISPPARAMS* pDispParams,
1747 EXCEPINFO* pExcepInfo,
1770 DISPPARAMS* pDispParams,
1772 EXCEPINFO* pExcepInfo,
1814 DISPPARAMS* pDispParams,
1816 EXCEPINFO* pExcepInfo,
1853 DISPPARAMS* pDispParams,
1855 EXCEPINFO* pExcepInfo,
1890 DISPPARAMS* pDispParams,
1892 EXCEPINFO* pExcepInfo,
1905 DISPPARAMS* pDispParams,
1907 EXCEPINFO* pExcepInfo,
1942 EXCEPINFO* pExcepInfo,
1966 DISPPARAMS* pDispParams,
1968 EXCEPINFO* pExcepInfo,
1981 DISPPARAMS* pDispParams,
1983 EXCEPINFO* pExcepInfo,
2032 switch (
V_VT(&varg2))
2077 *puArgErr = posValue;
2086 else if (
V_I4(&varg2) > 0)
2106 else if (
V_I4(&varg2) > 0)
2130 DISPPARAMS* pDispParams,
2132 EXCEPINFO* pExcepInfo,
2145 DISPPARAMS* pDispParams,
2147 EXCEPINFO* pExcepInfo,
2160 DISPPARAMS* pDispParams,
2162 EXCEPINFO* pExcepInfo,
2175 DISPPARAMS* pDispParams,
2177 EXCEPINFO* pExcepInfo,
2190 DISPPARAMS* pDispParams,
2192 EXCEPINFO* pExcepInfo,
2214 DISPPARAMS* pDispParams,
2216 EXCEPINFO* pExcepInfo,
2273 DISPPARAMS* pDispParams,
2275 EXCEPINFO* pExcepInfo,
2295 DISPPARAMS* pDispParams,
2297 EXCEPINFO* pExcepInfo,
2327 DISPPARAMS* pDispParams,
2329 EXCEPINFO* pExcepInfo,
2332 switch (dispIdMember)
2336 pVarResult, pExcepInfo, puArgErr);
2340 pVarResult, pExcepInfo, puArgErr);
2344 pVarResult, pExcepInfo, puArgErr);
2348 pVarResult, pExcepInfo, puArgErr);
2352 pVarResult, pExcepInfo,
2357 pVarResult, pExcepInfo, puArgErr);
2361 pVarResult, pExcepInfo, puArgErr);
2365 pVarResult, pExcepInfo,
2370 pExcepInfo, puArgErr);
2374 pVarResult, pExcepInfo,
2379 pVarResult, pExcepInfo,
2384 pVarResult, pExcepInfo, puArgErr);
2388 pVarResult, pExcepInfo,
2393 pVarResult, pExcepInfo, puArgErr);
2397 pVarResult, pExcepInfo, puArgErr);
2401 pVarResult, pExcepInfo, puArgErr);
2405 pVarResult, pExcepInfo, puArgErr);
2409 pVarResult, pExcepInfo, puArgErr);
2413 pVarResult, pExcepInfo,
2425 TRACE(
"(%p %p)\n", outer, ppObj);
2449 session->installer = installer;
2450 *disp = &
session->autoobj.IDispatch_iface;
2496 *disp = &
info->IDispatch_iface;
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
void dispatch(HANDLE hStopEvent)
#define RegCloseKey(hKey)
STDAPI DllGetVersion(DLLVERSIONINFO *info)
static const WCHAR szEmpty[]
LONG WINAPI RegOpenKeyW(HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult)
LONG WINAPI RegEnumValueW(_In_ HKEY hKey, _In_ DWORD index, _Out_ LPWSTR value, _Inout_ PDWORD val_count, _Reserved_ PDWORD reserved, _Out_opt_ PDWORD type, _Out_opt_ LPBYTE data, _Inout_opt_ PDWORD count)
LONG WINAPI RegQueryInfoKeyW(HKEY hKey, LPWSTR lpClass, LPDWORD lpcClass, LPDWORD lpReserved, LPDWORD lpcSubKeys, LPDWORD lpcMaxSubKeyLen, LPDWORD lpcMaxClassLen, LPDWORD lpcValues, LPDWORD lpcMaxValueNameLen, LPDWORD lpcMaxValueLen, LPDWORD lpcbSecurityDescriptor, PFILETIME lpftLastWriteTime)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
LONG WINAPI RegEnumKeyW(HKEY hKey, DWORD dwIndex, LPWSTR lpName, DWORD cbName)
#define ERROR_NO_MORE_ITEMS
static const WCHAR version[]
DWORD WINAPI ExpandEnvironmentStringsW(IN LPCWSTR lpSrc, IN LPWSTR lpDst, IN DWORD nSize)
BOOL WINAPI FileTimeToSystemTime(IN CONST FILETIME *lpFileTime, OUT LPSYSTEMTIME lpSystemTime)
BOOL WINAPI SystemTimeToFileTime(IN CONST SYSTEMTIME *lpSystemTime, OUT LPFILETIME lpFileTime)
BOOL WINAPI FileTimeToLocalFileTime(IN CONST FILETIME *lpFileTime, OUT LPFILETIME lpLocalFileTime)
BOOL WINAPI LocalFileTimeToFileTime(IN CONST FILETIME *lpLocalFileTime, OUT LPFILETIME lpFileTime)
static HRESULT create_list(const WCHAR *product, IDispatch **dispatch)
static HRESULT summaryinfo_invoke(AutomationObject *, DISPID, REFIID, LCID, WORD, DISPPARAMS *, VARIANT *, EXCEPINFO *, UINT *)
static HRESULT WINAPI AutomationObject_GetIDsOfNames(IDispatch *iface, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
static HRESULT WINAPI ProvideMultipleClassInfo_GetGUID(IProvideMultipleClassInfo *iface, DWORD dwGuidKind, GUID *pGUID)
static HRESULT DispGetParam_CopyOnly(DISPPARAMS *pdispparams, UINT *position, VARIANT *pvarResult)
static const struct IDispatchVtbl AutomationObjectVtbl
static HRESULT InstallerImpl_SummaryInformation(WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
static tid_id_t tid_ids[]
static HRESULT InstallerImpl_Products(WORD flags, DISPPARAMS *pDispParams, VARIANT *result, EXCEPINFO *pExcepInfo, UINT *puArgErr)
static HRESULT InstallerImpl_FileSize(WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
#define REG_INDEX_CLASSES_ROOT
static void variant_from_registry_value(VARIANT *pVarResult, DWORD dwType, LPBYTE lpData, DWORD dwSize)
static void list_free(AutomationObject *)
static HRESULT database_invoke(AutomationObject *, DISPID, REFIID, LCID, WORD, DISPPARAMS *, VARIANT *, EXCEPINFO *, UINT *)
static HRESULT InstallerImpl_ProductState(WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
static HRESULT WINAPI AutomationObject_GetTypeInfo(IDispatch *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
HRESULT create_session(MSIHANDLE msiHandle, IDispatch *installer, IDispatch **disp)
static ITypeLib * typelib
static HRESULT WINAPI ListEnumerator_Next(IEnumVARIANT *iface, ULONG celt, VARIANT *rgVar, ULONG *fetched)
static HRESULT WINAPI ProvideMultipleClassInfo_QueryInterface(IProvideMultipleClassInfo *iface, REFIID riid, VOID **ppvoid)
static ULONG WINAPI ProvideMultipleClassInfo_Release(IProvideMultipleClassInfo *iface)
static HRESULT WINAPI ListEnumerator_Clone(IEnumVARIANT *iface, IEnumVARIANT **ppEnum)
HRESULT get_typeinfo(tid_t tid, ITypeInfo **typeinfo)
static HRESULT session_invoke(AutomationObject *, DISPID, REFIID, LCID, WORD, DISPPARAMS *, VARIANT *, EXCEPINFO *, UINT *)
static HRESULT InstallerImpl_OpenProduct(WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
static AutomationObject * impl_from_IProvideMultipleClassInfo(IProvideMultipleClassInfo *iface)
static const struct IEnumVARIANTVtbl ListEnumerator_Vtbl
void(* auto_free_func)(AutomationObject *This)
static HRESULT create_record(MSIHANDLE msiHandle, IDispatch **disp)
static const IProvideMultipleClassInfoVtbl ProvideMultipleClassInfoVtbl
static AutomationObject * impl_from_IDispatch(IDispatch *iface)
static HRESULT WINAPI ListEnumerator_QueryInterface(IEnumVARIANT *iface, REFIID riid, void **ppvObject)
static HRESULT InstallerImpl_UILevel(WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
static HRESULT view_invoke(AutomationObject *, DISPID, REFIID, LCID, WORD, DISPPARAMS *, VARIANT *, EXCEPINFO *, UINT *)
static HRESULT WINAPI ProvideMultipleClassInfo_GetClassInfo(IProvideMultipleClassInfo *iface, ITypeInfo **ppTI)
static HRESULT InstallerImpl_InstallProduct(WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
static HRESULT InstallerImpl_RegistryValue(WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
static HRESULT WINAPI ListEnumerator_Reset(IEnumVARIANT *iface)
static HRESULT create_view(MSIHANDLE, IDispatch **)
static HRESULT record_invoke(AutomationObject *, DISPID, REFIID, LCID, WORD, DISPPARAMS *, VARIANT *, EXCEPINFO *, UINT *)
static HRESULT InstallerImpl_RelatedProducts(WORD flags, DISPPARAMS *pDispParams, VARIANT *result, EXCEPINFO *pExcepInfo, UINT *puArgErr)
static ULONG WINAPI ProvideMultipleClassInfo_AddRef(IProvideMultipleClassInfo *iface)
static HRESULT WINAPI ListEnumerator_Skip(IEnumVARIANT *iface, ULONG celt)
static ULONG WINAPI ListEnumerator_AddRef(IEnumVARIANT *iface)
void release_typelib(void)
static HRESULT InstallerImpl_LastErrorRecord(WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
static HRESULT InstallerImpl_CreateRecord(WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
static HRESULT WINAPI AutomationObject_QueryInterface(IDispatch *iface, REFIID riid, void **ppvObject)
static HRESULT InstallerImpl_EnableLog(WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
static const IID * get_riid_from_tid(tid_t tid)
static HRESULT InstallerImpl_FileVersion(WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
static HRESULT WINAPI ProvideMultipleClassInfo_GetInfoOfIndex(IProvideMultipleClassInfo *iface, ULONG iti, DWORD dwFlags, ITypeInfo **ti, DWORD *pdwTIFlags, ULONG *pcdispidReserved, IID *piidPrimary, IID *piidSource)
static HRESULT get_products_count(const WCHAR *product, int *len)
static HRESULT WINAPI AutomationObject_Invoke(IDispatch *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
static HRESULT installer_invoke(AutomationObject *, DISPID, REFIID, LCID, WORD, DISPPARAMS *, VARIANT *, EXCEPINFO *, UINT *)
HRESULT create_msiserver(IUnknown *outer, void **ppObj)
HRESULT(* auto_invoke_func)(AutomationObject *This, DISPID dispIdMember, REFIID riid, LCID lcid, WORD flags, DISPPARAMS *pDispParams, VARIANT *result, EXCEPINFO *ei, UINT *arg_err)
static void init_automation_object(AutomationObject *This, MSIHANDLE msiHandle, tid_t tid)
static ULONG WINAPI AutomationObject_AddRef(IDispatch *iface)
static ULONG WINAPI ListEnumerator_Release(IEnumVARIANT *iface)
static HRESULT InstallerImpl_ProductInfo(WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
static ULONG WINAPI AutomationObject_Release(IDispatch *iface)
static HRESULT DatabaseImpl_LastErrorRecord(WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
static HRESULT WINAPI AutomationObject_GetTypeInfoCount(IDispatch *iface, UINT *pctinfo)
static HRESULT WINAPI ProvideMultipleClassInfo_GetMultiTypeInfoCount(IProvideMultipleClassInfo *iface, ULONG *pcti)
static HRESULT InstallerImpl_FileAttributes(WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
#define REG_INDEX_DYN_DATA
static HRESULT InstallerImpl_Environment(WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
static HRESULT list_invoke(AutomationObject *, DISPID, REFIID, LCID, WORD, DISPPARAMS *, VARIANT *, EXCEPINFO *, UINT *)
static HRESULT InstallerImpl_OpenDatabase(WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
static HRESULT create_list_enumerator(ListObject *, void **)
static HRESULT InstallerImpl_Version(WORD wFlags, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
static ITypeInfo * typeinfos[LAST_tid]
static ListEnumerator * impl_from_IEnumVARIANT(IEnumVARIANT *iface)
static HRESULT InstallerImpl_OpenPackage(AutomationObject *This, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
static HRESULT create_summaryinfo(MSIHANDLE, IDispatch **)
UINT WINAPI MsiOpenDatabaseW(LPCWSTR szDBPath, LPCWSTR szPersist, MSIHANDLE *phDB)
UINT WINAPI MsiCloseHandle(MSIHANDLE handle)
UINT WINAPI MsiDoActionW(MSIHANDLE hInstall, LPCWSTR szAction)
LANGID WINAPI MsiGetLanguage(MSIHANDLE hInstall)
UINT WINAPI MsiSetInstallLevel(MSIHANDLE hInstall, int iInstallLevel)
UINT WINAPI MsiSetFeatureStateW(MSIHANDLE hInstall, LPCWSTR szFeature, INSTALLSTATE iState)
UINT WINAPI MsiGetFeatureStateW(MSIHANDLE hInstall, const WCHAR *szFeature, INSTALLSTATE *piInstalled, INSTALLSTATE *piAction)
UINT WINAPI MsiSetMode(MSIHANDLE hInstall, MSIRUNMODE iRunMode, BOOL fState)
BOOL WINAPI MsiGetMode(MSIHANDLE hInstall, MSIRUNMODE iRunMode)
UINT WINAPI MsiInstallProductW(LPCWSTR szPackagePath, LPCWSTR szCommandLine)
UINT WINAPI MsiGetProductInfoW(LPCWSTR szProduct, LPCWSTR szAttribute, LPWSTR szBuffer, LPDWORD pcchValueBuf)
INSTALLUILEVEL WINAPI MsiSetInternalUI(INSTALLUILEVEL dwUILevel, HWND *phWnd)
INSTALLSTATE WINAPI MsiQueryProductStateW(LPCWSTR szProduct)
MSIHANDLE WINAPI MsiGetActiveDatabase(MSIHANDLE hInstall)
UINT WINAPI MsiGetPropertyW(MSIHANDLE hinst, const WCHAR *name, WCHAR *buf, DWORD *sz)
UINT WINAPI MsiOpenPackageExW(const WCHAR *szPackage, DWORD dwOptions, MSIHANDLE *phPackage)
UINT WINAPI MsiSetPropertyW(MSIHANDLE hInstall, LPCWSTR szName, LPCWSTR szValue)
INT WINAPI MsiProcessMessage(MSIHANDLE hInstall, INSTALLMESSAGE eMessageType, MSIHANDLE hRecord)
UINT WINAPI MsiRecordSetStringW(MSIHANDLE handle, UINT iField, const WCHAR *szValue)
int WINAPI MsiRecordGetInteger(MSIHANDLE handle, UINT iField)
MSIHANDLE WINAPI MsiCreateRecord(UINT cParams)
UINT WINAPI MsiRecordGetStringW(MSIHANDLE handle, UINT iField, WCHAR *szValue, DWORD *pcchValue)
UINT WINAPI MsiRecordSetInteger(MSIHANDLE handle, UINT iField, int iVal)
UINT WINAPI MsiRecordGetFieldCount(MSIHANDLE handle)
UINT WINAPI MsiEnumProductsW(DWORD index, WCHAR *lpguid)
UINT WINAPI MsiEnumRelatedProductsW(const WCHAR *szUpgradeCode, DWORD dwReserved, DWORD iProductIndex, WCHAR *lpProductBuf)
UINT WINAPI MsiGetSummaryInformationW(MSIHANDLE hDatabase, const WCHAR *szDatabase, UINT uiUpdateCount, MSIHANDLE *pHandle)
UINT WINAPI MsiSummaryInfoGetPropertyW(MSIHANDLE handle, UINT uiProperty, UINT *puiDataType, INT *piValue, FILETIME *pftValue, WCHAR *szValueBuf, DWORD *pcchValueBuf)
UINT WINAPI MsiSummaryInfoGetPropertyCount(MSIHANDLE hSummaryInfo, UINT *pCount)
UINT WINAPI MsiSummaryInfoSetPropertyW(MSIHANDLE handle, UINT uiProperty, UINT uiDataType, INT iValue, FILETIME *pftValue, const WCHAR *szValue)
HRESULT WINAPI DispGetParam(DISPPARAMS *pdispparams, UINT position, VARTYPE vtTarg, VARIANT *pvarResult, UINT *puArgErr)
HRESULT WINAPI LoadRegTypeLib(REFGUID rguid, WORD wVerMajor, WORD wVerMinor, LCID lcid, ITypeLib **ppTLib)
HRESULT WINAPI LoadTypeLib(const OLECHAR *szFile, ITypeLib **pptLib)
static void *static void *static LPDIRECTPLAY IUnknown * pUnk
GLuint GLuint GLsizei GLenum type
GLuint GLuint GLsizei count
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define InterlockedCompareExchangePointer
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
#define create_database(name, tables, num_tables)
static VARIANTARG static DISPID
enum tagINSTALLUILEVEL INSTALLUILEVEL
@ INSTALLUILEVEL_NOCHANGE
static void * msi_alloc_zero(size_t len) __WINE_ALLOC_SIZE(1)
static void msi_free(void *mem)
static void * msi_alloc(size_t len) __WINE_ALLOC_SIZE(1)
UINT WINAPI MsiViewModify(MSIHANDLE hView, MSIMODIFY eModifyMode, MSIHANDLE hRecord)
UINT WINAPI MsiViewClose(MSIHANDLE hView)
UINT WINAPI MsiViewExecute(MSIHANDLE hView, MSIHANDLE hRec)
UINT WINAPI MsiDatabaseOpenViewW(MSIHANDLE hdb, LPCWSTR szQuery, MSIHANDLE *phView)
UINT WINAPI MsiViewFetch(MSIHANDLE hView, MSIHANDLE *record)
MSICONDITION WINAPI MsiEvaluateConditionW(MSIHANDLE, LPCWSTR)
#define DISPID_VIEW_CLOSE
#define DISPID_RECORD_INTEGERDATA
#define DISPID_LIST_COUNT
#define DISPID_INSTALLER_UILEVEL
#define DISPID_SESSION_DOACTION
#define DISPID_INSTALLER_LASTERRORRECORD
#define DISPID_INSTALLER_FILEVERSION
#define DISPID_SESSION_DATABASE
#define DISPID_DATABASE_OPENVIEW
#define DISPID_INSTALLER_OPENPRODUCT
#define DISPID_INSTALLER_VERSION
#define DISPID_SESSION_FEATURECURRENTSTATE
#define DISPID_INSTALLER_RELATEDPRODUCTS
#define DISPID_SESSION_PROPERTY
#define DISPID_RECORD_STRINGDATA
#define DISPID_RECORD_FIELDCOUNT
#define DISPID_VIEW_MODIFY
#define DISPID_SESSION_INSTALLER
#define DISPID_INSTALLER_PRODUCTINFO
#define DISPID_INSTALLER_PRODUCTS
#define DISPID_INSTALLER_REGISTRYVALUE
#define DISPID_SESSION_SETINSTALLLEVEL
#define DISPID_VIEW_EXECUTE
#define DISPID_INSTALLER_FILEATTRIBUTES
#define DISPID_VIEW_FETCH
#define DISPID_LIST__NEWENUM
#define DISPID_INSTALLER_ENABLELOG
#define DISPID_DATABASE_SUMMARYINFORMATION
#define DISPID_SUMMARYINFO_PROPERTY
#define DISPID_INSTALLER_CREATERECORD
#define DISPID_SESSION_MESSAGE
#define DISPID_INSTALLER_INSTALLPRODUCT
#define DISPID_SUMMARYINFO_PROPERTYCOUNT
#define DISPID_INSTALLER_OPENPACKAGE
#define DISPID_SESSION_MODE
#define DISPID_SESSION_LANGUAGE
#define DISPID_INSTALLER_PRODUCTSTATE
#define DISPID_SESSION_EVALUATECONDITION
#define DISPID_SESSION_FEATUREREQUESTSTATE
#define DISPID_INSTALLER_OPENDATABASE
#define DISPID_INSTALLER_ENVIRONMENT
#define DISPID_INSTALLER_FILESIZE
#define DISPID_INSTALLER_SUMMARYINFORMATION
unsigned __int3264 UINT_PTR
BSTR WINAPI SysAllocString(LPCOLESTR str)
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
BSTR WINAPI DECLSPEC_HOTPATCH SysAllocStringByteLen(LPCSTR str, UINT len)
BSTR WINAPI SysAllocStringLen(const OLECHAR *str, unsigned int len)
#define DISPATCH_PROPERTYPUT
#define DISPATCH_PROPERTYGET
const GUID IID_IProvideClassInfo
const GUID IID_IProvideClassInfo2
#define IsEqualGUID(rguid1, rguid2)
#define IsEqualIID(riid1, riid2)
struct _DllVersionInfo DLLVERSIONINFO
IProvideMultipleClassInfo IProvideMultipleClassInfo_iface
IDispatch IDispatch_iface
IEnumVARIANT IEnumVARIANT_iface
auto_invoke_func fn_invoke
#define CONTAINING_RECORD(address, type, field)
INT WINAPI VariantTimeToSystemTime(double dateIn, LPSYSTEMTIME lpSt)
HRESULT WINAPI DECLSPEC_HOTPATCH VariantChangeType(VARIANTARG *pvargDest, VARIANTARG *pvargSrc, USHORT wFlags, VARTYPE vt)
HRESULT WINAPI DECLSPEC_HOTPATCH VariantClear(VARIANTARG *pVarg)
void WINAPI VariantInit(VARIANTARG *pVarg)
INT WINAPI SystemTimeToVariantTime(LPSYSTEMTIME lpSt, double *pDateOut)
HRESULT WINAPI VariantCopyInd(VARIANT *pvargDest, VARIANTARG *pvargSrc)
HRESULT WINAPI VariantCopy(VARIANTARG *pvargDest, VARIANTARG *pvargSrc)
DWORD WINAPI GetLastError(void)
_In_ DWORD _Out_ _In_ WORD wFlags
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
_In_ void _In_ PCCERT_CONTEXT _In_opt_ LPFILETIME _In_ DWORD _In_ DWORD _Outptr_opt_ void ** ppvObject
#define ERROR_INSTALL_FAILURE
#define DISP_E_PARAMNOTFOUND
#define ERROR_INSTALL_USEREXIT
#define ERROR_INVALID_HANDLE_STATE
#define DISP_E_MEMBERNOTFOUND
#define CLASS_E_NOAGGREGATION
#define ERROR_INSTALL_SUSPEND
#define DISP_E_TYPEMISMATCH
#define ERROR_FUNCTION_NOT_CALLED
#define DISP_E_PARAMNOTOPTIONAL
#define DISP_E_UNKNOWNNAME
#define ERROR_INVALID_DATA
#define HKEY_CLASSES_ROOT