msi: automation: SummaryInfo::Property, remove all specific instances to PIDs.
This commit is contained in:
parent
8b2d0d3e34
commit
b489ed4485
@ -754,73 +754,67 @@ 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 (pid == PID_CODEPAGE || (pid >= PID_PAGECOUNT && pid <= PID_CHARCOUNT) || pid == PID_SECURITY)
|
if (ret != ERROR_SUCCESS &&
|
||||||
|
ret != ERROR_MORE_DATA)
|
||||||
{
|
{
|
||||||
if ((ret = MsiSummaryInfoGetPropertyW(This->msiHandle, pid, &type, &value,
|
|
||||||
NULL, NULL, NULL)) != ERROR_SUCCESS)
|
|
||||||
ERR("MsiSummaryInfoGetProperty returned %d\n", ret);
|
ERR("MsiSummaryInfoGetProperty returned %d\n", ret);
|
||||||
else if (type == VT_I2)
|
return DISP_E_EXCEPTION;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (type)
|
||||||
{
|
{
|
||||||
|
case VT_EMPTY:
|
||||||
|
break;
|
||||||
|
|
||||||
|
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);
|
|
||||||
}
|
|
||||||
else if (pid >= PID_EDITTIME && pid <= PID_LASTSAVE_DTM)
|
|
||||||
{
|
|
||||||
FILETIME ft, ftlocal;
|
|
||||||
SYSTEMTIME st;
|
|
||||||
DATE date;
|
|
||||||
|
|
||||||
if ((ret = MsiSummaryInfoGetPropertyW(This->msiHandle, pid, &type, &value,
|
case VT_FILETIME:
|
||||||
&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;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user