msi: Add more tests for MsiQueryFeatureState.
This commit is contained in:
parent
2d4e4b6ae2
commit
aefd63dc4e
|
@ -735,6 +735,8 @@ static void test_MsiQueryFeatureState(void)
|
|||
state = MsiQueryFeatureStateA(prodcode, "feature");
|
||||
ok(state == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", state);
|
||||
|
||||
/* MSIINSTALLCONTEXT_USERUNMANAGED */
|
||||
|
||||
lstrcpyA(keypath, "Software\\Microsoft\\Installer\\Features\\");
|
||||
lstrcatA(keypath, prod_squashed);
|
||||
|
||||
|
@ -748,6 +750,7 @@ static void test_MsiQueryFeatureState(void)
|
|||
res = RegSetValueExA(userkey, "feature", 0, REG_SZ, (const BYTE *)"", 2);
|
||||
ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
|
||||
|
||||
/* feature value exists */
|
||||
state = MsiQueryFeatureStateA(prodcode, "feature");
|
||||
ok(state == INSTALLSTATE_ADVERTISED, "Expected INSTALLSTATE_ADVERTISED, got %d\n", state);
|
||||
|
||||
|
@ -760,6 +763,7 @@ static void test_MsiQueryFeatureState(void)
|
|||
res = RegCreateKeyA(HKEY_LOCAL_MACHINE, keypath, &localkey);
|
||||
ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
|
||||
|
||||
/* userdata features key exists */
|
||||
state = MsiQueryFeatureStateA(prodcode, "feature");
|
||||
ok(state == INSTALLSTATE_ADVERTISED, "Expected INSTALLSTATE_ADVERTISED, got %d\n", state);
|
||||
|
||||
|
@ -811,7 +815,237 @@ static void test_MsiQueryFeatureState(void)
|
|||
ok(state == INSTALLSTATE_LOCAL, "Expected INSTALLSTATE_LOCAL, got %d\n", state);
|
||||
|
||||
RegDeleteValueA(compkey, prod_squashed);
|
||||
RegDeleteValueA(compkey, "");
|
||||
RegDeleteKeyA(compkey, "");
|
||||
RegDeleteValueA(localkey, "feature");
|
||||
RegDeleteValueA(userkey, "feature");
|
||||
RegDeleteKeyA(userkey, "");
|
||||
RegCloseKey(compkey);
|
||||
RegCloseKey(localkey);
|
||||
RegCloseKey(userkey);
|
||||
|
||||
/* MSIINSTALLCONTEXT_USERMANAGED */
|
||||
|
||||
lstrcpyA(keypath, "Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\Managed\\");
|
||||
lstrcatA(keypath, usersid);
|
||||
lstrcatA(keypath, "\\Installer\\Features\\");
|
||||
lstrcatA(keypath, prod_squashed);
|
||||
|
||||
res = RegCreateKeyA(HKEY_LOCAL_MACHINE, keypath, &userkey);
|
||||
ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
|
||||
|
||||
/* feature key exists */
|
||||
state = MsiQueryFeatureStateA(prodcode, "feature");
|
||||
ok(state == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", state);
|
||||
|
||||
res = RegSetValueExA(userkey, "feature", 0, REG_SZ, (const BYTE *)"", 2);
|
||||
ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
|
||||
|
||||
/* feature value exists */
|
||||
state = MsiQueryFeatureStateA(prodcode, "feature");
|
||||
todo_wine
|
||||
{
|
||||
ok(state == INSTALLSTATE_ADVERTISED, "Expected INSTALLSTATE_ADVERTISED, got %d\n", state);
|
||||
}
|
||||
|
||||
lstrcpyA(keypath, "Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\");
|
||||
lstrcatA(keypath, usersid);
|
||||
lstrcatA(keypath, "\\Products\\");
|
||||
lstrcatA(keypath, prod_squashed);
|
||||
lstrcatA(keypath, "\\Features");
|
||||
|
||||
res = RegCreateKeyA(HKEY_LOCAL_MACHINE, keypath, &localkey);
|
||||
ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
|
||||
|
||||
/* userdata features key exists */
|
||||
state = MsiQueryFeatureStateA(prodcode, "feature");
|
||||
todo_wine
|
||||
{
|
||||
ok(state == INSTALLSTATE_ADVERTISED, "Expected INSTALLSTATE_ADVERTISED, got %d\n", state);
|
||||
}
|
||||
|
||||
res = RegSetValueExA(localkey, "feature", 0, REG_SZ, (const BYTE *)"aaaaaaaaaaaaaaaaaaa", 20);
|
||||
ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
|
||||
|
||||
state = MsiQueryFeatureStateA(prodcode, "feature");
|
||||
todo_wine
|
||||
{
|
||||
ok(state == INSTALLSTATE_BADCONFIG, "Expected INSTALLSTATE_BADCONFIG, got %d\n", state);
|
||||
}
|
||||
|
||||
res = RegSetValueExA(localkey, "feature", 0, REG_SZ, (const BYTE *)"aaaaaaaaaaaaaaaaaaaa", 21);
|
||||
ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
|
||||
|
||||
state = MsiQueryFeatureStateA(prodcode, "feature");
|
||||
todo_wine
|
||||
{
|
||||
ok(state == INSTALLSTATE_ADVERTISED, "Expected INSTALLSTATE_ADVERTISED, got %d\n", state);
|
||||
}
|
||||
|
||||
res = RegSetValueExA(localkey, "feature", 0, REG_SZ, (const BYTE *)"aaaaaaaaaaaaaaaaaaaaa", 22);
|
||||
ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
|
||||
|
||||
state = MsiQueryFeatureStateA(prodcode, "feature");
|
||||
todo_wine
|
||||
{
|
||||
ok(state == INSTALLSTATE_ADVERTISED, "Expected INSTALLSTATE_ADVERTISED, got %d\n", state);
|
||||
}
|
||||
|
||||
res = RegSetValueExA(localkey, "feature", 0, REG_SZ, (const BYTE *)comp_base85, 21);
|
||||
ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
|
||||
|
||||
state = MsiQueryFeatureStateA(prodcode, "feature");
|
||||
todo_wine
|
||||
{
|
||||
ok(state == INSTALLSTATE_ADVERTISED, "Expected INSTALLSTATE_ADVERTISED, got %d\n", state);
|
||||
}
|
||||
|
||||
lstrcpyA(keypath, "Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\");
|
||||
lstrcatA(keypath, usersid);
|
||||
lstrcatA(keypath, "\\Components\\");
|
||||
lstrcatA(keypath, comp_squashed);
|
||||
|
||||
res = RegCreateKeyA(HKEY_LOCAL_MACHINE, keypath, &compkey);
|
||||
ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
|
||||
|
||||
state = MsiQueryFeatureStateA(prodcode, "feature");
|
||||
todo_wine
|
||||
{
|
||||
ok(state == INSTALLSTATE_ADVERTISED, "Expected INSTALLSTATE_ADVERTISED, got %d\n", state);
|
||||
}
|
||||
|
||||
res = RegSetValueExA(compkey, prod_squashed, 0, REG_SZ, (const BYTE *)"", 1);
|
||||
ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
|
||||
|
||||
state = MsiQueryFeatureStateA(prodcode, "feature");
|
||||
todo_wine
|
||||
{
|
||||
ok(state == INSTALLSTATE_LOCAL, "Expected INSTALLSTATE_LOCAL, got %d\n", state);
|
||||
}
|
||||
|
||||
res = RegSetValueExA(compkey, prod_squashed, 0, REG_SZ, (const BYTE *)"apple", 1);
|
||||
ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
|
||||
|
||||
state = MsiQueryFeatureStateA(prodcode, "feature");
|
||||
todo_wine
|
||||
{
|
||||
ok(state == INSTALLSTATE_LOCAL, "Expected INSTALLSTATE_LOCAL, got %d\n", state);
|
||||
}
|
||||
|
||||
RegDeleteValueA(compkey, prod_squashed);
|
||||
RegDeleteKeyA(compkey, "");
|
||||
RegDeleteValueA(localkey, "feature");
|
||||
RegDeleteValueA(userkey, "feature");
|
||||
RegDeleteKeyA(userkey, "");
|
||||
RegCloseKey(compkey);
|
||||
RegCloseKey(localkey);
|
||||
RegCloseKey(userkey);
|
||||
|
||||
/* MSIINSTALLCONTEXT_MACHINE */
|
||||
|
||||
lstrcpyA(keypath, "Software\\Classes\\Installer\\Features\\");
|
||||
lstrcatA(keypath, prod_squashed);
|
||||
|
||||
res = RegCreateKeyA(HKEY_LOCAL_MACHINE, keypath, &userkey);
|
||||
ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
|
||||
|
||||
/* feature key exists */
|
||||
state = MsiQueryFeatureStateA(prodcode, "feature");
|
||||
ok(state == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", state);
|
||||
|
||||
res = RegSetValueExA(userkey, "feature", 0, REG_SZ, (const BYTE *)"", 2);
|
||||
ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
|
||||
|
||||
/* feature value exists */
|
||||
state = MsiQueryFeatureStateA(prodcode, "feature");
|
||||
todo_wine
|
||||
{
|
||||
ok(state == INSTALLSTATE_ADVERTISED, "Expected INSTALLSTATE_ADVERTISED, got %d\n", state);
|
||||
}
|
||||
|
||||
lstrcpyA(keypath, "Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\");
|
||||
lstrcatA(keypath, "S-1-5-18\\Products\\");
|
||||
lstrcatA(keypath, prod_squashed);
|
||||
lstrcatA(keypath, "\\Features");
|
||||
|
||||
res = RegCreateKeyA(HKEY_LOCAL_MACHINE, keypath, &localkey);
|
||||
ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
|
||||
|
||||
/* userdata features key exists */
|
||||
state = MsiQueryFeatureStateA(prodcode, "feature");
|
||||
todo_wine
|
||||
{
|
||||
ok(state == INSTALLSTATE_ADVERTISED, "Expected INSTALLSTATE_ADVERTISED, got %d\n", state);
|
||||
}
|
||||
|
||||
res = RegSetValueExA(localkey, "feature", 0, REG_SZ, (const BYTE *)"aaaaaaaaaaaaaaaaaaa", 20);
|
||||
ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
|
||||
|
||||
state = MsiQueryFeatureStateA(prodcode, "feature");
|
||||
todo_wine
|
||||
{
|
||||
ok(state == INSTALLSTATE_BADCONFIG, "Expected INSTALLSTATE_BADCONFIG, got %d\n", state);
|
||||
}
|
||||
|
||||
res = RegSetValueExA(localkey, "feature", 0, REG_SZ, (const BYTE *)"aaaaaaaaaaaaaaaaaaaa", 21);
|
||||
ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
|
||||
|
||||
state = MsiQueryFeatureStateA(prodcode, "feature");
|
||||
todo_wine
|
||||
{
|
||||
ok(state == INSTALLSTATE_ADVERTISED, "Expected INSTALLSTATE_ADVERTISED, got %d\n", state);
|
||||
}
|
||||
|
||||
res = RegSetValueExA(localkey, "feature", 0, REG_SZ, (const BYTE *)"aaaaaaaaaaaaaaaaaaaaa", 22);
|
||||
ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
|
||||
|
||||
state = MsiQueryFeatureStateA(prodcode, "feature");
|
||||
todo_wine
|
||||
{
|
||||
ok(state == INSTALLSTATE_ADVERTISED, "Expected INSTALLSTATE_ADVERTISED, got %d\n", state);
|
||||
}
|
||||
|
||||
res = RegSetValueExA(localkey, "feature", 0, REG_SZ, (const BYTE *)comp_base85, 21);
|
||||
ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
|
||||
|
||||
state = MsiQueryFeatureStateA(prodcode, "feature");
|
||||
todo_wine
|
||||
{
|
||||
ok(state == INSTALLSTATE_ADVERTISED, "Expected INSTALLSTATE_ADVERTISED, got %d\n", state);
|
||||
}
|
||||
|
||||
lstrcpyA(keypath, "Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\");
|
||||
lstrcatA(keypath, "S-1-5-18\\Components\\");
|
||||
lstrcatA(keypath, comp_squashed);
|
||||
|
||||
res = RegCreateKeyA(HKEY_LOCAL_MACHINE, keypath, &compkey);
|
||||
ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
|
||||
|
||||
state = MsiQueryFeatureStateA(prodcode, "feature");
|
||||
todo_wine
|
||||
{
|
||||
ok(state == INSTALLSTATE_ADVERTISED, "Expected INSTALLSTATE_ADVERTISED, got %d\n", state);
|
||||
}
|
||||
|
||||
res = RegSetValueExA(compkey, prod_squashed, 0, REG_SZ, (const BYTE *)"", 1);
|
||||
ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
|
||||
|
||||
state = MsiQueryFeatureStateA(prodcode, "feature");
|
||||
todo_wine
|
||||
{
|
||||
ok(state == INSTALLSTATE_LOCAL, "Expected INSTALLSTATE_LOCAL, got %d\n", state);
|
||||
}
|
||||
|
||||
res = RegSetValueExA(compkey, prod_squashed, 0, REG_SZ, (const BYTE *)"apple", 1);
|
||||
ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
|
||||
|
||||
state = MsiQueryFeatureStateA(prodcode, "feature");
|
||||
todo_wine
|
||||
{
|
||||
ok(state == INSTALLSTATE_LOCAL, "Expected INSTALLSTATE_LOCAL, got %d\n", state);
|
||||
}
|
||||
|
||||
RegDeleteValueA(compkey, prod_squashed);
|
||||
RegDeleteKeyA(compkey, "");
|
||||
RegDeleteValueA(localkey, "feature");
|
||||
RegDeleteValueA(userkey, "feature");
|
||||
RegDeleteKeyA(userkey, "");
|
||||
|
|
Loading…
Reference in New Issue