diff --git a/dlls/msi/msi.c b/dlls/msi/msi.c index 7bb46207557..d478771e84d 100644 --- a/dlls/msi/msi.c +++ b/dlls/msi/msi.c @@ -222,8 +222,25 @@ end: UINT WINAPI MsiOpenProductA(LPCSTR szProduct, MSIHANDLE *phProduct) { - FIXME("%s %p\n",debugstr_a(szProduct), phProduct); - return ERROR_CALL_NOT_IMPLEMENTED; + UINT len, ret; + LPWSTR szwProd = NULL; + + TRACE("%s %p\n",debugstr_a(szProduct), phProduct); + + if( szProduct ) + { + len = MultiByteToWideChar( CP_ACP, 0, szProduct, -1, NULL, 0 ); + szwProd = HeapAlloc( GetProcessHeap(), 0, len * sizeof (WCHAR) ); + if( szwProd ) + MultiByteToWideChar( CP_ACP, 0, szProduct, -1, szwProd, len ); + } + + ret = MsiOpenProductW( szwProd, phProduct ); + + if( szwProd ) + HeapFree( GetProcessHeap(), 0, szwProd ); + + return ret; } UINT WINAPI MsiOpenProductW(LPCWSTR szProduct, MSIHANDLE *phProduct) @@ -721,6 +738,20 @@ HRESULT WINAPI MsiGetFileSignatureInformationW( return ERROR_CALL_NOT_IMPLEMENTED; } +UINT WINAPI MsiGetProductPropertyA( MSIHANDLE hProduct, LPCSTR szProperty, + LPSTR szValue, DWORD *pccbValue ) +{ + FIXME("%ld %s %p %p\n", hProduct, debugstr_a(szProperty), szValue, pccbValue); + return ERROR_CALL_NOT_IMPLEMENTED; +} + +UINT WINAPI MsiGetProductPropertyW( MSIHANDLE hProduct, LPCWSTR szProperty, + LPWSTR szValue, DWORD *pccbValue ) +{ + FIXME("%ld %s %p %p\n", hProduct, debugstr_w(szProperty), szValue, pccbValue); + return ERROR_CALL_NOT_IMPLEMENTED; +} + HRESULT WINAPI MSI_DllGetVersion(DLLVERSIONINFO *pdvi) { TRACE("%p\n",pdvi); diff --git a/dlls/msi/msi.spec b/dlls/msi/msi.spec index c3562fdf758..00a77dd5b0e 100644 --- a/dlls/msi/msi.spec +++ b/dlls/msi/msi.spec @@ -47,15 +47,15 @@ 47 stub MsiEvaluateConditionW 48 stub MsiGetLastErrorRecord 49 stub MsiGetActiveDatabase -50 stub MsiGetComponentStateA -51 stub MsiGetComponentStateW +50 stdcall MsiGetComponentStateA(long str ptr ptr) +51 stdcall MsiGetComponentStateW(long wstr ptr ptr) 52 stub MsiGetDatabaseState 53 stub MsiGetFeatureCostA 54 stub MsiGetFeatureCostW 55 stub MsiGetFeatureInfoA 56 stub MsiGetFeatureInfoW -57 stub MsiGetFeatureStateA -58 stub MsiGetFeatureStateW +57 stdcall MsiGetFeatureStateA(long str ptr ptr) +58 stdcall MsiGetFeatureStateW(long wstr ptr ptr) 59 stub MsiGetFeatureUsageA 60 stub MsiGetFeatureUsageW 61 stub MsiGetFeatureValidStatesA @@ -68,8 +68,8 @@ 68 stub MsiGetProductInfoFromScriptA 69 stub MsiGetProductInfoFromScriptW 70 stdcall MsiGetProductInfoW(wstr wstr wstr long) -71 stub MsiGetProductPropertyA -72 stub MsiGetProductPropertyW +71 stdcall MsiGetProductPropertyA(long str ptr ptr) +72 stdcall MsiGetProductPropertyW(long wstr ptr ptr) 73 stub MsiGetPropertyA 74 stub MsiGetPropertyW 75 stub MsiGetSourcePathA diff --git a/dlls/msi/msiquery.c b/dlls/msi/msiquery.c index 56192466f1c..ee53639b0f3 100644 --- a/dlls/msi/msiquery.c +++ b/dlls/msi/msiquery.c @@ -378,3 +378,32 @@ UINT WINAPI MsiDatabaseGetPrimaryKeysW(MSIHANDLE hdb, FIXME("%ld %s %p\n", hdb, debugstr_w(table), rec); return ERROR_CALL_NOT_IMPLEMENTED; } + +UINT WINAPI MsiGetFeatureStateA(MSIHANDLE hInstall, LPSTR szFeature, + INSTALLSTATE *piInstalled, INSTALLSTATE *piAction) +{ + FIXME("%ld %s %p %p\n", hInstall, debugstr_a(szFeature), piInstalled, piAction); + return ERROR_CALL_NOT_IMPLEMENTED; +} + +UINT WINAPI MsiGetFeatureStateW(MSIHANDLE hInstall, LPWSTR szFeature, + INSTALLSTATE *piInstalled, INSTALLSTATE *piAction) +{ + FIXME("%ld %s %p %p\n", hInstall, debugstr_w(szFeature), piInstalled, piAction); + return ERROR_CALL_NOT_IMPLEMENTED; +} + +UINT WINAPI MsiGetComponentStateA(MSIHANDLE hInstall, LPSTR szFeature, + INSTALLSTATE *piInstalled, INSTALLSTATE *piAction) +{ + FIXME("%ld %s %p %p\n", hInstall, debugstr_a(szFeature), piInstalled, piAction); + return ERROR_CALL_NOT_IMPLEMENTED; +} + +UINT WINAPI MsiGetComponentStateW(MSIHANDLE hInstall, LPWSTR szFeature, + INSTALLSTATE *piInstalled, INSTALLSTATE *piAction) +{ + FIXME("%ld %s %p %p\n", hInstall, debugstr_w(szFeature), piInstalled, piAction); + return ERROR_CALL_NOT_IMPLEMENTED; +} + diff --git a/include/msi.h b/include/msi.h index 40d43a9fd53..d83a345fde7 100644 --- a/include/msi.h +++ b/include/msi.h @@ -80,6 +80,10 @@ UINT WINAPI MsiOpenPackageA(LPCSTR, MSIHANDLE*); UINT WINAPI MsiOpenPackageW(LPCWSTR, MSIHANDLE*); #define MsiOpenPackage WINELIB_NAME_AW(MsiOpenPackage) +UINT WINAPI MsiOpenProductA(LPCSTR, MSIHANDLE*); +UINT WINAPI MsiOpenProductW(LPCWSTR, MSIHANDLE*); +#define MsiOpenProduct WINELIB_NAME_AW(MsiOpenProduct) + UINT WINAPI MsiGetSummaryInformationA(MSIHANDLE, LPCSTR, UINT, MSIHANDLE *); UINT WINAPI MsiGetSummaryInformationW(MSIHANDLE, LPCWSTR, UINT, MSIHANDLE *); #define MsiGetSummaryInformation WINELIB_NAME_AW(MsiGetSummaryInformation)