148 if (!szProduct || !
squash_guid( szProduct, squashed_pc ))
231 const WCHAR *reinstallmode;
248 if (reinstallmode[--
len] ==
'v' || reinstallmode[
len] ==
'V')
297 if (szPatchPackage && !(patch_package =
strdupAtoW(szPatchPackage)))
300 if (szInstallPackage && !(install_package =
strdupAtoW(szInstallPackage)))
303 if (szCommandLine && !(command_line =
strdupAtoW(szCommandLine)))
306 r =
MsiApplyPatchW(patch_package, install_package, eInstallType, command_line);
310 free(install_package);
336 ERR(
"Failed to read product codes from patch\n");
363 LPCWSTR cmd_ptr = szCommandLine;
367 if (!szPatchPackage || !szPatchPackage[0])
389 for (
i = 0; codes[
i];
i++)
394 TRACE(
"patch applied\n");
417 FIXME(
"Only reading target products from patch\n");
435 if (!szPatchPackages || !szPatchPackages[0])
438 if (!(patch_packages =
strdupAtoW(szPatchPackages)))
441 if (szProductCode && !(product_code =
strdupAtoW(szProductCode)))
444 if (szPropertiesList && !(properties_list =
strdupAtoW(szPropertiesList)))
450 free(patch_packages);
452 free(properties_list);
466 if (!szPatchPackages || !szPatchPackages[0])
469 beg =
end = szPatchPackages;
475 while (*beg ==
' ') beg++;
479 while (
len && beg[
len - 1] ==
' ')
len--;
521 ret[
i].ePatchDataType =
info[
i].ePatchDataType;
535 TRACE(
"%s, %lu, %p\n",
debugstr_a(szProductPackagePath), cPatchInfo, pPatchInfo );
537 if (szProductPackagePath && !(package_path =
strdupAtoW( szProductPackagePath )))
542 free( package_path );
548 for (
i = 0;
i < cPatchInfo;
i++)
554 free( package_path );
581 TRACE(
"patch not applicable\n");
602 ERR(
"no product code to check\n");
607 hr = IXMLDOMDocument_selectNodes(
desc,
s, &
list );
614 hr = IXMLDOMNode_get_text(
node, &
s );
615 IXMLDOMNode_Release(
node );
622 IXMLDOMNodeList_Release(
list );
625 TRACE(
"patch not applicable\n");
627 free( product_code );
637 FIXME(
"patch ordering not supported\n");
641 switch (
info[
i].ePatchDataType)
667 &IID_IXMLDOMDocument, (
void**)&
desc );
670 ERR(
"failed to create DOMDocument30 instance, %#lx\n",
hr );
685 hr = IXMLDOMDocument_loadXML(
desc,
s, &
b );
689 ERR(
"failed to parse patch description\n");
690 IXMLDOMDocument_Release(
desc );
708 FIXME(
"unknown patch data type %u\n",
info[
i].ePatchDataType);
716 TRACE(
"ePatchDataType: %u\n",
info[
i].ePatchDataType);
721 if (
desc) IXMLDOMDocument_Release(
desc );
732 TRACE(
"%s, %lu, %p\n",
debugstr_w(szProductPackagePath), cPatchInfo, pPatchInfo );
737 ERR(
"failed to open package %u\n",
r);
756 if (usersid && !(usersidW =
strdupAtoW( usersid )))
800 DWORD sz =
sizeof(sourcepath);
841 TRACE(
"%s %d %d %s\n",
debugstr_w(szProduct), iInstallLevel, eInstallState,
850 FIXME(
"State %d not implemented\n", eInstallState);
885 lstrcpyW(commandline, szCommandLine);
888 lstrcatW(commandline,
L" INSTALLLEVEL=32767");
896 sz =
sizeof(sourcepath);
941 free( szwCommandLine);
952 TRACE(
"%s %d %d\n",
debugstr_a(szProduct), iInstallLevel, eInstallState);
994 free( szwComponent );
1002 HKEY compkey, prodkey;
1008 if (!szComponent || !*szComponent)
1084 ERR(
"unhandled value type %lu\n", *
type );
1230 if (szValue->
str.
a || szValue->
str.
w)
1240 *pcchValueBuf =
len;
1262 szBuffer, pcchValueBuf);
1265 if( szProduct && !szwProduct )
1280 free( szwAttribute );
1291 szBuffer, pcchValueBuf);
1313 szValue, pcchValue);
1315 if (szValue && !pcchValue)
1318 if (szProductCode) product =
strdupAtoW(szProductCode);
1319 if (szUserSid) usersid =
strdupAtoW(szUserSid);
1320 if (szProperty)
property =
strdupAtoW(szProperty);
1343 if (*pcchValue >=
len)
1352 if (*pcchValue <=
len || !szValue)
1355 *pcchValue =
len - 1;
1403 szValue, pcchValue);
1405 if (!szProductCode || !
squash_guid( szProductCode, squashed_pc ))
1408 if (szValue && !pcchValue)
1416 if (!szProperty || !*szProperty)
1432 package = INSTALLPROPERTY_LOCALPACKAGEW;
1434 if (!
props && !prod)
1439 package = L"ManagedLocalPackage";
1441 if (!
props && !managed)
1446 package = INSTALLPROPERTY_LOCALPACKAGEW;
1449 if (!
props && !classes)
1474 if (prod || classes)
1483 szProperty =
L"DisplayName";
1485 szProperty =
L"DisplayVersion";
1502 if (!prod && !classes)
1545 if (prod || managed)
1554 if (!prod && !classes)
1578 debugstr_a(szPatchList), pcFiles, pphFileRecords);
1586 debugstr_w(szPatchList), pcFiles, pphFileRecords);
1603 if (lpValue && !pcchValue)
1606 if (szPatchCode) patch =
strdupAtoW(szPatchCode);
1607 if (szProductCode) product =
strdupAtoW(szProductCode);
1608 if (szUserSid) usersid =
strdupAtoW(szUserSid);
1609 if (szProperty)
property =
strdupAtoW(szProperty);
1634 if ((*
val && *pcchValue <
len + 1) || !lpValue)
1639 lpValue[*pcchValue - 1] =
'\0';
1663 HKEY patch = 0, patches = 0;
1664 HKEY udpatch = 0, datakey = 0;
1665 HKEY prodpatches = 0;
1674 if (!szProductCode || !
squash_guid( szProductCode, squashed_pc ))
1677 if (!szPatchCode || !
squash_guid( szPatchCode, squashed_patch ))
1683 if (lpValue && !pcchValue)
1694 if (szUserSid && !
wcscmp( szUserSid,
L"S-1-5-18" ))
1725 datakey = prodpatches;
1726 szProperty = squashed_patch;
1737 szProperty =
L"ManagedLocalPackage";
1743 szProperty =
L"Installed";
1772 if ((*
val && *pcchValue <
len + 1) || !lpValue)
1803 if (!patch || !
attr)
1851 if (!patch || !
attr)
1887 TRACE(
"%#lx, %s, %#lx\n", dwLogMode,
debugstr_a(szLogFile), attributes );
1902 TRACE(
"%#lx, %s, %#lx\n", dwLogMode,
debugstr_w(szLogFile), attributes );
1932 TRACE(
"%lu, %s, %lu, %d, %p, %p, %p, %p\n",
handle,
debugstr_a(component),
index,
state,
drive, buflen, cost,
1972 TRACE(
"%lu, %s, %lu, %d, %p, %p, %p, %p\n",
handle,
debugstr_w(component),
index,
state,
drive, buflen, cost,
2029 if (component && component[0])
2065 if (szProductCode && !(prodcode =
strdupAtoW(szProductCode)))
2068 if (szUserSid && !(usersid =
strdupAtoW(szUserSid)))
2071 if (szComponent && !(comp =
strdupAtoW(szComponent)))
2106 package = L"ManagedLocalPackage";
2108 package = L"LocalPackage";
2151 if (!pdwState || !szComponent)
2154 if (!szProductCode || !*szProductCode ||
lstrlenW(szProductCode) !=
GUID_SIZE - 1)
2194 val[0] >=
'0' &&
val[0] <=
'9' &&
val[1] >=
'0' &&
val[1] <=
'9' &&
val[2] !=
':')
2203 TRACE(
"-> %d\n", *pdwState);
2227 HKEY prodkey = 0, userdata = 0;
2233 if (!szProduct || !*szProduct)
2239 if (szProduct[0] !=
'{' || szProduct[37] !=
'}')
2286 TRACE(
"%08x %p\n", dwUILevel, phWnd);
2291 FIXME(
"Unrecognized flags %08x\n", dwUILevel);
2310 TRACE(
"%p, %#lx, %p\n", puiHandler, dwMessageFilter, pvContext );
2324 TRACE(
"%p, %#lx, %p\n", puiHandler, dwMessageFilter, pvContext );
2369 FIXME(
"don't know how to deal with handle = %lu\n",
handle );
2384 for (
i = 0;
i < (
id & 0xf);
i++)
p += *
p + 1;
2387 if( nBufferMax <=
len )
2409 if(
len <= nBufferMax )
2426 if (!szComponent || !pcchBuf)
2442 if (!szComponent || !pcchBuf)
2454 FIXME(
"%p, %s, %s, %u, %#x, %#lx\n",
hWnd,
debugstr_a(lpText),
debugstr_a(lpCaption), uType, wLanguageId,
f );
2461 FIXME(
"%p, %s, %s, %u, %#x %#lx\n",
hWnd,
debugstr_w(lpText),
debugstr_w(lpCaption), uType, wLanguageId,
f );
2468 FIXME(
"%p, %s, %s, %u, %#lx, %#x, %#lx): semi-stub\n",
hWnd,
debugstr_a(lpText),
debugstr_a(lpCaption), uType,
2476 FIXME(
"%p, %s, %s, %u, %#lx, %#x, %#lx): semi-stub\n",
hWnd,
debugstr_w(lpText),
debugstr_w(lpCaption), uType,
2482 DWORD dwAssemblyInfo,
char *lpPathBuf,
DWORD *pcchPathBuf )
2485 dwAssemblyInfo, lpPathBuf, pcchPathBuf );
2493 dwAssemblyInfo, lpPathBuf, pcchPathBuf );
2596 TRACE(
"%lu, %s, %p, %p\n", hProduct,
debugstr_a(szProperty), szValue, pccbValue );
2598 if (szValue && !pccbValue)
2601 if (szProperty) prop =
strdupAtoW(szProperty);
2610 if (szValue) *szValue =
'\0';
2611 if (pccbValue) *pccbValue = 0;
2634 if (
len > *pccbValue)
2637 *pccbValue =
len - 1;
2658 TRACE(
"%lu, %s, %p, %p)\n", hProduct,
debugstr_w(szProperty), szValue, pccbValue );
2663 if (szValue && !pccbValue)
2666 package = msihandle2msiinfo(hProduct, MSIHANDLETYPE_PACKAGE);
2670 r =
MSI_OpenQuery(package->
db, &
view,
L"SELECT * FROM `Property` WHERE `Property` = '%s'", szProperty);
2709 if (szValue) *szValue =
'\0';
2710 if (pccbValue) *pccbValue = 0;
2761 if (usersid && !
wcsicmp( usersid,
L"S-1-1-0" ))
2763 FIXME(
"only looking at the current user\n" );
2780 if (!szProduct || !szComponent)
2783 if (lpPathBuf->
str.
w && !pcchBuf)
2872 if (usersid && !(usersidW =
strdupAtoW( usersid )))
goto end;
2967 path[0] >=
'0' &&
path[0] <=
'9' &&
2994 if (usersid && !(usersidW =
strdupAtoW( usersid )))
3029 if ( szProduct && !szwProduct )
3033 if ( szFeature && !szwFeature )
3070 if (!szProduct || !szFeature || !
squash_guid( szProduct, squashed ))
3094 if ((lpVersionBuf && !pcchVersionBuf) ||
3095 (lpLangBuf && !pcchLangBuf))
3105 if( lpVersionBuf && pcchVersionBuf && *pcchVersionBuf )
3107 lpwVersionBuff =
malloc(*pcchVersionBuf *
sizeof(
WCHAR));
3108 if( !lpwVersionBuff )
3112 if( lpLangBuf && pcchLangBuf && *pcchLangBuf )
3114 lpwLangBuff =
malloc(*pcchLangBuf *
sizeof(
WCHAR));
3120 lpwLangBuff, pcchLangBuf);
3124 lpVersionBuf, *pcchVersionBuf + 1,
NULL,
NULL);
3127 lpLangBuf, *pcchLangBuf + 1,
NULL,
NULL);
3131 free(lpwVersionBuff);
3161 if (!verbuf && !verlen && !langbuf && !langlen)
3171 HIWORD(ffi->dwFileVersionMS),
LOWORD(ffi->dwFileVersionMS),
3172 HIWORD(ffi->dwFileVersionLS),
LOWORD(ffi->dwFileVersionLS) );
3173 if (verbuf)
lstrcpynW( verbuf, tmp, *verlen );
3180 if (verbuf) *verbuf = 0;
3189 if (langbuf)
lstrcpynW( langbuf, tmp, *langlen );
3196 if (langbuf) *langbuf = 0;
3212 TRACE(
"%s, %p(%lu), %p(%lu)\n",
debugstr_w(
path), verbuf, verlen ? *verlen : 0, langbuf, langlen ? *langlen : 0 );
3214 if ((verbuf && !verlen) || (langbuf && !langlen))
3243 pdwUseCount, pwDateUsed);
3257 pdwUseCount, pwDateUsed);
3260 if (szProduct && !prod)
3264 if (szFeature && !feat)
3293 FIXME(
"mark product %s feature %s as used\n",
3312 if (szProduct && !prod)
3316 if (szFeature && !feat)
3362#define BASE85_SIZE 20
3390 if (!szProduct) szProduct = product;
3428 DWORD *pcchPathBuf )
3432 TRACE(
"%s, %s, %lu, %s, %#lx, %#lx, %p, %p\n",
debugstr_w(szComponent),
debugstr_w(szQualifier), dwInstallMode,
3433 debugstr_w(szProduct), Unused1, Unused2, lpPathBuf, pcchPathBuf );
3436 path.str.w = lpPathBuf;
3439 &
path, pcchPathBuf );
3446 const char *szProduct,
DWORD Unused1,
DWORD Unused2,
char *lpPathBuf,
3447 DWORD *pcchPathBuf )
3449 WCHAR *szwComponent, *szwQualifier =
NULL, *szwProduct =
NULL;
3453 TRACE(
"%s, %s, %lu, %s, %#lx, %#lx, %p, %p\n",
debugstr_a(szComponent),
debugstr_a(szQualifier), dwInstallMode,
3454 debugstr_a(szProduct), Unused1, Unused2, lpPathBuf, pcchPathBuf );
3457 if (szComponent && !szwComponent)
3461 if (szQualifier && !szwQualifier)
3465 if (szProduct && !szwProduct)
3469 path.str.a = lpPathBuf;
3472 dwInstallMode, szwProduct, Unused1,
3473 Unused2, &
path, pcchPathBuf);
3490 dwInstallMode,
NULL, 0, 0, lpPathBuf, pcchPathBuf);
3501 dwInstallMode,
NULL, 0, 0, lpPathBuf, pcchPathBuf);
3519 pcchUserNameBuf, lpOrgNameBuf, pcchOrgNameBuf, lpSerialBuf,
3522 if (!szProduct || !
squash_guid( szProduct, squashed_pc ))
3555 if (pcchUserNameBuf)
3557 if (lpUserNameBuf && !
user)
3559 (*pcchUserNameBuf)--;
3574 if (!orgptr) orgptr =
L"";
3615 if ((lpUserNameBuf && !pcchUserNameBuf) ||
3616 (lpOrgNameBuf && !pcchOrgNameBuf) ||
3617 (lpSerialBuf && !pcchSerialBuf))
3621 user.str.w = lpUserNameBuf;
3623 org.str.w = lpOrgNameBuf;
3625 serial.str.w = lpSerialBuf;
3628 &
org, pcchOrgNameBuf,
3629 &
serial, pcchSerialBuf );
3641 if ((lpUserNameBuf && !pcchUserNameBuf) ||
3642 (lpOrgNameBuf && !pcchOrgNameBuf) ||
3643 (lpSerialBuf && !pcchSerialBuf))
3647 if (szProduct && !prod)
3651 user.str.a = lpUserNameBuf;
3653 org.str.a = lpOrgNameBuf;
3655 serial.str.a = lpSerialBuf;
3658 &
org, pcchOrgNameBuf,
3659 &
serial, pcchSerialBuf );
3679 package = msihandle2msiinfo(handle, MSIHANDLETYPE_PACKAGE);
3704 package = msihandle2msiinfo(handle, MSIHANDLETYPE_PACKAGE);
3727 if (szProduct && !prod)
3731 if (szFeature && !feat)
3755 if (!szProduct || !szFeature)
3758 switch (eInstallState)
3777 sz =
sizeof(sourcepath);
3838 LPSTR szComponentCode )
3846 if (szShortcutTarget && !
target )
3875 szProductCode, szFeatureId, szComponentCode );
3883 r = IPersistFile_Load( pf, szShortcutTarget,
3887 r = IPersistFile_QueryInterface( pf, &IID_IShellLinkDataList,
3893 IShellLinkDataList_Release( dl );
3896 IPersistFile_Release( pf );
3902 TRACE(
"darwin = %p\n", darwin);
3910 szProductCode, szFeatureId, szComponentCode, &sz );
3933 ptr = reinstallmode;
3957 sz =
sizeof(sourcepath);
3980 swprintf(
cmdline, sz /
sizeof(
WCHAR),
L"%s=%s %s=%s",
L"REINSTALLMODE", reinstallmode,
L"REINSTALL", szFeature );
3991 WCHAR *wszProduct, *wszFeature;
4011 unsigned char digest[16];
4129 FIXME(
"%s %p - stub\n",
4140 FIXME(
"%s %p - stub\n",
4174 if (product && !(productW =
strdupAtoW( product )))
4177 if (component && !(componentW =
strdupAtoW( component )))
4206 TRACE(
"%s, %s, %s, %#lx, %p, %p\n",
debugstr_a(product),
debugstr_a(component),
debugstr_a(
feature),
mode,
4209 if (product && !(productW =
strdupAtoW( product )))
goto done;
4211 if (component && !(componentW =
strdupAtoW( component )))
goto done;
4251 TRACE(
"%s, %s, %s, %#lx, %p, %p\n",
debugstr_w(product),
debugstr_w(component),
debugstr_w(
feature),
mode,
4262 FIXME(
"mode %#lx not implemented\n",
mode );
4283 TRACE(
"MsiGetComponentPathW returned %d\n",
state);
4315 *
event = (
HANDLE)0xdeadbeef;
4327 *
event = (
HANDLE)0xdeadbeef;
4342 FIXME(
"%p, %p, %p, %#lx\n",
a,
b,
c,
d );
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
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)
LANGID WINAPI GetUserDefaultLangID(void)
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)
void WINAPI MD5Update(struct md5_ctx *, const unsigned char *, unsigned int)
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)
void WINAPI MD5Init(struct md5_ctx *)
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)
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)
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(struct md5_ctx *)
static UINT copy_outval(const WCHAR *val, WCHAR *out, DWORD *size)
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)
UINT WINAPI MsiDeterminePatchSequenceA(const char *product, const char *usersid, MSIINSTALLCONTEXT context, DWORD count, MSIPATCHSEQUENCEINFOA *patchinfo)
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)
static BOOL comp_find_prod_key(const WCHAR *prodcode, MSIINSTALLCONTEXT context)
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)
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)
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 comp_find_prodcode(const WCHAR *squashed_pc, MSIINSTALLCONTEXT context, const WCHAR *comp, WCHAR *val, DWORD *sz)
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)
static BOOL comp_find_package(const WCHAR *prodcode, MSIINSTALLCONTEXT context)
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 count
GLuint GLuint GLsizei GLenum type
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)
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 tagINSTALLTYPE INSTALLTYPE
@ INSTALLLOGATTRIBUTES_APPEND
static const WCHAR INSTALLPROPERTY_AUTHORIZED_LUA_APPW[]
static const WCHAR INSTALLPROPERTY_INSTALLLOCATIONW[]
enum tagMSIINSTALLCONTEXT MSIINSTALLCONTEXT
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
BOOL unsquash_guid(LPCWSTR in, LPWSTR out)
UINT msi_check_patch_applicable(MSIPACKAGE *package, MSISUMMARYINFO *si)
UINT MSI_ViewExecute(MSIQUERY *, MSIRECORD *)
UINT MSIREG_OpenProductKey(LPCWSTR szProduct, LPCWSTR szUserSid, MSIINSTALLCONTEXT context, HKEY *key, BOOL create)
static int cost_from_size(int size)
BOOL squash_guid(LPCWSTR in, LPWSTR out)
#define INSTALLUILEVEL_MASK
UINT MSIREG_OpenUserDataComponentKey(LPCWSTR szComponent, LPCWSTR szUserSid, HKEY *key, BOOL create)
UINT MSIREG_OpenInstallProps(LPCWSTR szProduct, MSIINSTALLCONTEXT dwContext, LPCWSTR szUserSid, HKEY *key, BOOL create)
BOOL decode_base85_guid(LPCWSTR, GUID *)
UINT MSI_ViewClose(MSIQUERY *)
int msi_get_property_int(MSIDATABASE *package, LPCWSTR prop, int def)
UINT MSIREG_OpenUserComponentsKey(LPCWSTR szComponent, HKEY *key, BOOL create)
const WCHAR * MSI_RecordGetString(const MSIRECORD *, UINT)
UINT WINAPIV MSI_OpenQuery(MSIDATABASE *, MSIQUERY **, LPCWSTR,...)
UINT MSIREG_OpenFeaturesKey(LPCWSTR szProduct, LPCWSTR szUserSid, MSIINSTALLCONTEXT context, HKEY *key, BOOL create)
BOOL msi_reg_get_val_dword(HKEY hkey, LPCWSTR name, DWORD *val)
#define WINE_OPENPACKAGEFLAGS_RECACHE
WCHAR * msi_dup_property(MSIDATABASE *db, const WCHAR *prop)
UINT MSI_ViewFetch(MSIQUERY *, MSIRECORD **)
UINT MSIREG_OpenUserDataPatchKey(LPCWSTR szPatch, MSIINSTALLCONTEXT dwContext, HKEY *key, BOOL create)
UINT MSIREG_OpenUserDataProductKey(LPCWSTR szProduct, MSIINSTALLCONTEXT dwContext, LPCWSTR szUserSid, HKEY *key, BOOL create)
WCHAR * msi_reg_get_val_str(HKEY hkey, const WCHAR *name)
UINT MSIREG_OpenUserDataFeaturesKey(LPCWSTR szProduct, LPCWSTR szUserSid, MSIINSTALLCONTEXT context, HKEY *key, BOOL create)
UINT WINAPI MsiDecomposeDescriptorW(LPCWSTR, LPWSTR, LPWSTR, LPWSTR, LPDWORD)
UINT msi_get_suminfo(IStorage *stg, UINT uiUpdateCount, MSISUMMARYINFO **si)
#define MSIHANDLETYPE_PACKAGE
#define SQUASHED_GUID_SIZE
UINT MSI_OpenPackageW(LPCWSTR szPackage, DWORD dwOptions, MSIPACKAGE **pPackage)
#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[]
#define GetExceptionCode()
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
_Check_return_ _CRTIMP wchar_t *__cdecl wcsdup(_In_z_ const wchar_t *_Str)
#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[]
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
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)