Skip to content

Commit d6a9b26

Browse files
winesynclearn-more
authored andcommitted
[WINESYNC] msi/tests: Test deferral of RegisterProgIdInfo and UnregisterProgIdInfo.
Signed-off-by: Zebediah Figura <[email protected]> Signed-off-by: Hans Leidekker <[email protected]> Signed-off-by: Alexandre Julliard <[email protected]> wine commit id 2fe0388d0cf205926cc9b8686b8f7ebd692261ef by Zebediah Figura <[email protected]>
1 parent e0bf393 commit d6a9b26

File tree

3 files changed

+66
-0
lines changed

3 files changed

+66
-0
lines changed

modules/rostests/winetests/msi/action.c

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1654,15 +1654,28 @@ static const char rpi_install_exec_seq_dat[] =
16541654
"UnregisterClassInfo\t\t3000\n"
16551655
"UnregisterExtensionInfo\t\t3200\n"
16561656
"UnregisterProgIdInfo\t\t3400\n"
1657+
"upi_immediate\tREMOVE\t3401\n"
1658+
"upi_deferred\tREMOVE\t3402\n"
16571659
"InstallFiles\t\t3600\n"
16581660
"RegisterClassInfo\t\t4000\n"
16591661
"RegisterExtensionInfo\t\t4200\n"
16601662
"RegisterProgIdInfo\t\t4400\n"
1663+
"rpi_immediate\tNOT REMOVE\t4401\n"
1664+
"rpi_deferred\tNOT REMOVE\t4402\n"
16611665
"RegisterProduct\t\t5000\n"
16621666
"PublishFeatures\t\t5100\n"
16631667
"PublishProduct\t\t5200\n"
16641668
"InstallFinalize\t\t6000\n";
16651669

1670+
static const char rpi_custom_action_dat[] =
1671+
"Action\tType\tSource\tTarget\n"
1672+
"s72\ti2\tS64\tS0\n"
1673+
"CustomAction\tAction\n"
1674+
"rpi_immediate\t1\tcustom.dll\trpi_absent\n"
1675+
"rpi_deferred\t1025\tcustom.dll\trpi_present\n"
1676+
"upi_immediate\t1\tcustom.dll\trpi_present\n"
1677+
"upi_deferred\t1025\tcustom.dll\trpi_absent\n";
1678+
16661679
static const char rmi_file_dat[] =
16671680
"File\tComponent_\tFileName\tFileSize\tVersion\tLanguage\tAttributes\tSequence\n"
16681681
"s72\ts72\tl255\ti4\tS72\tS20\tI2\ti2\n"
@@ -2272,6 +2285,7 @@ static const msi_table rpi_tables[] =
22722285
ADD_TABLE(rpi_verb),
22732286
ADD_TABLE(rpi_progid),
22742287
ADD_TABLE(rpi_install_exec_seq),
2288+
ADD_TABLE(rpi_custom_action),
22752289
ADD_TABLE(media),
22762290
ADD_TABLE(property)
22772291
};

modules/rostests/winetests/msi/custom.c

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1726,3 +1726,53 @@ todo_wine
17261726

17271727
return ERROR_SUCCESS;
17281728
}
1729+
1730+
UINT WINAPI rpi_present(MSIHANDLE hinst)
1731+
{
1732+
HKEY key;
1733+
LONG res;
1734+
1735+
todo_wine_if(!MsiGetMode(hinst, MSIRUNMODE_SCHEDULED)) {
1736+
res = RegOpenKeyExA(HKEY_CLASSES_ROOT, "CLSID\\{110913E7-86D1-4BF3-9922-BA103FCDDDFA}",
1737+
0, KEY_READ | KEY_WOW64_32KEY, &key);
1738+
ok(hinst, !res, "got %u\n", res);
1739+
RegCloseKey(key);
1740+
1741+
res = RegOpenKeyA(HKEY_CLASSES_ROOT, "Winetest.Class.1", &key);
1742+
ok(hinst, !res, "got %u\n", res);
1743+
RegCloseKey(key);
1744+
1745+
res = RegOpenKeyA(HKEY_CLASSES_ROOT, "Winetest.Class", &key);
1746+
ok(hinst, !res, "got %u\n", res);
1747+
RegCloseKey(key);
1748+
1749+
res = RegOpenKeyA(HKEY_CLASSES_ROOT, "Winetest.Class.2", &key);
1750+
ok(hinst, !res, "got %u\n", res);
1751+
RegCloseKey(key);
1752+
}
1753+
1754+
return ERROR_SUCCESS;
1755+
}
1756+
1757+
UINT WINAPI rpi_absent(MSIHANDLE hinst)
1758+
{
1759+
HKEY key;
1760+
LONG res;
1761+
1762+
todo_wine_if(!MsiGetMode(hinst, MSIRUNMODE_SCHEDULED)) {
1763+
res = RegOpenKeyExA(HKEY_CLASSES_ROOT, "CLSID\\{110913E7-86D1-4BF3-9922-BA103FCDDDFA}",
1764+
0, KEY_READ | KEY_WOW64_32KEY, &key);
1765+
ok(hinst, res == ERROR_FILE_NOT_FOUND, "got %u\n", res);
1766+
1767+
res = RegOpenKeyA(HKEY_CLASSES_ROOT, "Winetest.Class.1", &key);
1768+
ok(hinst, res == ERROR_FILE_NOT_FOUND, "got %u\n", res);
1769+
1770+
res = RegOpenKeyA(HKEY_CLASSES_ROOT, "Winetest.Class", &key);
1771+
ok(hinst, res == ERROR_FILE_NOT_FOUND, "got %u\n", res);
1772+
1773+
res = RegOpenKeyA(HKEY_CLASSES_ROOT, "Winetest.Class.2", &key);
1774+
ok(hinst, res == ERROR_FILE_NOT_FOUND, "got %u\n", res);
1775+
}
1776+
1777+
return ERROR_SUCCESS;
1778+
}

modules/rostests/winetests/msi/custom.spec

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@
3535
@ stdcall rd_absent(long)
3636
@ stdcall rp_present(long)
3737
@ stdcall rp_absent(long)
38+
@ stdcall rpi_present(long)
39+
@ stdcall rpi_absent(long)
3840
@ stdcall sds_present(long)
3941
@ stdcall sds_absent(long)
4042
@ stdcall sis_present(long)

0 commit comments

Comments
 (0)