24#define NONAMELESSUNION
150 if (!szProduct || !
squash_guid( szProduct, squashed_pc ))
233 const WCHAR *reinstallmode;
250 if (reinstallmode[--
len] ==
'v' || reinstallmode[
len] ==
'V')
299 if (szPatchPackage && !(patch_package =
strdupAtoW(szPatchPackage)))
302 if (szInstallPackage && !(install_package =
strdupAtoW(szInstallPackage)))
305 if (szCommandLine && !(command_line =
strdupAtoW(szCommandLine)))
308 r =
MsiApplyPatchW(patch_package, install_package, eInstallType, command_line);
338 ERR(
"Failed to read product codes from patch\n");
365 LPCWSTR cmd_ptr = szCommandLine;
369 if (!szPatchPackage || !szPatchPackage[0])
391 for (
i = 0; codes[
i];
i++)
396 TRACE(
"patch applied\n");
419 FIXME(
"Only reading target products from patch\n");
437 if (!szPatchPackages || !szPatchPackages[0])
440 if (!(patch_packages =
strdupAtoW(szPatchPackages)))
443 if (szProductCode && !(product_code =
strdupAtoW(szProductCode)))
446 if (szPropertiesList && !(properties_list =
strdupAtoW(szPropertiesList)))
468 if (!szPatchPackages || !szPatchPackages[0])
471 beg =
end = szPatchPackages;
477 while (*beg ==
' ') beg++;
481 while (
len && beg[
len - 1] ==
' ')
len--;
523 ret[
i].ePatchDataType =
info[
i].ePatchDataType;
537 TRACE(
"%s, %lu, %p\n",
debugstr_a(szProductPackagePath), cPatchInfo, pPatchInfo );
539 if (szProductPackagePath && !(package_path =
strdupAtoW( szProductPackagePath )))
550 for (
i = 0;
i < cPatchInfo;
i++)
583 TRACE(
"patch not applicable\n");
604 ERR(
"no product code to check\n");
609 hr = IXMLDOMDocument_selectNodes(
desc,
s, &
list );
616 hr = IXMLDOMNode_get_text(
node, &
s );
617 IXMLDOMNode_Release(
node );
624 IXMLDOMNodeList_Release(
list );
627 TRACE(
"patch not applicable\n");
639 FIXME(
"patch ordering not supported\n");
643 switch (
info[
i].ePatchDataType)
669 &IID_IXMLDOMDocument, (
void**)&
desc );
672 ERR(
"failed to create DOMDocument30 instance, %#lx\n",
hr );
687 hr = IXMLDOMDocument_loadXML(
desc,
s, &
b );
691 ERR(
"failed to parse patch description\n");
692 IXMLDOMDocument_Release(
desc );
710 FIXME(
"unknown patch data type %u\n",
info[
i].ePatchDataType);
718 TRACE(
"ePatchDataType: %u\n",
info[
i].ePatchDataType);
723 if (
desc) IXMLDOMDocument_Release(
desc );
734 TRACE(
"%s, %lu, %p\n",
debugstr_w(szProductPackagePath), cPatchInfo, pPatchInfo );
739 ERR(
"failed to open package %u\n",
r);
758 if (usersid && !(usersidW =
strdupAtoW( usersid )))
802 DWORD sz =
sizeof(sourcepath);
843 TRACE(
"%s %d %d %s\n",
debugstr_w(szProduct), iInstallLevel, eInstallState,
852 FIXME(
"State %d not implemented\n", eInstallState);
887 lstrcpyW(commandline, szCommandLine);
890 lstrcatW(commandline,
L" INSTALLLEVEL=32767");
898 sz =
sizeof(sourcepath);
954 TRACE(
"%s %d %d\n",
debugstr_a(szProduct), iInstallLevel, eInstallState);
1004 HKEY compkey, prodkey;
1010 if (!szComponent || !*szComponent)
1086 ERR(
"unhandled value type %lu\n", *
type );
1232 if (szValue->
str.
a || szValue->
str.
w)
1242 *pcchValueBuf =
len;
1264 szBuffer, pcchValueBuf);
1267 if( szProduct && !szwProduct )
1293 szBuffer, pcchValueBuf);
1315 szValue, pcchValue);
1317 if (szValue && !pcchValue)
1320 if (szProductCode) product =
strdupAtoW(szProductCode);
1321 if (szUserSid) usersid =
strdupAtoW(szUserSid);
1322 if (szProperty)
property =
strdupAtoW(szProperty);
1345 if (*pcchValue >=
len)
1354 if (*pcchValue <=
len || !szValue)
1357 *pcchValue =
len - 1;
1405 szValue, pcchValue);
1407 if (!szProductCode || !
squash_guid( szProductCode, squashed_pc ))
1410 if (szValue && !pcchValue)
1418 if (!szProperty || !*szProperty)
1434 package = INSTALLPROPERTY_LOCALPACKAGEW;
1436 if (!
props && !prod)
1441 package = L"ManagedLocalPackage";
1443 if (!
props && !managed)
1448 package = INSTALLPROPERTY_LOCALPACKAGEW;
1451 if (!
props && !classes)
1476 if (prod || classes)
1485 szProperty =
L"DisplayName";
1487 szProperty =
L"DisplayVersion";
1504 if (!prod && !classes)
1547 if (prod || managed)
1556 if (!prod && !classes)
1580 debugstr_a(szPatchList), pcFiles, pphFileRecords);
1588 debugstr_w(szPatchList), pcFiles, pphFileRecords);
1605 if (lpValue && !pcchValue)
1608 if (szPatchCode) patch =
strdupAtoW(szPatchCode);
1609 if (szProductCode) product =
strdupAtoW(szProductCode);
1610 if (szUserSid) usersid =
strdupAtoW(szUserSid);
1611 if (szProperty)
property =
strdupAtoW(szProperty);
1636 if ((*
val && *pcchValue <
len + 1) || !lpValue)
1641 lpValue[*pcchValue - 1] =
'\0';
1665 HKEY patch = 0, patches = 0;
1666 HKEY udpatch = 0, datakey = 0;
1667 HKEY prodpatches = 0;
1676 if (!szProductCode || !
squash_guid( szProductCode, squashed_pc ))
1679 if (!szPatchCode || !
squash_guid( szPatchCode, squashed_patch ))
1685 if (lpValue && !pcchValue)
1696 if (szUserSid && !
wcscmp( szUserSid,
L"S-1-5-18" ))
1727 datakey = prodpatches;
1728 szProperty = squashed_patch;
1739 szProperty =
L"ManagedLocalPackage";
1745 szProperty =
L"Installed";
1774 if ((*
val && *pcchValue <
len + 1) || !lpValue)
1805 if (!patch || !
attr)
1853 if (!patch || !
attr)
1889 TRACE(
"%#lx, %s, %#lx\n", dwLogMode,
debugstr_a(szLogFile), attributes );
1904 TRACE(
"%#lx, %s, %#lx\n", dwLogMode,
debugstr_w(szLogFile), attributes );
1934 TRACE(
"%lu, %s, %lu, %d, %p, %p, %p, %p\n",
handle,
debugstr_a(component),
index,
state,
drive, buflen, cost,
1974 TRACE(
"%lu, %s, %lu, %d, %p, %p, %p, %p\n",
handle,
debugstr_w(component),
index,
state,
drive, buflen, cost,
2031 if (component && component[0])
2042 *cost =
max( 8, comp->
Cost / 512 );
2067 if (szProductCode && !(prodcode =
strdupAtoW(szProductCode)))
2070 if (szUserSid && !(usersid =
strdupAtoW(szUserSid)))
2073 if (szComponent && !(comp =
strdupAtoW(szComponent)))
2108 package = L"ManagedLocalPackage";
2110 package = L"LocalPackage";
2154 if (!pdwState || !szComponent)
2157 if (!szProductCode || !*szProductCode ||
lstrlenW(szProductCode) !=
GUID_SIZE - 1)
2197 val[0] >=
'0' &&
val[0] <=
'9' &&
val[1] >=
'0' &&
val[1] <=
'9' &&
val[2] !=
':')
2206 TRACE(
"-> %d\n", *pdwState);
2230 HKEY prodkey = 0, userdata = 0;
2236 if (!szProduct || !*szProduct)
2242 if (szProduct[0] !=
'{' || szProduct[37] !=
'}')
2289 TRACE(
"%08x %p\n", dwUILevel, phWnd);
2294 FIXME(
"Unrecognized flags %08x\n", dwUILevel);
2313 TRACE(
"%p, %#lx, %p\n", puiHandler, dwMessageFilter, pvContext );
2327 TRACE(
"%p, %#lx, %p\n", puiHandler, dwMessageFilter, pvContext );
2372 FIXME(
"don't know how to deal with handle = %lu\n",
handle );
2387 for (
i = 0;
i < (
id & 0xf);
i++)
p += *
p + 1;
2390 if( nBufferMax <=
len )
2412 if(
len <= nBufferMax )
2429 if (!szComponent || !pcchBuf)
2445 if (!szComponent || !pcchBuf)
2457 FIXME(
"%p, %s, %s, %u, %#x, %#lx\n",
hWnd,
debugstr_a(lpText),
debugstr_a(lpCaption), uType, wLanguageId,
f );
2464 FIXME(
"%p, %s, %s, %u, %#x %#lx\n",
hWnd,
debugstr_w(lpText),
debugstr_w(lpCaption), uType, wLanguageId,
f );
2471 FIXME(
"%p, %s, %s, %u, %#lx, %#x, %#lx): semi-stub\n",
hWnd,
debugstr_a(lpText),
debugstr_a(lpCaption), uType,
2479 FIXME(
"%p, %s, %s, %u, %#lx, %#x, %#lx): semi-stub\n",
hWnd,
debugstr_w(lpText),
debugstr_w(lpCaption), uType,
2485 DWORD dwAssemblyInfo,
char *lpPathBuf,
DWORD *pcchPathBuf )
2488 dwAssemblyInfo, lpPathBuf, pcchPathBuf );
2496 dwAssemblyInfo, lpPathBuf, pcchPathBuf );
2557 data.dwProvFlags = 0;
2602 TRACE(
"%lu, %s, %p, %p\n", hProduct,
debugstr_a(szProperty), szValue, pccbValue );
2604 if (szValue && !pccbValue)
2607 if (szProperty) prop =
strdupAtoW(szProperty);
2616 if (szValue) *szValue =
'\0';
2617 if (pccbValue) *pccbValue = 0;
2640 if (
len > *pccbValue)
2643 *pccbValue =
len - 1;
2664 TRACE(
"%lu, %s, %p, %p)\n", hProduct,
debugstr_w(szProperty), szValue, pccbValue );
2669 if (szValue && !pccbValue)
2672 package = msihandle2msiinfo(hProduct, MSIHANDLETYPE_PACKAGE);
2676 r =
MSI_OpenQuery(package->
db, &
view,
L"SELECT * FROM `Property` WHERE `Property` = '%s'", szProperty);
2715 if (szValue) *szValue =
'\0';
2716 if (pccbValue) *pccbValue = 0;
2767 if (usersid && !
wcsicmp( usersid,
L"S-1-1-0" ))
2769 FIXME(
"only looking at the current user\n" );
2786 if (!szProduct || !szComponent)
2789 if (lpPathBuf->
str.
w && !pcchBuf)
2878 if (usersid && !(usersidW =
strdupAtoW( usersid )))
goto end;
2973 path[0] >=
'0' &&
path[0] <=
'9' &&
3000 if (usersid && !(usersidW =
strdupAtoW( usersid )))
3035 if ( szProduct && !szwProduct )
3039 if ( szFeature && !szwFeature )
3076 if (!szProduct || !szFeature || !
squash_guid( szProduct, squashed ))
3100 if ((lpVersionBuf && !pcchVersionBuf) ||
3101 (lpLangBuf && !pcchLangBuf))
3111 if( lpVersionBuf && pcchVersionBuf && *pcchVersionBuf )
3114 if( !lpwVersionBuff )
3118 if( lpLangBuf && pcchLangBuf && *pcchLangBuf )
3126 lpwLangBuff, pcchLangBuf);
3130 lpVersionBuf, *pcchVersionBuf + 1,
NULL,
NULL);
3133 lpLangBuf, *pcchLangBuf + 1,
NULL,
NULL);
3167 if (!verbuf && !verlen && !langbuf && !langlen)
3177 HIWORD(ffi->dwFileVersionMS),
LOWORD(ffi->dwFileVersionMS),
3178 HIWORD(ffi->dwFileVersionLS),
LOWORD(ffi->dwFileVersionLS) );
3179 if (verbuf)
lstrcpynW( verbuf, tmp, *verlen );
3186 if (verbuf) *verbuf = 0;
3195 if (langbuf)
lstrcpynW( langbuf, tmp, *langlen );
3202 if (langbuf) *langbuf = 0;
3218 TRACE(
"%s, %p(%lu), %p(%lu)\n",
debugstr_w(
path), verbuf, verlen ? *verlen : 0, langbuf, langlen ? *langlen : 0 );
3220 if ((verbuf && !verlen) || (langbuf && !langlen))
3249 pdwUseCount, pwDateUsed);
3263 pdwUseCount, pwDateUsed);
3266 if (szProduct && !prod)
3270 if (szFeature && !feat)
3299 FIXME(
"mark product %s feature %s as used\n",
3318 if (szProduct && !prod)
3322 if (szFeature && !feat)
3368#define BASE85_SIZE 20
3396 if (!szProduct) szProduct = product;
3434 DWORD *pcchPathBuf )
3438 TRACE(
"%s, %s, %lu, %s, %#lx, %#lx, %p, %p\n",
debugstr_w(szComponent),
debugstr_w(szQualifier), dwInstallMode,
3439 debugstr_w(szProduct), Unused1, Unused2, lpPathBuf, pcchPathBuf );
3442 path.str.w = lpPathBuf;
3445 &
path, pcchPathBuf );
3452 const char *szProduct,
DWORD Unused1,
DWORD Unused2,
char *lpPathBuf,
3453 DWORD *pcchPathBuf )
3455 WCHAR *szwComponent, *szwQualifier =
NULL, *szwProduct =
NULL;
3459 TRACE(
"%s, %s, %lu, %s, %#lx, %#lx, %p, %p\n",
debugstr_a(szComponent),
debugstr_a(szQualifier), dwInstallMode,
3460 debugstr_a(szProduct), Unused1, Unused2, lpPathBuf, pcchPathBuf );
3463 if (szComponent && !szwComponent)
3467 if (szQualifier && !szwQualifier)
3471 if (szProduct && !szwProduct)
3475 path.str.a = lpPathBuf;
3478 dwInstallMode, szwProduct, Unused1,
3479 Unused2, &
path, pcchPathBuf);
3496 dwInstallMode,
NULL, 0, 0, lpPathBuf, pcchPathBuf);
3507 dwInstallMode,
NULL, 0, 0, lpPathBuf, pcchPathBuf);
3525 pcchUserNameBuf, lpOrgNameBuf, pcchOrgNameBuf, lpSerialBuf,
3528 if (!szProduct || !
squash_guid( szProduct, squashed_pc ))
3561 if (pcchUserNameBuf)
3563 if (lpUserNameBuf && !
user)
3565 (*pcchUserNameBuf)--;
3580 if (!orgptr) orgptr =
L"";
3621 if ((lpUserNameBuf && !pcchUserNameBuf) ||
3622 (lpOrgNameBuf && !pcchOrgNameBuf) ||
3623 (lpSerialBuf && !pcchSerialBuf))
3627 user.str.w = lpUserNameBuf;
3629 org.str.w = lpOrgNameBuf;
3631 serial.str.w = lpSerialBuf;
3634 &
org, pcchOrgNameBuf,
3635 &
serial, pcchSerialBuf );
3647 if ((lpUserNameBuf && !pcchUserNameBuf) ||
3648 (lpOrgNameBuf && !pcchOrgNameBuf) ||
3649 (lpSerialBuf && !pcchSerialBuf))
3653 if (szProduct && !prod)
3657 user.str.a = lpUserNameBuf;
3659 org.str.a = lpOrgNameBuf;
3661 serial.str.a = lpSerialBuf;
3664 &
org, pcchOrgNameBuf,
3665 &
serial, pcchSerialBuf );
3685 package = msihandle2msiinfo(handle, MSIHANDLETYPE_PACKAGE);
3710 package = msihandle2msiinfo(handle, MSIHANDLETYPE_PACKAGE);
3733 if (szProduct && !prod)
3737 if (szFeature && !feat)
3761 if (!szProduct || !szFeature)
3764 switch (eInstallState)
3783 sz =
sizeof(sourcepath);
3844 LPSTR szComponentCode )
3852 if (szShortcutTarget && !
target )
3881 szProductCode, szFeatureId, szComponentCode );
3889 r = IPersistFile_Load( pf, szShortcutTarget,
3893 r = IPersistFile_QueryInterface( pf, &IID_IShellLinkDataList,
3899 IShellLinkDataList_Release( dl );
3902 IPersistFile_Release( pf );
3908 TRACE(
"darwin = %p\n", darwin);
3916 szProductCode, szFeatureId, szComponentCode, &sz );
3939 ptr = reinstallmode;
3963 sz =
sizeof(sourcepath);
3986 swprintf(
cmdline, sz /
sizeof(
WCHAR),
L"%s=%s %s=%s",
L"REINSTALLMODE", reinstallmode,
L"REINSTALL", szFeature );
3997 WCHAR *wszProduct, *wszFeature;
4017 unsigned char digest[16];
4135 FIXME(
"%s %p - stub\n",
4146 FIXME(
"%s %p - stub\n",
4180 if (product && !(productW =
strdupAtoW( product )))
4183 if (component && !(componentW =
strdupAtoW( component )))
4212 TRACE(
"%s, %s, %s, %#lx, %p, %p\n",
debugstr_a(product),
debugstr_a(component),
debugstr_a(
feature),
mode,
4215 if (product && !(productW =
strdupAtoW( product )))
goto done;
4217 if (component && !(componentW =
strdupAtoW( component )))
goto done;
4257 TRACE(
"%s, %s, %s, %#lx, %p, %p\n",
debugstr_w(product),
debugstr_w(component),
debugstr_w(
feature),
mode,
4268 FIXME(
"mode %#lx not implemented\n",
mode );
4289 TRACE(
"MsiGetComponentPathW returned %d\n",
state);
4321 *
event = (
HANDLE)0xdeadbeef;
4333 *
event = (
HANDLE)0xdeadbeef;
4348 FIXME(
"%p, %p, %p, %#lx\n",
a,
b,
c,
d );
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static WCHAR * strdupW(const WCHAR *src)
static const WCHAR nameW[]
void user(int argc, const char *argv[])
#define RegCloseKey(hKey)
static TAGREF LPCWSTR LPDWORD LPVOID lpBuffer
#define ERROR_NOT_ENOUGH_MEMORY
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
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 RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
PCCERT_CONTEXT WINAPI CertDuplicateCertificateContext(PCCERT_CONTEXT pCertContext)
static WCHAR unknown[MAX_STRING_RESOURCE_LEN]
static const WCHAR empty[]
static WCHAR * strdupAtoW(const char *str)
#define ERROR_CALL_NOT_IMPLEMENTED
#define ERROR_INVALID_PARAMETER
#define INVALID_HANDLE_VALUE
#define CreateFileMappingW(a, b, c, d, e, f)
#define ERROR_NO_MORE_ITEMS
#define ERROR_INVALID_HANDLE
#define FILE_ATTRIBUTE_NORMAL
#define WideCharToMultiByte
#define ERROR_INVALID_NAME
static const WCHAR version[]
BOOL WINAPI DeleteFileW(IN LPCWSTR lpFileName)
BOOL WINAPI CreateDirectoryW(IN LPCWSTR lpPathName, IN LPSECURITY_ATTRIBUTES lpSecurityAttributes)
DWORD WINAPI GetFileAttributesW(LPCWSTR lpFileName)
DWORD WINAPI GetFileSize(HANDLE hFile, LPDWORD lpFileSizeHigh)
UINT WINAPI GetWindowsDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
LPVOID WINAPI LockResource(HGLOBAL handle)
HRSRC WINAPI FindResourceExW(HMODULE hModule, LPCWSTR type, LPCWSTR name, WORD lang)
HGLOBAL WINAPI LoadResource(HINSTANCE hModule, HRSRC hRsrc)
static BYTE * reg_get_value(HKEY hkey, const WCHAR *name, DWORD *type, DWORD *size)
WCHAR ** msi_split_string(const WCHAR *str, WCHAR sep)
UINT MSI_InstallPackage(MSIPACKAGE *package, LPCWSTR szPackagePath, LPCWSTR szCommandLine)
BOOL msi_is_global_assembly(MSICOMPONENT *comp)
UINT(* handler)(MSIPACKAGE *)
UINT ACTION_PerformAction(MSIPACKAGE *package, const WCHAR *action)
MSICOMPONENT * msi_get_loaded_component(MSIPACKAGE *package, const WCHAR *Component)
const WCHAR * msi_get_command_line_option(const WCHAR *cmd, const WCHAR *option, UINT *len)
MSIFILE * msi_get_loaded_file(MSIPACKAGE *package, const WCHAR *key)
LONG WINAPI rpc_filter(EXCEPTION_POINTERS *eptr)
UINT WINAPI MsiOpenDatabaseW(LPCWSTR szDBPath, LPCWSTR szPersist, MSIHANDLE *phDB)
UINT MSI_OpenDatabaseW(LPCWSTR szDBPath, LPCWSTR szPersist, MSIDATABASE **pdb)
HANDLE msi_create_file(MSIPACKAGE *package, const WCHAR *filename, DWORD access, DWORD sharing, DWORD creation, DWORD flags)
WCHAR * msi_get_font_file_version(MSIPACKAGE *package, const WCHAR *filename)
MSIHANDLE alloc_msihandle(MSIOBJECTHDR *obj)
MSIHANDLE msi_get_remote(MSIHANDLE handle)
UINT WINAPI MsiCloseHandle(MSIHANDLE handle)
int msiobj_release(MSIOBJECTHDR *info)
void * msihandle2msiinfo(MSIHANDLE handle, UINT type)
UINT MSI_SetFeatureStateW(MSIPACKAGE *package, LPCWSTR szFeature, INSTALLSTATE iState)
UINT msi_strcpy_to_awstring(const WCHAR *str, int len, awstring *awbuf, DWORD *sz)
INSTALLSTATE WINAPI MsiLocateComponentW(LPCWSTR szComponent, LPWSTR lpPathBuf, LPDWORD pcchBuf)
UINT WINAPI MsiOpenProductA(LPCSTR szProduct, MSIHANDLE *phProduct)
UINT WINAPI MsiGetFileVersionW(const WCHAR *path, WCHAR *verbuf, DWORD *verlen, WCHAR *langbuf, DWORD *langlen)
UINT WINAPI MsiGetFileVersionA(LPCSTR szFilePath, LPSTR lpVersionBuf, LPDWORD pcchVersionBuf, LPSTR lpLangBuf, LPDWORD pcchLangBuf)
USERINFOSTATE WINAPI MsiGetUserInfoW(LPCWSTR szProduct, LPWSTR lpUserNameBuf, LPDWORD pcchUserNameBuf, LPWSTR lpOrgNameBuf, LPDWORD pcchOrgNameBuf, LPWSTR lpSerialBuf, LPDWORD pcchSerialBuf)
UINT WINAPI MsiConfigureProductExW(LPCWSTR szProduct, int iInstallLevel, INSTALLSTATE eInstallState, LPCWSTR szCommandLine)
static UINT MSI_ApplyPatchW(LPCWSTR szPatchPackage, LPCWSTR szProductCode, LPCWSTR szCommandLine)
static UINT query_feature_state(const WCHAR *product, const WCHAR *squashed, const WCHAR *usersid, MSIINSTALLCONTEXT ctx, const WCHAR *feature, INSTALLSTATE *state)
UINT WINAPI MsiGetPatchFileListA(LPCSTR szProductCode, LPCSTR szPatchList, LPDWORD pcFiles, MSIHANDLE **pphFileRecords)
UINT WINAPI MsiGetFileHashW(const WCHAR *szFilePath, DWORD dwOptions, MSIFILEHASHINFO *pHash)
UINT WINAPI MsiRemovePatchesW(LPCWSTR patchlist, LPCWSTR product, INSTALLTYPE type, LPCWSTR propertylist)
LANGID WINAPI MsiLoadStringW(MSIHANDLE handle, UINT id, WCHAR *lpBuffer, int nBufferMax, LANGID lang)
UINT msi_get_filehash(MSIPACKAGE *package, const WCHAR *path, MSIFILEHASHINFO *hash)
UINT WINAPI MsiGetFeatureUsageW(LPCWSTR szProduct, LPCWSTR szFeature, LPDWORD pdwUseCount, LPWORD pwDateUsed)
UINT WINAPI MsiProvideQualifiedComponentExA(const char *szComponent, const char *szQualifier, DWORD dwInstallMode, const char *szProduct, DWORD Unused1, DWORD Unused2, char *lpPathBuf, DWORD *pcchPathBuf)
UINT WINAPI MsiQueryComponentStateW(LPCWSTR szProductCode, LPCWSTR szUserSid, MSIINSTALLCONTEXT dwContext, LPCWSTR szComponent, INSTALLSTATE *pdwState)
UINT WINAPI MsiProvideQualifiedComponentExW(const WCHAR *szComponent, const WCHAR *szQualifier, DWORD dwInstallMode, const WCHAR *szProduct, DWORD Unused1, DWORD Unused2, WCHAR *lpPathBuf, DWORD *pcchPathBuf)
UINT msi_locate_product(LPCWSTR szProduct, MSIINSTALLCONTEXT *context)
static void free_patchinfo(DWORD count, MSIPATCHSEQUENCEINFOW *info)
UINT WINAPI MsiProvideComponentFromDescriptorA(LPCSTR szDescriptor, LPSTR szPath, LPDWORD pcchPath, LPDWORD pcchArgs)
UINT WINAPI MsiConfigureProductW(LPCWSTR szProduct, int iInstallLevel, INSTALLSTATE eInstallState)
UINT WINAPI MsiGetPatchInfoA(LPCSTR patch, LPCSTR attr, LPSTR buffer, LPDWORD buflen)
UINT WINAPI MsiMessageBoxW(HWND hWnd, const WCHAR *lpText, const WCHAR *lpCaption, UINT uType, WORD wLanguageId, DWORD f)
UINT WINAPI MsiGetPatchInfoExW(LPCWSTR szPatchCode, LPCWSTR szProductCode, LPCWSTR szUserSid, MSIINSTALLCONTEXT dwContext, LPCWSTR szProperty, LPWSTR lpValue, DWORD *pcchValue)
static UINT get_patch_product_codes(LPCWSTR szPatchPackage, WCHAR ***product_codes)
UINT WINAPI MsiGetPatchFileListW(LPCWSTR szProductCode, LPCWSTR szPatchList, LPDWORD pcFiles, MSIHANDLE **pphFileRecords)
UINT WINAPI MsiEnumComponentCostsW(MSIHANDLE handle, const WCHAR *component, DWORD index, INSTALLSTATE state, WCHAR *drive, DWORD *buflen, int *cost, int *temp)
INSTALLSTATE WINAPI MsiUseFeatureExW(const WCHAR *szProduct, const WCHAR *szFeature, DWORD dwInstallMode, DWORD dwReserved)
UINT WINAPI MsiAdvertiseProductA(LPCSTR szPackagePath, LPCSTR szScriptfilePath, LPCSTR szTransforms, LANGID lgidLanguage)
UINT WINAPI MsiRemovePatchesA(LPCSTR patchlist, LPCSTR product, INSTALLTYPE type, LPCSTR propertylist)
UINT WINAPI MsiConfigureFeatureW(LPCWSTR szProduct, LPCWSTR szFeature, INSTALLSTATE eInstallState)
UINT WINAPI MsiEnableLogW(DWORD dwLogMode, const WCHAR *szLogFile, DWORD attributes)
static UINT MSI_ApplicablePatchXML(MSIPACKAGE *package, IXMLDOMDocument *desc)
UINT WINAPI MsiGetFeatureUsageA(LPCSTR szProduct, LPCSTR szFeature, LPDWORD pdwUseCount, LPWORD pwDateUsed)
static USERINFOSTATE MSI_GetUserInfo(LPCWSTR szProduct, awstring *lpUserNameBuf, LPDWORD pcchUserNameBuf, awstring *lpOrgNameBuf, LPDWORD pcchOrgNameBuf, awstring *lpSerialBuf, LPDWORD pcchSerialBuf)
UINT WINAPI MsiConfigureProductExA(LPCSTR szProduct, int iInstallLevel, INSTALLSTATE eInstallState, LPCSTR szCommandLine)
UINT WINAPI MsiBeginTransactionW(const WCHAR *name, DWORD attrs, MSIHANDLE *id, HANDLE *event)
UINT WINAPI MsiAdvertiseProductExW(const WCHAR *szPackagePath, const WCHAR *szScriptfilePath, const WCHAR *szTransforms, LANGID lgidLanguage, DWORD dwPlatform, DWORD dwOptions)
UINT WINAPI MsiIsProductElevatedA(LPCSTR szProduct, BOOL *pfElevated)
UINT WINAPI MsiSetExternalUIRecord(INSTALLUI_HANDLER_RECORD handler, DWORD filter, void *context, INSTALLUI_HANDLER_RECORD *prev)
INSTALLSTATE WINAPI MsiQueryProductStateA(LPCSTR szProduct)
UINT WINAPI MsiVerifyPackageW(LPCWSTR szPackage)
UINT WINAPI MsiInstallProductW(LPCWSTR szPackagePath, LPCWSTR szCommandLine)
UINT WINAPI MsiGetPatchInfoExA(LPCSTR szPatchCode, LPCSTR szProductCode, LPCSTR szUserSid, MSIINSTALLCONTEXT dwContext, LPCSTR szProperty, LPSTR lpValue, DWORD *pcchValue)
UINT WINAPI MsiInstallProductA(LPCSTR szPackagePath, LPCSTR szCommandLine)
INSTALLSTATE WINAPI MsiUseFeatureA(LPCSTR szProduct, LPCSTR szFeature)
static UINT msi_comp_find_prodcode(WCHAR *squashed_pc, MSIINSTALLCONTEXT context, LPCWSTR comp, LPWSTR val, DWORD *sz)
UINT WINAPI MsiEnableLogA(DWORD dwLogMode, const char *szLogFile, DWORD attributes)
HRESULT WINAPI MsiGetFileSignatureInformationW(const WCHAR *path, DWORD flags, PCCERT_CONTEXT *cert, BYTE *hash, DWORD *hashlen)
UINT WINAPI MsiGetFileHashA(const char *szFilePath, DWORD dwOptions, MSIFILEHASHINFO *pHash)
UINT WINAPI MsiProvideAssemblyA(const char *szAssemblyName, const char *szAppContext, DWORD dwInstallMode, DWORD dwAssemblyInfo, char *lpPathBuf, DWORD *pcchPathBuf)
INSTALLUI_HANDLERA WINAPI MsiSetExternalUIA(INSTALLUI_HANDLERA puiHandler, DWORD dwMessageFilter, void *pvContext)
INSTALLUI_HANDLERW WINAPI MsiSetExternalUIW(INSTALLUI_HANDLERW puiHandler, DWORD dwMessageFilter, void *pvContext)
static BOOL msi_comp_find_package(LPCWSTR prodcode, MSIINSTALLCONTEXT context)
UINT WINAPI MsiBeginTransactionA(const char *name, DWORD attrs, MSIHANDLE *id, HANDLE *event)
static WCHAR * reg_get_value(HKEY hkey, const WCHAR *name, DWORD *type)
VOID WINAPI MD5Final(MD5_CTX *)
UINT WINAPI MsiCreateAndVerifyInstallerDirectory(DWORD dwReserved)
LANGID WINAPI MsiLoadStringA(MSIHANDLE handle, UINT id, LPSTR lpBuffer, int nBufferMax, LANGID lang)
UINT WINAPI MsiMessageBoxA(HWND hWnd, const char *lpText, const char *lpCaption, UINT uType, WORD wLanguageId, DWORD f)
UINT WINAPI MsiGetProductPropertyA(MSIHANDLE hProduct, const char *szProperty, char *szValue, DWORD *pccbValue)
INSTALLSTATE WINAPI MsiGetComponentPathExA(LPCSTR product, LPCSTR comp, LPCSTR usersid, MSIINSTALLCONTEXT ctx, LPSTR buf, LPDWORD buflen)
UINT WINAPI MsiGetProductPropertyW(MSIHANDLE hProduct, const WCHAR *szProperty, WCHAR *szValue, DWORD *pccbValue)
UINT WINAPI MsiQueryFeatureStateExW(LPCWSTR product, LPCWSTR usersid, MSIINSTALLCONTEXT ctx, LPCWSTR feature, INSTALLSTATE *state)
INSTALLSTATE WINAPI MsiQueryFeatureStateW(LPCWSTR szProduct, LPCWSTR szFeature)
UINT WINAPI MsiVerifyPackageA(LPCSTR szPackage)
UINT WINAPI MsiGetPatchInfoW(LPCWSTR patch, LPCWSTR attr, LPWSTR buffer, LPDWORD buflen)
static UINT open_package(const WCHAR *product, const WCHAR *usersid, MSIINSTALLCONTEXT context, MSIPACKAGE **package)
UINT WINAPI MsiGetProductInfoA(LPCSTR szProduct, LPCSTR szAttribute, LPSTR szBuffer, LPDWORD pcchValueBuf)
UINT WINAPI MsiGetProductInfoW(LPCWSTR szProduct, LPCWSTR szAttribute, LPWSTR szBuffer, LPDWORD pcchValueBuf)
UINT WINAPI MsiInstallMissingComponentW(LPCWSTR szProduct, LPCWSTR szComponent, INSTALLSTATE eInstallState)
VOID WINAPI MD5Init(MD5_CTX *)
UINT WINAPI MsiDeterminePatchSequenceA(const char *product, const char *usersid, MSIINSTALLCONTEXT context, DWORD count, MSIPATCHSEQUENCEINFOA *patchinfo)
VOID WINAPI MD5Update(MD5_CTX *, const unsigned char *, unsigned int)
UINT WINAPI MsiAdvertiseScriptA(const char *szScriptFile, DWORD dwFlags, HKEY *phRegData, BOOL fRemoveItems)
UINT WINAPI MsiConfigureFeatureA(LPCSTR szProduct, LPCSTR szFeature, INSTALLSTATE eInstallState)
UINT WINAPI MsiGetProductCodeA(LPCSTR szComponent, LPSTR szBuffer)
UINT WINAPI MsiReinstallFeatureA(const char *szProduct, const char *szFeature, DWORD dwReinstallMode)
UINT WINAPI MsiQueryComponentStateA(LPCSTR szProductCode, LPCSTR szUserSid, MSIINSTALLCONTEXT dwContext, LPCSTR szComponent, INSTALLSTATE *pdwState)
UINT WINAPI MsiQueryFeatureStateExA(LPCSTR product, LPCSTR usersid, MSIINSTALLCONTEXT ctx, LPCSTR feature, INSTALLSTATE *state)
UINT WINAPI MsiGetShortcutTargetW(LPCWSTR szShortcutTarget, LPWSTR szProductCode, LPWSTR szFeatureId, LPWSTR szComponentCode)
UINT WINAPI MsiApplyMultiplePatchesA(LPCSTR szPatchPackages, LPCSTR szProductCode, LPCSTR szPropertiesList)
INSTALLUILEVEL WINAPI MsiSetInternalUI(INSTALLUILEVEL dwUILevel, HWND *phWnd)
UINT WINAPI MsiProvideComponentA(const char *product, const char *feature, const char *component, DWORD mode, char *buf, DWORD *buflen)
INSTALLSTATE WINAPI MsiGetComponentPathA(LPCSTR product, LPCSTR comp, LPSTR buf, LPDWORD buflen)
UINT WINAPI MsiEndTransaction(DWORD state)
UINT WINAPI MsiCollectUserInfoW(LPCWSTR szProduct)
INSTALLSTATE WINAPI MsiUseFeatureW(LPCWSTR szProduct, LPCWSTR szFeature)
static INSTALLSTATE MSI_GetComponentPath(const WCHAR *szProduct, const WCHAR *szComponent, const WCHAR *szUserSid, MSIINSTALLCONTEXT ctx, awstring *lpPathBuf, DWORD *pcchBuf)
INSTALLSTATE WINAPI MsiGetComponentPathExW(LPCWSTR product, LPCWSTR comp, LPCWSTR usersid, MSIINSTALLCONTEXT ctx, LPWSTR buf, LPDWORD buflen)
UINT WINAPI MsiMessageBoxExW(HWND hWnd, const WCHAR *lpText, const WCHAR *lpCaption, UINT uType, DWORD unknown, WORD wLanguageId, DWORD f)
UINT WINAPI MsiAdvertiseScriptW(const WCHAR *szScriptFile, DWORD dwFlags, HKEY *phRegData, BOOL fRemoveItems)
static UINT MSI_OpenProductW(LPCWSTR szProduct, MSIPACKAGE **package)
UINT WINAPI MsiAdvertiseProductExA(const char *szPackagePath, const char *szScriptfilePath, const char *szTransforms, LANGID lgidLanguage, DWORD dwPlatform, DWORD dwOptions)
UINT WINAPI MsiReinstallProductA(const char *szProduct, DWORD dwReinstallMode)
UINT WINAPI MsiInstallMissingComponentA(LPCSTR product, LPCSTR component, INSTALLSTATE state)
UINT WINAPI MsiMessageBoxExA(HWND hWnd, const char *lpText, const char *lpCaption, UINT uType, DWORD unknown, WORD wLanguageId, DWORD f)
static BOOL open_userdata_comp_key(const WCHAR *comp, const WCHAR *usersid, MSIINSTALLCONTEXT ctx, HKEY *hkey)
UINT WINAPI MsiJoinTransaction(MSIHANDLE handle, DWORD attrs, HANDLE *event)
UINT WINAPI MsiAdvertiseProductW(LPCWSTR szPackagePath, LPCWSTR szScriptfilePath, LPCWSTR szTransforms, LANGID lgidLanguage)
UINT WINAPI MsiProvideQualifiedComponentA(LPCSTR szComponent, LPCSTR szQualifier, DWORD dwInstallMode, LPSTR lpPathBuf, LPDWORD pcchPathBuf)
HRESULT WINAPI MsiGetFileSignatureInformationA(const char *path, DWORD flags, PCCERT_CONTEXT *cert, BYTE *hash, DWORD *hashlen)
UINT WINAPI MsiGetProductInfoExW(LPCWSTR szProductCode, LPCWSTR szUserSid, MSIINSTALLCONTEXT dwContext, LPCWSTR szProperty, LPWSTR szValue, LPDWORD pcchValue)
INSTALLSTATE WINAPI MsiGetComponentPathW(LPCWSTR product, LPCWSTR comp, LPWSTR buf, LPDWORD buflen)
INSTALLSTATE WINAPI MsiQueryFeatureStateA(LPCSTR szProduct, LPCSTR szFeature)
UINT WINAPI MsiCollectUserInfoA(LPCSTR szProduct)
UINT WINAPI MsiDetermineApplicablePatchesW(const WCHAR *szProductPackagePath, DWORD cPatchInfo, MSIPATCHSEQUENCEINFOW *pPatchInfo)
INSTALLSTATE WINAPI MsiLocateComponentA(LPCSTR szComponent, LPSTR lpPathBuf, LPDWORD pcchBuf)
UINT WINAPI MsiOpenProductW(LPCWSTR szProduct, MSIHANDLE *phProduct)
UINT WINAPI MsiApplyPatchW(LPCWSTR szPatchPackage, LPCWSTR szInstallPackage, INSTALLTYPE eInstallType, LPCWSTR szCommandLine)
static UINT MSI_ProvideQualifiedComponentEx(LPCWSTR szComponent, LPCWSTR szQualifier, DWORD dwInstallMode, LPCWSTR szProduct, DWORD Unused1, DWORD Unused2, awstring *lpPathBuf, LPDWORD pcchPathBuf)
UINT WINAPI MsiConfigureProductA(LPCSTR szProduct, int iInstallLevel, INSTALLSTATE eInstallState)
UINT WINAPI MsiIsProductElevatedW(LPCWSTR szProduct, BOOL *pfElevated)
static UINT set_drive(WCHAR *buffer, WCHAR letter)
UINT WINAPI MsiDetermineApplicablePatchesA(const char *szProductPackagePath, DWORD cPatchInfo, MSIPATCHSEQUENCEINFOA *pPatchInfo)
UINT WINAPI MsiProvideComponentW(const WCHAR *product, const WCHAR *feature, const WCHAR *component, DWORD mode, WCHAR *buf, DWORD *buflen)
static BOOL msi_comp_find_prod_key(LPCWSTR prodcode, MSIINSTALLCONTEXT context)
UINT WINAPI MsiProvideAssemblyW(const WCHAR *szAssemblyName, const WCHAR *szAppContext, DWORD dwInstallMode, DWORD dwAssemblyInfo, WCHAR *lpPathBuf, DWORD *pcchPathBuf)
INSTALLSTATE WINAPI MsiQueryProductStateW(LPCWSTR szProduct)
UINT WINAPI MsiGetProductCodeW(LPCWSTR szComponent, LPWSTR szBuffer)
static MSIPATCHSEQUENCEINFOW * patchinfoAtoW(DWORD count, const MSIPATCHSEQUENCEINFOA *info)
static UINT get_file_version(const WCHAR *path, WCHAR *verbuf, DWORD *verlen, WCHAR *langbuf, DWORD *langlen)
UINT WINAPI MsiReinstallProductW(const WCHAR *szProduct, DWORD dwReinstallMode)
INSTALLSTATE WINAPI MsiUseFeatureExA(const char *szProduct, const char *szFeature, DWORD dwInstallMode, DWORD dwReserved)
static UINT MSI_GetProductInfo(LPCWSTR szProduct, LPCWSTR szAttribute, awstring *szValue, LPDWORD pcchValueBuf)
static WCHAR * reg_get_sz(HKEY hkey, const WCHAR *name)
static UINT MSI_ApplicablePatchW(MSIPACKAGE *package, LPCWSTR patch)
UINT WINAPI MsiGetProductInfoExA(LPCSTR szProductCode, LPCSTR szUserSid, MSIINSTALLCONTEXT dwContext, LPCSTR szProperty, LPSTR szValue, LPDWORD pcchValue)
UINT WINAPI MsiProvideQualifiedComponentW(LPCWSTR szComponent, LPCWSTR szQualifier, DWORD dwInstallMode, LPWSTR lpPathBuf, LPDWORD pcchPathBuf)
static UINT msi_copy_outval(LPWSTR val, LPWSTR out, LPDWORD size)
USERINFOSTATE WINAPI MsiGetUserInfoA(LPCSTR szProduct, LPSTR lpUserNameBuf, LPDWORD pcchUserNameBuf, LPSTR lpOrgNameBuf, LPDWORD pcchOrgNameBuf, LPSTR lpSerialBuf, LPDWORD pcchSerialBuf)
static WCHAR * reg_get_multisz(HKEY hkey, const WCHAR *name)
UINT WINAPI MsiApplyPatchA(LPCSTR szPatchPackage, LPCSTR szInstallPackage, INSTALLTYPE eInstallType, LPCSTR szCommandLine)
UINT WINAPI MsiEnumComponentCostsA(MSIHANDLE handle, const char *component, DWORD index, INSTALLSTATE state, char *drive, DWORD *buflen, int *cost, int *temp)
static UINT determine_patch_sequence(MSIPACKAGE *package, DWORD count, MSIPATCHSEQUENCEINFOW *info)
UINT WINAPI MsiGetShortcutTargetA(LPCSTR szShortcutTarget, LPSTR szProductCode, LPSTR szFeatureId, LPSTR szComponentCode)
UINT WINAPI MsiProvideComponentFromDescriptorW(LPCWSTR szDescriptor, LPWSTR szPath, LPDWORD pcchPath, LPDWORD pcchArgs)
UINT WINAPI MsiReinstallFeatureW(const WCHAR *szProduct, const WCHAR *szFeature, DWORD dwReinstallMode)
UINT WINAPI MsiDeterminePatchSequenceW(const WCHAR *product, const WCHAR *usersid, MSIINSTALLCONTEXT context, DWORD count, MSIPATCHSEQUENCEINFOW *patchinfo)
UINT WINAPI Migrate10CachedPackagesW(void *a, void *b, void *c, DWORD d)
UINT WINAPI MsiApplyMultiplePatchesW(LPCWSTR szPatchPackages, LPCWSTR szProductCode, LPCWSTR szPropertiesList)
UINT WINAPI MsiEnumProductsW(DWORD index, WCHAR *lpguid)
UINT WINAPI MsiSourceListGetInfoW(LPCWSTR szProduct, LPCWSTR szUserSid, MSIINSTALLCONTEXT dwContext, DWORD dwOptions, LPCWSTR szProperty, LPWSTR szValue, LPDWORD pcchValue)
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)
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
HRESULT WINAPI CoInitialize(LPVOID lpReserved)
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
INT WINAPI StringFromGUID2(REFGUID id, LPOLESTR str, INT cmax)
BOOL WINAPI PathIsRelativeW(LPCWSTR lpszPath)
BOOL WINAPI GetFileVersionInfoW(LPCWSTR filename, DWORD handle, DWORD datasize, LPVOID data)
BOOL WINAPI VerQueryValueW(LPCVOID pBlock, LPCWSTR lpSubBlock, LPVOID *lplpBuffer, PUINT puLen)
DWORD WINAPI GetFileVersionInfoSizeW(LPCWSTR filename, LPDWORD handle)
GLuint GLuint GLsizei GLenum type
GLuint GLuint GLsizei count
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLdouble GLdouble GLdouble r
GLenum GLenum GLuint components
GLboolean GLboolean GLboolean b
GLenum GLuint GLenum GLsizei const GLchar * buf
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
GLuint GLsizei GLsizei * length
GLenum GLenum GLenum GLenum mapping
GLboolean GLboolean GLboolean GLboolean a
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
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 * u
HLOCAL NTAPI LocalFree(HLOCAL hMem)
LANGID WINAPI GetUserDefaultLangID(void)
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
#define memcpy(s1, s2, n)
#define ERROR_ALREADY_EXISTS
#define ERROR_FILE_NOT_FOUND
static const WCHAR desc[]
static LPWSTR PDWORD pcchPath
static const WCHAR szAttribute[]
INTERNETFEATURELIST feature
static const WCHAR INSTALLPROPERTY_PACKAGENAMEW[]
static const WCHAR INSTALLPROPERTY_INSTALLEDPRODUCTNAMEW[]
static const WCHAR INSTALLPROPERTY_PRODUCTSTATEW[]
enum tagMSIINSTALLCONTEXT MSIINSTALLCONTEXT
enum tagINSTALLTYPE INSTALLTYPE
@ INSTALLLOGATTRIBUTES_APPEND
static const WCHAR INSTALLPROPERTY_AUTHORIZED_LUA_APPW[]
static const WCHAR INSTALLPROPERTY_INSTALLLOCATIONW[]
static const WCHAR INSTALLPROPERTY_TRANSFORMSW[]
static const WCHAR INSTALLPROPERTY_PACKAGECODEW[]
enum tagUSERINFOSTATE USERINFOSTATE
INT(CALLBACK * INSTALLUI_HANDLERW)(LPVOID, UINT, LPCWSTR)
static const WCHAR INSTALLPROPERTY_URLINFOABOUTW[]
static const WCHAR INSTALLPROPERTY_HELPTELEPHONEW[]
static const WCHAR INSTALLPROPERTY_REGCOMPANYW[]
static const WCHAR INSTALLPROPERTY_UNINSTALLABLEW[]
static const WCHAR INSTALLPROPERTY_PUBLISHERW[]
static const WCHAR INSTALLPROPERTY_INSTALLSOURCEW[]
@ MSIPATCH_DATATYPE_XMLPATH
@ MSIPATCH_DATATYPE_PATCHFILE
@ MSIPATCH_DATATYPE_XMLBLOB
static const WCHAR INSTALLPROPERTY_URLUPDATEINFOW[]
static const WCHAR INSTALLPROPERTY_PRODUCTIDW[]
static const WCHAR INSTALLPROPERTY_VERSIONMAJORW[]
@ INSTALLTYPE_SINGLE_INSTANCE
@ INSTALLTYPE_NETWORK_IMAGE
@ REINSTALLMODE_MACHINEDATA
@ REINSTALLMODE_FILEREPLACE
@ REINSTALLMODE_FILEOLDERVERSION
@ REINSTALLMODE_FILEEXACT
@ REINSTALLMODE_FILEEQUALVERSION
@ REINSTALLMODE_FILEVERIFY
@ REINSTALLMODE_FILEMISSING
INT(CALLBACK * INSTALLUI_HANDLERA)(LPVOID, UINT, LPCSTR)
@ INSTALLMODE_NODETECTION
static const WCHAR INSTALLPROPERTY_LOCALPACKAGEW[]
static const WCHAR INSTALLPROPERTY_PATCHSTATEW[]
static const WCHAR INSTALLPROPERTY_PRODUCTNAMEW[]
static const WCHAR INSTALLPROPERTY_LASTUSEDSOURCEW[]
static const WCHAR INSTALLPROPERTY_DISPLAYNAMEW[]
static const WCHAR INSTALLPROPERTY_PRODUCTICONW[]
@ INSTALLSTATE_INVALIDARG
@ INSTALLSTATE_ADVERTISED
@ MSIINSTALLCONTEXT_MACHINE
@ MSIINSTALLCONTEXT_USERUNMANAGED
@ MSIINSTALLCONTEXT_USERMANAGED
@ USERINFOSTATE_INVALIDARG
static const WCHAR INSTALLPROPERTY_INSTALLDATEW[]
#define MAX_FEATURE_CHARS
static const WCHAR INSTALLPROPERTY_HELPLINKW[]
static const WCHAR INSTALLPROPERTY_INSTANCETYPEW[]
static const WCHAR INSTALLPROPERTY_VERSIONSTRINGW[]
static const WCHAR INSTALLPROPERTY_VERSIONW[]
#define ERROR_PATCH_TARGET_NOT_FOUND
INT(CALLBACK * INSTALLUI_HANDLER_RECORD)(LPVOID, UINT, MSIHANDLE)
static const WCHAR INSTALLPROPERTY_ASSIGNMENTTYPEW[]
enum tagINSTALLUILEVEL INSTALLUILEVEL
static const WCHAR INSTALLPROPERTY_REGOWNERW[]
static const WCHAR INSTALLPROPERTY_MOREINFOURLW[]
static const WCHAR INSTALLPROPERTY_VERSIONMINORW[]
@ INSTALLUILEVEL_ENDDIALOG
@ INSTALLUILEVEL_HIDECANCEL
@ INSTALLUILEVEL_SOURCERESONLY
@ INSTALLUILEVEL_PROGRESSONLY
@ INSTALLUILEVEL_NOCHANGE
static const WCHAR INSTALLPROPERTY_LANGUAGEW[]
INSTALLUI_HANDLERA gUIHandlerA
INSTALLUI_HANDLER_RECORD gUIHandlerRecord
INSTALLUI_HANDLERW gUIHandlerW
UINT MSI_ViewClose(MSIQUERY *) DECLSPEC_HIDDEN
#define INSTALLUILEVEL_MASK
UINT MSI_ViewFetch(MSIQUERY *, MSIRECORD **) DECLSPEC_HIDDEN
static void msi_free(void *mem)
UINT MSIREG_OpenUserDataComponentKey(LPCWSTR szComponent, LPCWSTR szUserSid, HKEY *key, BOOL create) DECLSPEC_HIDDEN
UINT MSIREG_OpenUserDataFeaturesKey(LPCWSTR szProduct, LPCWSTR szUserSid, MSIINSTALLCONTEXT context, HKEY *key, BOOL create) DECLSPEC_HIDDEN
UINT MSIREG_OpenProductKey(LPCWSTR szProduct, LPCWSTR szUserSid, MSIINSTALLCONTEXT context, HKEY *key, BOOL create) DECLSPEC_HIDDEN
UINT msi_check_patch_applicable(MSIPACKAGE *package, MSISUMMARYINFO *si) DECLSPEC_HIDDEN
BOOL squash_guid(LPCWSTR in, LPWSTR out) DECLSPEC_HIDDEN
BOOL decode_base85_guid(LPCWSTR, GUID *) DECLSPEC_HIDDEN
UINT MSIREG_OpenFeaturesKey(LPCWSTR szProduct, LPCWSTR szUserSid, MSIINSTALLCONTEXT context, HKEY *key, BOOL create) DECLSPEC_HIDDEN
BOOL unsquash_guid(LPCWSTR in, LPWSTR out) DECLSPEC_HIDDEN
UINT MSIREG_OpenUserComponentsKey(LPCWSTR szComponent, HKEY *key, BOOL create) DECLSPEC_HIDDEN
LPWSTR msi_reg_get_val_str(HKEY hkey, LPCWSTR name) DECLSPEC_HIDDEN
const WCHAR * MSI_RecordGetString(const MSIRECORD *, UINT) DECLSPEC_HIDDEN
static void * msi_alloc(size_t len) __WINE_ALLOC_SIZE(1)
UINT MSIREG_OpenUserDataProductKey(LPCWSTR szProduct, MSIINSTALLCONTEXT dwContext, LPCWSTR szUserSid, HKEY *key, BOOL create) DECLSPEC_HIDDEN
#define WINE_OPENPACKAGEFLAGS_RECACHE
int msi_get_property_int(MSIDATABASE *package, LPCWSTR prop, int def) DECLSPEC_HIDDEN
UINT msi_get_suminfo(IStorage *stg, UINT uiUpdateCount, MSISUMMARYINFO **si) DECLSPEC_HIDDEN
UINT MSIREG_OpenUserDataPatchKey(LPCWSTR szPatch, MSIINSTALLCONTEXT dwContext, HKEY *key, BOOL create) DECLSPEC_HIDDEN
LPWSTR msi_dup_property(MSIDATABASE *db, LPCWSTR prop) DECLSPEC_HIDDEN
UINT WINAPI MsiDecomposeDescriptorW(LPCWSTR, LPWSTR, LPWSTR, LPWSTR, LPDWORD)
#define MSIHANDLETYPE_PACKAGE
UINT WINAPIV MSI_OpenQuery(MSIDATABASE *, MSIQUERY **, LPCWSTR,...) DECLSPEC_HIDDEN
#define SQUASHED_GUID_SIZE
BOOL msi_reg_get_val_dword(HKEY hkey, LPCWSTR name, DWORD *val) DECLSPEC_HIDDEN
UINT MSIREG_OpenInstallProps(LPCWSTR szProduct, MSIINSTALLCONTEXT dwContext, LPCWSTR szUserSid, HKEY *key, BOOL create) DECLSPEC_HIDDEN
UINT MSI_ViewExecute(MSIQUERY *, MSIRECORD *) DECLSPEC_HIDDEN
UINT MSI_OpenPackageW(LPCWSTR szPackage, DWORD dwOptions, MSIPACKAGE **pPackage) DECLSPEC_HIDDEN
#define MSIDBOPEN_READONLY
_In_ HANDLE _In_ DWORD _In_ DWORD _Inout_opt_ LPOVERLAPPED _In_opt_ LPTRANSMIT_FILE_BUFFERS _In_ DWORD dwReserved
#define FILE_SHARE_DELETE
#define STGM_SHARE_DENY_WRITE
BSTR WINAPI SysAllocString(LPCOLESTR str)
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
const GUID IID_IPersistFile
static WCHAR szFilePath[]
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
#define GetExceptionCode()
#define EXP_DARWIN_ID_SIG
#define WINTRUST_ACTION_GENERIC_VERIFY_V2
WCHAR szwDarwinID[MAX_PATH]
CRYPT_DATA_BLOB EncryptedHash
CMSG_SIGNER_INFO * psSigner
#define INVALID_FILE_ATTRIBUTES
static const WCHAR lang[]
static const WCHAR props[]
DWORD WINAPI GetLastError(void)
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
#define ERROR_UNKNOWN_PRODUCT
#define ERROR_INSTALL_FAILURE
#define ERROR_PATH_NOT_FOUND
#define ERROR_UNKNOWN_PATCH
#define ERROR_BAD_PATHNAME
#define ERROR_UNKNOWN_COMPONENT
#define ERROR_INVALID_PATCH_XML
#define TRUST_E_PROVIDER_UNKNOWN
#define TRUST_E_NOSIGNATURE
#define ERROR_UNKNOWN_FEATURE
#define ERROR_INSTALL_PACKAGE_OPEN_FAILED
#define ERROR_INSTALL_SOURCE_ABSENT
#define ERROR_FILE_INVALID
#define HRESULT_FROM_WIN32(x)
#define ERROR_FUNCTION_FAILED
#define ERROR_UNKNOWN_PROPERTY
#define ERROR_BAD_CONFIGURATION
#define ERROR_FUNCTION_NOT_CALLED
#define ERROR_INDEX_ABSENT
#define ERROR_RESOURCE_DATA_NOT_FOUND
#define WTD_STATEACTION_CLOSE
#define WTD_STATEACTION_VERIFY
#define WTD_UICONTEXT_INSTALL
#define WTD_REVOKE_WHOLECHAIN
CRYPT_PROVIDER_CERT *WINAPI WTHelperGetProvCertFromChain(CRYPT_PROVIDER_SGNR *pSgnr, DWORD idxCert)
CRYPT_PROVIDER_SGNR *WINAPI WTHelperGetProvSignerFromChain(CRYPT_PROVIDER_DATA *pProvData, DWORD idxSigner, BOOL fCounterSigner, DWORD idxCounterSigner)
HRESULT WINAPI WinVerifyTrustEx(HWND hwnd, GUID *ActionID, WINTRUST_DATA *ActionData)
int WINAPI MessageBoxExW(_In_opt_ HWND hWnd, _In_opt_ LPCWSTR lpText, _In_opt_ LPCWSTR lpCaption, _In_ UINT uType, _In_ WORD wLanguageId)
int WINAPI MessageBoxExA(_In_opt_ HWND hWnd, _In_opt_ LPCSTR lpText, _In_opt_ LPCSTR lpCaption, _In_ UINT uType, _In_ WORD wLanguageId)