msi: Write registry values for source components too.

Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Hans Leidekker 2018-01-22 10:19:06 +01:00 committed by Alexandre Julliard
parent dfe48bab07
commit 8bdcaf6036
2 changed files with 32 additions and 6 deletions

View File

@ -2872,7 +2872,7 @@ static UINT ITERATE_WriteRegistryValues(MSIRECORD *row, LPVOID param)
return ERROR_SUCCESS;
comp->Action = msi_get_component_action( package, comp );
if (comp->Action != INSTALLSTATE_LOCAL)
if (comp->Action != INSTALLSTATE_LOCAL && comp->Action != INSTALLSTATE_SOURCE)
{
TRACE("component not scheduled for installation %s\n", debugstr_w(component));
return ERROR_SUCCESS;

View File

@ -506,7 +506,22 @@ static const char wrv_component_dat[] =
"Component\tComponentId\tDirectory_\tAttributes\tCondition\tKeyPath\n"
"s72\tS38\ts72\ti2\tS255\tS72\n"
"Component\tComponent\n"
"augustus\t\tMSITESTDIR\t0\t\taugustus\n";
"augustus\t\tMSITESTDIR\t0\t\taugustus\n"
"caesar\t\tMSITESTDIR\t1\t\t\n";
static const char wrv_feature_dat[] =
"Feature\tFeature_Parent\tTitle\tDescription\tDisplay\tLevel\tDirectory_\tAttributes\n"
"s38\tS38\tL64\tL255\tI2\ti2\tS72\ti2\n"
"Feature\tFeature\n"
"feature\t\tFeature\tFeature\t2\t1\tTARGETDIR\t0\n"
"feature2\t\tFeature2\tFeature2\t2\t1\tTARGETDIR\t1";
static const char wrv_feature_comp_dat[] =
"Feature_\tComponent_\n"
"s38\ts72\n"
"FeatureComponents\tFeature_\tComponent_\n"
"feature\taugustus\n"
"feature2\tcaesar";
static const char wrv_registry_dat[] =
"Registry\tRoot\tKey\tName\tValue\tComponent_\n"
@ -527,7 +542,8 @@ static const char wrv_registry_dat[] =
"regdata12\t2\tSOFTWARE\\Wine\\msitest\tValue8\t#1\taugustus\n"
"regdata13\t2\tSOFTWARE\\Wine\\msitest\tValue9\t#x1\taugustus\n"
"regdata14\t2\tSOFTWARE\\Wine\\msitest\tValue10\t#x01\taugustus\n"
"regdata15\t2\tSOFTWARE\\Wine\\msitest\tValue11\t[regdata15]\taugustus\n";
"regdata15\t2\tSOFTWARE\\Wine\\msitest\tValue11\t[regdata15]\taugustus\n"
"regdata16\t2\tSOFTWARE\\Wine\\msitest\tValue12\t#1\tcaesar\n";
static const char cf_directory_dat[] =
"Directory\tDirectory_Parent\tDefaultDir\n"
@ -1752,8 +1768,8 @@ static const msi_table wrv_tables[] =
{
ADD_TABLE(wrv_component),
ADD_TABLE(directory),
ADD_TABLE(rof_feature),
ADD_TABLE(ci2_feature_comp),
ADD_TABLE(wrv_feature),
ADD_TABLE(wrv_feature_comp),
ADD_TABLE(ci2_file),
ADD_TABLE(install_exec_seq),
ADD_TABLE(rof_media),
@ -4988,7 +5004,7 @@ static void test_write_registry_values(void)
goto error;
}
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
ok(delete_pf("msitest\\augustus", TRUE), "File installed\n");
ok(delete_pf("msitest\\augustus", TRUE), "File not installed\n");
ok(delete_pf("msitest", FALSE), "Directory not created\n");
if (is_64bit)
@ -5111,6 +5127,15 @@ static void test_write_registry_values(void)
ok(size == 1, "got %u\n", size);
ok(type == REG_BINARY, "got %u\n", type);
size = sizeof(buf);
type = 0xdeadbeef;
memset(buf, 0, size);
res = RegQueryValueExA(hkey, "Value12", NULL, &type, buf, &size);
ok(res == ERROR_SUCCESS, "got %u\n", res);
ok(*(DWORD *)buf == 1, "got %u\n", *(DWORD *)buf);
ok(size == 4, "got %u\n", size);
ok(type == REG_DWORD, "got %u\n", type);
RegDeleteValueA(hkey, "Value");
RegDeleteValueA(hkey, "Value1");
RegDeleteValueA(hkey, "Value2");
@ -5123,6 +5148,7 @@ static void test_write_registry_values(void)
RegDeleteValueA(hkey, "Value9");
RegDeleteValueA(hkey, "Value10");
RegDeleteValueA(hkey, "Value11");
RegDeleteValueA(hkey, "Value12");
RegCloseKey(hkey);
RegDeleteKeyA(HKEY_LOCAL_MACHINE, "SOFTWARE\\Wine\\msitest");