Aric Stewart wrote:
- WCHAR buf[21];
- WCHAR buf2[21];
It would be nicer to get rid of the magic numbers, and to call the
variables something more meaningful than buf1, buf2.
rc = MSI_DatabaseOpenViewW(package->db, ExecSeqQuery, &view);
if (rc != ERROR_SUCCESS)
return ERROR_SUCCESS;
rc = MSI_IterateRecords(view, NULL, ITERATE_PublishComponent, package);
return rc;
}
You need to release the view you opened. MSI_IterateRecords leaves the
view intact (it does not call msiobj_release).
@@ -1297,11 +1298,93 @@
DWORD Unused1, DWORD Unused2, LPWSTR lpPathBuf,
DWORD* pcchPathBuf)
{
- FIXME("%s %s %li %s %li %li %p %p\n", debugstr_w(szComponent),
- HKEY hkey;
- UINT rc;
- WCHAR info[124];
What is info, and why is it 124 bytes long?
You need to close the hkey you opened.
- rc = MsiProvideQualifiedComponentW(szwComponent, szwQualifier,
dwInstallMode, lpwPathBuf, &pcchwPathBuf);
- HeapFree(GetProcessHeap(),0,szwComponent);
- HeapFree(GetProcessHeap(),0,szwQualifier);
- WideCharToMultiByte(CP_ACP, 0, lpwPathBuf, pcchwPathBuf, lpPathBuf,
*pcchPathBuf, NULL, NULL);
- *pcchPathBuf = pcchwPathBuf;
This is wrong for multibyte locales, isn't it?
Index: dlls/msi/msipriv.h
RCS file: /home/wine/wine/dlls/msi/msipriv.h,v
retrieving revision 1.52
diff -u -r1.52 msipriv.h
--- dlls/msi/msipriv.h 11 Apr 2005 12:47:20 -0000 1.52
+++ dlls/msi/msipriv.h 18 Apr 2005 18:57:52 -0000
@@ -357,6 +357,7 @@
extern UINT MSIREG_OpenFeatures(HKEY* key);
extern UINT MSIREG_OpenFeaturesKey(LPCWSTR szProduct, HKEY* key, BOOL create);
extern UINT MSIREG_OpenComponents(HKEY* key);
+extern UINT MSIREG_OpenUserComponentsKey(LPCWSTR szComponent, HKEY* key, BOOL create);
extern UINT MSIREG_OpenComponentsKey(LPCWSTR szComponent, HKEY* key, BOOL create);
extern UINT MSIREG_OpenProductsKey(LPCWSTR szProduct, HKEY* key, BOOL create);
extern UINT MSIREG_OpenUserFeaturesKey(LPCWSTR szProduct, HKEY* key, BOOL create);
Can't we have one or two functions that do the same thing as all the
above to avoid the duplication of similar code?
Mike