Commit b489ed44 authored by Misha Koshelev's avatar Misha Koshelev Committed by Alexandre Julliard

msi: automation: SummaryInfo::Property, remove all specific instances to PIDs.

parent 8b2d0d3e
...@@ -754,72 +754,66 @@ static HRESULT WINAPI SummaryInfoImpl_Invoke( ...@@ -754,72 +754,66 @@ static HRESULT WINAPI SummaryInfoImpl_Invoke(
{ {
UINT type; UINT type;
INT value; INT value;
INT pid; DWORD size = 0;
FILETIME ft, ftlocal;
SYSTEMTIME st;
DATE date;
LPWSTR str;
static WCHAR szEmpty[] = {0}; static WCHAR szEmpty[] = {0};
hr = DispGetParam(pDispParams, 0, VT_I4, &varg0, puArgErr); hr = DispGetParam(pDispParams, 0, VT_I4, &varg0, puArgErr);
if (FAILED(hr)) return hr; if (FAILED(hr)) return hr;
pid = V_I4(&varg0); ret = MsiSummaryInfoGetPropertyW(This->msiHandle, V_I4(&varg0), &type, &value,
&ft, szEmpty, &size);
if (ret != ERROR_SUCCESS &&
ret != ERROR_MORE_DATA)
{
ERR("MsiSummaryInfoGetProperty returned %d\n", ret);
return DISP_E_EXCEPTION;
}
if (pid == PID_CODEPAGE || (pid >= PID_PAGECOUNT && pid <= PID_CHARCOUNT) || pid == PID_SECURITY) switch (type)
{ {
if ((ret = MsiSummaryInfoGetPropertyW(This->msiHandle, pid, &type, &value, case VT_EMPTY:
NULL, NULL, NULL)) != ERROR_SUCCESS) break;
ERR("MsiSummaryInfoGetProperty returned %d\n", ret);
else if (type == VT_I2) case VT_I2:
{
V_VT(pVarResult) = VT_I2; V_VT(pVarResult) = VT_I2;
V_I2(pVarResult) = value; V_I2(pVarResult) = value;
} break;
else if (type == VT_I4)
{ case VT_I4:
V_VT(pVarResult) = VT_I4; V_VT(pVarResult) = VT_I4;
V_I4(pVarResult) = value; V_I4(pVarResult) = value;
} break;
}
else if ((pid >= PID_TITLE && pid <= PID_REVNUMBER) || pid == PID_APPNAME)
{
LPWSTR str;
DWORD size = 0;
if ((ret = MsiSummaryInfoGetPropertyW(This->msiHandle, pid, &type, NULL, case VT_LPSTR:
NULL, szEmpty, &size)) == ERROR_MORE_DATA)
{
if (!(str = msi_alloc(++size * sizeof(WCHAR)))) if (!(str = msi_alloc(++size * sizeof(WCHAR))))
ERR("Out of memory\n"); ERR("Out of memory\n");
else if ((ret = MsiSummaryInfoGetPropertyW(This->msiHandle, pid, &type, NULL, else if ((ret = MsiSummaryInfoGetPropertyW(This->msiHandle, V_I4(&varg0), &type, NULL,
NULL, str, &size)) == ERROR_SUCCESS) NULL, str, &size)) != ERROR_SUCCESS)
ERR("MsiSummaryInfoGetProperty returned %d\n", ret);
else
{ {
V_VT(pVarResult) = VT_BSTR; V_VT(pVarResult) = VT_BSTR;
V_BSTR(pVarResult) = SysAllocString(str); V_BSTR(pVarResult) = SysAllocString(str);
} }
msi_free(str); msi_free(str);
} break;
if (ret != ERROR_SUCCESS && ret != ERROR_MORE_DATA)
ERR("MsiSummaryInfoGetProperty returned %d\n", ret); case VT_FILETIME:
}
else if (pid >= PID_EDITTIME && pid <= PID_LASTSAVE_DTM)
{
FILETIME ft, ftlocal;
SYSTEMTIME st;
DATE date;
if ((ret = MsiSummaryInfoGetPropertyW(This->msiHandle, pid, &type, &value,
&ft, NULL, NULL)) != ERROR_SUCCESS)
ERR("MsiSummaryInfoGetProperty returned %d\n", ret);
else if (type == VT_FILETIME)
{
FileTimeToLocalFileTime(&ft, &ftlocal); FileTimeToLocalFileTime(&ft, &ftlocal);
FileTimeToSystemTime(&ftlocal, &st); FileTimeToSystemTime(&ftlocal, &st);
SystemTimeToVariantTime(&st, &date); SystemTimeToVariantTime(&st, &date);
V_VT(pVarResult) = VT_DATE; V_VT(pVarResult) = VT_DATE;
V_DATE(pVarResult) = date; V_DATE(pVarResult) = date;
} break;
default:
ERR("Unhandled variant type %d\n", type);
} }
else if (pid != PID_DICTIONARY && pid != PID_THUMBNAIL)
return DISP_E_EXCEPTION;
} }
else return DISP_E_MEMBERNOTFOUND; else return DISP_E_MEMBERNOTFOUND;
break; break;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment