msi: Use MSI_QueryGetRecord in ACTION_AppSearchComponents.

This commit is contained in:
Mike McCormack 2006-11-27 18:03:55 +09:00 committed by Alexandre Julliard
parent a1c969ee23
commit fa6bc9e50b
1 changed files with 22 additions and 55 deletions

View File

@ -154,67 +154,34 @@ static void ACTION_FreeSignature(MSISIGNATURE *sig)
msi_free(sig->Languages); msi_free(sig->Languages);
} }
static UINT ACTION_AppSearchComponents(MSIPACKAGE *package, LPWSTR *appValue, static UINT ACTION_AppSearchComponents(MSIPACKAGE *package, LPWSTR *appValue, MSISIGNATURE *sig)
MSISIGNATURE *sig)
{ {
MSIQUERY *view; static const WCHAR query[] = {
UINT rc;
static const WCHAR ExecSeqQuery[] = {
's','e','l','e','c','t',' ','*',' ', 's','e','l','e','c','t',' ','*',' ',
'f','r','o','m',' ', 'f','r','o','m',' ',
'C','o','m','p','L','o','c','a','t','o','r',' ', 'C','o','m','p','L','o','c','a','t','o','r',' ',
'w','h','e','r','e',' ','S','i','g','n','a','t','u','r','e','_',' ','=',' ', 'w','h','e','r','e',' ','S','i','g','n','a','t','u','r','e','_',' ','=',' ',
'\'','%','s','\'',0}; '\'','%','s','\'',0};
MSIRECORD *row;
LPWSTR guid;
TRACE("%s\n", debugstr_w(sig->Name));
TRACE("(package %p, appValue %p, sig %p)\n", package, appValue, sig);
*appValue = NULL; *appValue = NULL;
rc = MSI_OpenQuery(package->db, &view, ExecSeqQuery, sig->Name);
if (rc == ERROR_SUCCESS)
{
MSIRECORD *row = 0;
WCHAR guid[50];
DWORD sz;
rc = MSI_ViewExecute(view, 0); row = MSI_QueryGetRecord( package->db, query, sig->Name );
if (rc != ERROR_SUCCESS) if (!row)
{ {
TRACE("MSI_ViewExecute returned %d\n", rc); TRACE("failed to query CompLocator for %s\n", debugstr_w(sig->Name));
goto end; return ERROR_SUCCESS;
}
rc = MSI_ViewFetch(view,&row);
if (rc != ERROR_SUCCESS)
{
TRACE("MSI_ViewFetch returned %d\n", rc);
rc = ERROR_SUCCESS;
goto end;
} }
/* get GUID */ guid = msi_dup_record_field( row, 2 );
guid[0] = 0; FIXME("AppSearch CompLocator (%s) unimplemented\n", debugstr_w(guid));
sz=sizeof(guid)/sizeof(guid[0]); msi_free( guid );
rc = MSI_RecordGetStringW(row,2,guid,&sz);
if (rc != ERROR_SUCCESS)
{
ERR("Error is %x\n",rc);
goto end;
}
FIXME("AppSearch unimplemented for CompLocator table (GUID %s)\n",
debugstr_w(guid));
end:
if (row)
msiobj_release( &row->hdr ); msiobj_release( &row->hdr );
MSI_ViewClose(view);
msiobj_release(&view->hdr);
}
else
{
TRACE("MSI_OpenQuery returned %d\n", rc);
rc = ERROR_SUCCESS;
}
TRACE("returning %d\n", rc); return ERROR_SUCCESS;
return rc;
} }
static void ACTION_ConvertRegValue(DWORD regType, const BYTE *value, DWORD sz, static void ACTION_ConvertRegValue(DWORD regType, const BYTE *value, DWORD sz,