James Hawkins : msi: Use a SQL marker to query the _Property table when fetching a property.
Alexandre Julliard
julliard at winehq.org
Mon Mar 2 09:01:42 CST 2009
Module: wine
Branch: master
Commit: 293bdffa29f5daba1195ad761de7e646bf6c1db0
URL: http://source.winehq.org/git/wine.git/?a=commit;h=293bdffa29f5daba1195ad761de7e646bf6c1db0
Author: James Hawkins <truiken at gmail.com>
Date: Mon Mar 2 02:33:56 2009 -0800
msi: Use a SQL marker to query the _Property table when fetching a property.
---
dlls/msi/package.c | 24 ++++++++++++++++++++++--
1 files changed, 22 insertions(+), 2 deletions(-)
diff --git a/dlls/msi/package.c b/dlls/msi/package.c
index f662fe0..7172ff4 100644
--- a/dlls/msi/package.c
+++ b/dlls/msi/package.c
@@ -1403,16 +1403,36 @@ UINT WINAPI MsiSetPropertyW( MSIHANDLE hInstall, LPCWSTR szName, LPCWSTR szValue
static MSIRECORD *MSI_GetPropertyRow( MSIPACKAGE *package, LPCWSTR name )
{
+ MSIQUERY *view;
+ MSIRECORD *rec, *row = NULL;
+ UINT r;
+
static const WCHAR query[]= {
'S','E','L','E','C','T',' ','`','V','a','l','u','e','`',' ',
'F','R','O','M',' ' ,'`','_','P','r','o','p','e','r','t','y','`',
' ','W','H','E','R','E',' ' ,'`','_','P','r','o','p','e','r','t','y','`',
- '=','\'','%','s','\'',0};
+ '=','?',0};
if (!name || !*name)
return NULL;
- return MSI_QueryGetRecord( package->db, query, name );
+ rec = MSI_CreateRecord(1);
+ if (!rec)
+ return NULL;
+
+ MSI_RecordSetStringW(rec, 1, name);
+
+ r = MSI_DatabaseOpenViewW(package->db, query, &view);
+ if (r == ERROR_SUCCESS)
+ {
+ MSI_ViewExecute(view, rec);
+ MSI_ViewFetch(view, &row);
+ MSI_ViewClose(view);
+ msiobj_release(&view->hdr);
+ }
+
+ msiobj_release(&rec->hdr);
+ return row;
}
/* internal function, not compatible with MsiGetPropertyW */
More information about the wine-cvs
mailing list