James Hawkins : msi: Also check the local system component key for the clients.
Alexandre Julliard
julliard at winehq.org
Mon Dec 17 06:41:48 CST 2007
Module: wine
Branch: master
Commit: 3edd258fcdb8dd11def1989320504758d0b84e54
URL: http://source.winehq.org/git/wine.git/?a=commit;h=3edd258fcdb8dd11def1989320504758d0b84e54
Author: James Hawkins <truiken at gmail.com>
Date: Sun Dec 16 20:28:42 2007 -0600
msi: Also check the local system component key for the clients.
---
dlls/msi/registry.c | 4 ++--
dlls/msi/tests/msi.c | 43 +++++++++++++++----------------------------
2 files changed, 17 insertions(+), 30 deletions(-)
diff --git a/dlls/msi/registry.c b/dlls/msi/registry.c
index d81fb4e..7423658 100644
--- a/dlls/msi/registry.c
+++ b/dlls/msi/registry.c
@@ -1317,8 +1317,8 @@ UINT WINAPI MsiEnumClientsW(LPCWSTR szComponent, DWORD index, LPWSTR szProduct)
if (!szComponent || !*szComponent || !szProduct)
return ERROR_INVALID_PARAMETER;
- r = MSIREG_OpenUserDataComponentKey(szComponent, &hkeyComp, FALSE);
- if (r != ERROR_SUCCESS)
+ if (MSIREG_OpenUserDataComponentKey(szComponent, &hkeyComp, FALSE) != ERROR_SUCCESS &&
+ MSIREG_OpenLocalSystemComponentKey(szComponent, &hkeyComp, FALSE) != ERROR_SUCCESS)
return ERROR_UNKNOWN_COMPONENT;
sz = SQUISH_GUID_SIZE;
diff --git a/dlls/msi/tests/msi.c b/dlls/msi/tests/msi.c
index 3cd7c29..d85d972 100644
--- a/dlls/msi/tests/msi.c
+++ b/dlls/msi/tests/msi.c
@@ -1719,7 +1719,10 @@ static void test_MsiEnumClients(void)
/* user local component key exists */
product[0] = '\0';
r = MsiEnumClientsA(component, 0, product);
- ok(r == ERROR_UNKNOWN_COMPONENT, "Expected ERROR_UNKNOWN_COMPONENT, got %d\n", r);
+ todo_wine
+ {
+ ok(r == ERROR_UNKNOWN_COMPONENT, "Expected ERROR_UNKNOWN_COMPONENT, got %d\n", r);
+ }
ok(!lstrcmpA(product, ""), "Expected product to be unchanged, got %s\n", product);
/* index > 0, no products exist */
@@ -1737,28 +1740,18 @@ static void test_MsiEnumClients(void)
/* product value exists */
product[0] = '\0';
r = MsiEnumClientsA(component, 0, product);
- todo_wine
- {
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(product, prodcode), "Expected %s, got %s\n", prodcode, product);
- }
+ ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
+ ok(!lstrcmpA(product, prodcode), "Expected %s, got %s\n", prodcode, product);
/* try index 0 again */
product[0] = '\0';
r = MsiEnumClientsA(component, 0, product);
- todo_wine
- {
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(product, prodcode), "Expected %s, got %s\n", prodcode, product);
- }
+ ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
/* try index 1, second product value does not exist */
product[0] = '\0';
r = MsiEnumClientsA(component, 1, product);
- todo_wine
- {
- ok(r == ERROR_NO_MORE_ITEMS, "Expected ERROR_NO_MORE_ITEMS, got %d\n", r);
- }
+ ok(r == ERROR_NO_MORE_ITEMS, "Expected ERROR_NO_MORE_ITEMS, got %d\n", r);
ok(!lstrcmpA(product, ""), "Expected product to be unchanged, got %s\n", product);
res = RegSetValueExA(compkey, prod2_squashed, 0, REG_SZ, (const BYTE *)"C:\\another", 10);
@@ -1770,28 +1763,22 @@ static void test_MsiEnumClients(void)
todo_wine
{
ok(r == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
+ ok(!lstrcmpA(product, ""), "Expected product to be unchanged, got %s\n", product);
}
- ok(!lstrcmpA(product, ""), "Expected product to be unchanged, got %s\n", product);
/* start the enumeration over */
product[0] = '\0';
r = MsiEnumClientsA(component, 0, product);
- todo_wine
- {
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(product, prodcode) || !lstrcmpA(product, prodcode2),
- "Expected %s or %s, got %s\n", prodcode, prodcode2, product);
- }
+ ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
+ ok(!lstrcmpA(product, prodcode) || !lstrcmpA(product, prodcode2),
+ "Expected %s or %s, got %s\n", prodcode, prodcode2, product);
/* correctly query second product */
product[0] = '\0';
r = MsiEnumClientsA(component, 1, product);
- todo_wine
- {
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(product, prodcode) || !lstrcmpA(product, prodcode2),
- "Expected %s or %s, got %s\n", prodcode, prodcode2, product);
- }
+ ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
+ ok(!lstrcmpA(product, prodcode) || !lstrcmpA(product, prodcode2),
+ "Expected %s or %s, got %s\n", prodcode, prodcode2, product);
RegDeleteValueA(compkey, prod_squashed);
RegDeleteValueA(compkey, prod2_squashed);
More information about the wine-cvs
mailing list