43static UINT (
WINAPI *pMsiSourceListAddSourceExA)
45static UINT (
WINAPI *pMsiSourceListEnumMediaDisksA)
48static UINT (
WINAPI *pMsiSourceListEnumSourcesA)
65#define GET_PROC(dll, func) \
66 p ## func = (void *)GetProcAddress(dll, #func); \
68 trace("GetProcAddress(%s) failed\n", #func);
127 ok(
hr ==
S_OK,
"Expected S_OK, got %#lx\n",
hr);
130 ok(
size == 39,
"Expected 39, got %#lx\n",
hr);
142 char *usersid =
NULL;
168 ok_(__FILE__,
line)(
FALSE,
"Key doesn't exist or wrong type\n");
173 ok_(__FILE__,
line)(!
val[0],
"Expected empty string, got %s\n",
val);
183#define CHECK_REG_STR(prodkey, name, expected) \
184 check_reg_str(prodkey, name, expected, TRUE, __LINE__);
206 if (!pMsiSourceListGetInfoA)
208 win_skip(
"Skipping MsiSourceListGetInfoA tests\n");
215 skip(
"User SID not available -> skipping MsiSourceListGetInfoA tests\n");
294 "Expected ERROR_UNKNOWN_PRODUCT or ERROR_INVALID_PARAMETER, got %d\n",
r);
296 lstrcpyA(keypath,
"Software\\Microsoft\\Installer\\Products\\");
322 data =
"msitest.msi";
331 "Expected ERROR_SUCCESS or ERROR_INVALID_PARAMETER, got %d\n",
r);
341 ok(
size == 11,
"Expected 11, got %lu\n",
size);
349 ok(
size == 11,
"Expected 11, got %lu\n",
size);
387 ok(
size == 11,
"Expected 11, got %lu\n",
size);
629 lstrcpyA(keypath,
"Software\\Microsoft\\Installer\\Patches\\");
667 if (pRegDeleteKeyExA)
668 return pRegDeleteKeyExA(
key, subkey,
access, 0 );
685 if (!pMsiSourceListAddSourceExA)
687 win_skip(
"Skipping MsiSourceListAddSourceExA tests\n");
692 skip(
"process is limited\n");
699 skip(
"User SID not available -> skipping MsiSourceListAddSourceExA tests\n");
724 r = pMsiSourceListAddSourceExA(
"51CD2AD5-0482-4C46-8DDD-0ED1022AA1AA", usersid,
730 r = pMsiSourceListAddSourceExA(
"{51CD2AD5-0482-4C46-8DDD-0ED1022AA1AA}", usersid,
737 r = pMsiSourceListAddSourceExA(prodcode, usersid,
742 lstrcpyA(keypath,
"Software\\Microsoft\\Installer\\Products\\");
749 r = pMsiSourceListAddSourceExA(prodcode, usersid,
759 r = pMsiSourceListAddSourceExA(prodcode, usersid,
771 ok(
size == 11,
"Expected 11, got %lu\n",
size);
774 r = pMsiSourceListAddSourceExA(prodcode, usersid,
783 ok(
size == 11,
"Expected 11, got %lu\n",
size);
792 r = pMsiSourceListAddSourceExA(prodcode, usersid,
807 ok(
size == 11,
"Expected 11, got %lu\n",
size);
816 r = pMsiSourceListAddSourceExA(prodcode, usersid,
831 ok(
size == 11,
"Expected 11, got %lu\n",
size);
846 r = pMsiSourceListAddSourceExA(prodcode, usersid,
861 r = pMsiSourceListAddSourceExA(prodcode, usersid,
876 ok(
size == 11,
"Expected 11, got %lu\n",
size);
897 r = pMsiSourceListAddSourceExA(prodcode,
NULL,
912 ok(
size == 11,
"Expected 11, got %lu\n",
size);
915 r = pMsiSourceListAddSourceExA(prodcode, usersid,
920 r = pMsiSourceListAddSourceExA(prodcode, usersid,
926 r = pMsiSourceListAddSourceExA(prodcode, usersid,
932 r = pMsiSourceListAddSourceExA(prodcode, usersid,
939 r = pMsiSourceListAddSourceExA(prodcode, usersid,
944 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\Managed\\");
946 lstrcatA(keypath,
"\\Installer\\Products\\");
952 skip(
"Product key creation failed with error code %ld\n",
res);
957 r = pMsiSourceListAddSourceExA(prodcode, usersid,
967 r = pMsiSourceListAddSourceExA(prodcode, usersid,
979 ok(
size == 11,
"Expected 11, got %lu\n",
size);
985 r = pMsiSourceListAddSourceExA(prodcode,
NULL,
997 ok(
size == 11,
"Expected 11, got %lu\n",
size);
1003 ok(
size == 9,
"Expected 9, got %lu\n",
size);
1012 r = pMsiSourceListAddSourceExA(prodcode, usersid,
1017 r = pMsiSourceListAddSourceExA(prodcode,
NULL,
1022 lstrcpyA(keypath,
"Software\\Classes\\Installer\\Products\\");
1028 skip(
"Product key creation failed with error code %ld\n",
res);
1034 r = pMsiSourceListAddSourceExA(prodcode,
NULL,
1044 r = pMsiSourceListAddSourceExA(prodcode,
NULL,
1048 skip(
"MsiSourceListAddSourceEx (insufficient privileges)\n");
1060 ok(
size == 11,
"Expected 11, got %lu\n",
size);
1077 HKEY prodkey, userkey;
1082 if (!pMsiSourceListEnumSourcesA)
1084 win_skip(
"MsiSourceListEnumSourcesA is not available\n");
1091 skip(
"User SID not available -> skipping MsiSourceListEnumSourcesA tests\n");
1105 ok(
size == 0xdeadbeef,
"Expected 0xdeadbeef, got %lu\n",
size);
1112 ok(
size == 0xdeadbeef,
"Expected 0xdeadbeef, got %lu\n",
size);
1119 ok(
size == 0xdeadbeef,
"Expected 0xdeadbeef, got %lu\n",
size);
1123 r = pMsiSourceListEnumSourcesA(
"51CD2AD5-0482-4C46-8DDD-0ED1022AA1AA",
1127 ok(
size == 0xdeadbeef,
"Expected 0xdeadbeef, got %lu\n",
size);
1131 r = pMsiSourceListEnumSourcesA(
"{51CD2AD5-0482-4C46-8DDD-0ED1022AA1AA}",
1135 ok(
size == 0xdeadbeef,
"Expected 0xdeadbeef, got %lu\n",
size);
1141 r = pMsiSourceListEnumSourcesA(prodcode, usersid,
1148 lstrcpyA(keypath,
"Software\\Microsoft\\Installer\\Products\\");
1157 r = pMsiSourceListEnumSourcesA(prodcode, usersid,
1170 r = pMsiSourceListEnumSourcesA(prodcode, usersid,
1183 r = pMsiSourceListEnumSourcesA(prodcode, usersid,
1202 r = pMsiSourceListEnumSourcesA(prodcode, usersid,
1207 ok(
size == 5,
"Expected 5, got %lu\n",
size);
1212 r = pMsiSourceListEnumSourcesA(prodcode, usersid,
1217 ok(
size == 5,
"Expected 5, got %lu\n",
size);
1220 r = pMsiSourceListEnumSourcesA(prodcode, usersid,
1226 r = pMsiSourceListEnumSourcesA(prodcode, usersid,
1234 r = pMsiSourceListEnumSourcesA(prodcode, usersid,
1239 ok(
size == 5,
"Expected 5, got %lu\n",
size);
1243 r = pMsiSourceListEnumSourcesA(prodcode, usersid,
1252 r = pMsiSourceListEnumSourcesA(prodcode, usersid,
1256 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
1263 r = pMsiSourceListEnumSourcesA(prodcode, usersid,
1268 ok(
size == 5,
"Expected 5, got %lu\n",
size);
1273 r = pMsiSourceListEnumSourcesA(prodcode, usersid,
1278 ok(
size == 6,
"Expected 6, got %lu\n",
size);
1283 r = pMsiSourceListEnumSourcesA(prodcode, usersid,
1287 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
1294 r = pMsiSourceListEnumSourcesA(prodcode, usersid,
1304 r = pMsiSourceListEnumSourcesA(prodcode, usersid,
1308 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
1315 r = pMsiSourceListEnumSourcesA(prodcode,
NULL,
1320 ok(
size == 5,
"Expected 5, got %lu\n",
size);
1325 r = pMsiSourceListEnumSourcesA(prodcode,
NULL,
1335 r = pMsiSourceListEnumSourcesA(prodcode,
NULL,
1345 r = pMsiSourceListEnumSourcesA(prodcode,
NULL,
1356 r = pMsiSourceListEnumSourcesA(prodcode,
NULL,
1373 r = pMsiSourceListEnumSourcesA(prodcode, usersid,
1386 r = pMsiSourceListEnumSourcesA(prodcode, usersid,
1399 r = pMsiSourceListEnumSourcesA(prodcode, usersid,
1404 ok(
size == 5,
"Expected 5, got %lu\n",
size);
1418 r = pMsiSourceListEnumSourcesA(prodcode, usersid,
1425 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\Managed\\");
1427 lstrcatA(keypath,
"\\Installer\\Products\\");
1433 skip(
"Product key creation failed with error code %ld\n",
res);
1440 r = pMsiSourceListEnumSourcesA(prodcode, usersid,
1453 r = pMsiSourceListEnumSourcesA(prodcode, usersid,
1466 r = pMsiSourceListEnumSourcesA(prodcode, usersid,
1479 r = pMsiSourceListEnumSourcesA(prodcode, usersid,
1484 ok(
size == 5,
"Expected 5, got %lu\n",
size);
1489 r = pMsiSourceListEnumSourcesA(prodcode,
NULL,
1494 ok(
size == 5,
"Expected 5, got %lu\n",
size);
1503 r = pMsiSourceListEnumSourcesA(prodcode, usersid,
1516 r = pMsiSourceListEnumSourcesA(prodcode, usersid,
1529 r = pMsiSourceListEnumSourcesA(prodcode, usersid,
1534 ok(
size == 5,
"Expected 5, got %lu\n",
size);
1550 r = pMsiSourceListEnumSourcesA(prodcode, usersid,
1560 r = pMsiSourceListEnumSourcesA(prodcode,
NULL,
1567 lstrcpyA(keypath,
"Software\\Classes\\Installer\\Products\\");
1573 skip(
"Product key creation failed with error code %ld\n",
res);
1581 r = pMsiSourceListEnumSourcesA(prodcode,
NULL,
1594 r = pMsiSourceListEnumSourcesA(prodcode,
NULL,
1607 r = pMsiSourceListEnumSourcesA(prodcode,
NULL,
1620 r = pMsiSourceListEnumSourcesA(prodcode,
NULL,
1625 ok(
size == 5,
"Expected 5, got %lu\n",
size);
1630 r = pMsiSourceListEnumSourcesA(prodcode,
NULL,
1635 ok(
size == 5,
"Expected 5, got %lu\n",
size);
1644 r = pMsiSourceListEnumSourcesA(prodcode,
NULL,
1657 r = pMsiSourceListEnumSourcesA(prodcode,
NULL,
1670 r = pMsiSourceListEnumSourcesA(prodcode,
NULL,
1675 ok(
size == 5,
"Expected 5, got %lu\n",
size);
1692 HKEY prodkey, userkey;
1699 if (!pMsiSourceListSetInfoA)
1701 win_skip(
"MsiSourceListSetInfoA is not available\n");
1706 skip(
"process is limited\n");
1713 skip(
"User SID not available -> skipping MsiSourceListSetInfoA tests\n");
1727 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
1734 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
1737 r = pMsiSourceListSetInfoA(
"garbage", usersid,
1742 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
1745 r = pMsiSourceListSetInfoA(
"51CD2AD5-0482-4C46-8DDD-0ED1022AA1AA",
1750 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
1753 r = pMsiSourceListSetInfoA(
"{51CD2AD5-0482-4C46-8DDD-0ED1022AA1AA}",
1758 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
1761 r = pMsiSourceListSetInfoA(prodcode, usersid,
1765 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
1768 r = pMsiSourceListSetInfoA(prodcode, usersid,
1774 r = pMsiSourceListSetInfoA(prodcode, usersid,
1781 r = pMsiSourceListSetInfoA(prodcode,
NULL,
1786 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
1791 r = pMsiSourceListSetInfoA(prodcode,
NULL,
1796 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
1799 r = pMsiSourceListSetInfoA(prodcode,
NULL,
1803 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
1807 lstrcpyA(keypath,
"Software\\Microsoft\\Installer\\Products\\");
1814 r = pMsiSourceListSetInfoA(prodcode,
NULL,
1818 "Expected ERROR_BAD_CONFIGURATION, got %d\n",
r);
1824 r = pMsiSourceListSetInfoA(prodcode,
NULL,
1835 r = pMsiSourceListSetInfoA(prodcode,
NULL,
1842 r = pMsiSourceListSetInfoA(prodcode,
NULL,
1846 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
1849 r = pMsiSourceListSetInfoA(prodcode,
NULL,
1853 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
1856 r = pMsiSourceListSetInfoA(prodcode,
NULL,
1860 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
1863 r = pMsiSourceListSetInfoA(prodcode,
NULL,
1870 r = pMsiSourceListSetInfoA(prodcode,
NULL,
1875 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
1878 r = pMsiSourceListSetInfoA(prodcode,
NULL,
1883 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
1886 r = pMsiSourceListSetInfoA(prodcode,
NULL,
1893 r = pMsiSourceListSetInfoA(prodcode,
NULL,
1898 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
1901 r = pMsiSourceListSetInfoA(prodcode,
NULL,
1906 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
1909 r = pMsiSourceListSetInfoA(prodcode,
NULL,
1913 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
1916 r = pMsiSourceListSetInfoA(prodcode,
NULL,
1929 r = pMsiSourceListSetInfoA(prodcode,
NULL,
1939 r = pMsiSourceListSetInfoA(prodcode,
NULL,
1952 r = pMsiSourceListSetInfoA(prodcode,
NULL,
1962 r = pMsiSourceListSetInfoA(prodcode,
NULL,
1967 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
1970 r = pMsiSourceListSetInfoA(prodcode,
NULL,
1977 r = pMsiSourceListSetInfoA(prodcode,
NULL,
1982 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
1985 r = pMsiSourceListSetInfoA(prodcode,
NULL,
1990 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
1993 r = pMsiSourceListSetInfoA(prodcode,
NULL,
1997 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
2000 r = pMsiSourceListSetInfoA(prodcode,
NULL,
2004 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
2024 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\Managed\\");
2026 lstrcatA(keypath,
"\\Installer\\Products\\");
2032 skip(
"Product key creation failed with error code %ld\n",
res);
2037 r = pMsiSourceListSetInfoA(prodcode,
NULL,
2041 "Expected ERROR_BAD_CONFIGURATION, got %d\n",
r);
2047 r = pMsiSourceListSetInfoA(prodcode,
NULL,
2068 lstrcpyA(keypath,
"Software\\Classes\\Installer\\Products\\");
2074 skip(
"Product key creation failed with error code %ld\n",
res);
2080 r = pMsiSourceListSetInfoA(prodcode,
NULL,
2084 "Expected ERROR_BAD_CONFIGURATION, got %d\n",
r);
2090 r = pMsiSourceListSetInfoA(prodcode,
NULL,
2095 skip(
"MsiSourceListSetInfo (insufficient privileges)\n");
2106 r = pMsiSourceListSetInfoA(prodcode, usersid,
2110 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
2128 HKEY prodkey, userkey;
2135 if (!pMsiSourceListAddMediaDiskA)
2137 win_skip(
"MsiSourceListAddMediaDiskA is not available\n");
2142 skip(
"process is limited\n");
2149 skip(
"User SID not available -> skipping MsiSourceListAddMediaDiskA tests\n");
2162 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
2168 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
2174 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
2177 r = pMsiSourceListAddMediaDiskA(
"51CD2AD5-0482-4C46-8DDD-0ED1022AA1AA",
2181 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
2184 r = pMsiSourceListAddMediaDiskA(
"{51CD2AD5-0482-4C46-8DDD-0ED1022AA1AA}",
2188 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
2191 r = pMsiSourceListAddMediaDiskA(
"{51CD2AD5-0482-4C46-8DDD-0ED1022AA1AA}",
2194 1,
"label",
"prompt");
2196 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
2199 r = pMsiSourceListAddMediaDiskA(
"{51CD2AD5-0482-4C46-8DDD-0ED1022AA1AA}",
2202 1,
"label",
"prompt");
2204 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
2207 r = pMsiSourceListAddMediaDiskA(
"{51CD2AD5-0482-4C46-8DDD-0ED1022AA1AA}",
2210 1,
"label",
"prompt");
2212 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
2216 lstrcpyA(keypath,
"Software\\Microsoft\\Installer\\Products\\");
2223 r = pMsiSourceListAddMediaDiskA(prodcode, usersid,
2227 "Expected ERROR_BAD_CONFIGURATION, got %d\n",
r);
2233 r = pMsiSourceListAddMediaDiskA(prodcode, usersid,
2245 r = pMsiSourceListAddMediaDiskA(prodcode, usersid,
2254 r = pMsiSourceListAddMediaDiskA(prodcode, usersid,
2264 r = pMsiSourceListAddMediaDiskA(prodcode, usersid,
2275 r = pMsiSourceListAddMediaDiskA(prodcode, usersid,
2286 r = pMsiSourceListAddMediaDiskA(prodcode, usersid,
2297 r = pMsiSourceListAddMediaDiskA(prodcode, usersid,
2301 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
2304 r = pMsiSourceListAddMediaDiskA(prodcode, usersid,
2315 r = pMsiSourceListAddMediaDiskA(prodcode, usersid,
2319 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
2322 r = pMsiSourceListAddMediaDiskA(prodcode,
NULL,
2345 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\Managed\\");
2347 lstrcatA(keypath,
"\\Installer\\Products\\");
2353 skip(
"Product key creation failed with error code %ld\n",
res);
2358 r = pMsiSourceListAddMediaDiskA(prodcode, usersid,
2362 "Expected ERROR_BAD_CONFIGURATION, got %d\n",
r);
2368 r = pMsiSourceListAddMediaDiskA(prodcode, usersid,
2390 lstrcpyA(keypath,
"Software\\Classes\\Installer\\Products\\");
2396 skip(
"Product key creation failed with error code %ld\n",
res);
2402 r = pMsiSourceListAddMediaDiskA(prodcode,
NULL,
2406 "Expected ERROR_BAD_CONFIGURATION, got %d\n",
r);
2412 r = pMsiSourceListAddMediaDiskA(prodcode,
NULL,
2417 skip(
"MsiSourceListAddMediaDisk (insufficient privileges)\n");
2429 r = pMsiSourceListAddMediaDiskA(prodcode, usersid,
2433 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
2460 if (!pMsiSourceListEnumMediaDisksA)
2462 win_skip(
"MsiSourceListEnumMediaDisksA is not available\n");
2469 skip(
"User SID not available -> skipping MsiSourceListEnumMediaDisksA tests\n");
2479 labelsz =
sizeof(
label);
2480 promptsz =
sizeof(prompt);
2485 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
2488 labelsz =
sizeof(
label);
2489 promptsz =
sizeof(prompt);
2494 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
2497 labelsz =
sizeof(
label);
2498 promptsz =
sizeof(prompt);
2503 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
2506 labelsz =
sizeof(
label);
2507 promptsz =
sizeof(prompt);
2508 r = pMsiSourceListEnumMediaDisksA(
"51CD2AD5-0482-4C46-8DDD-0ED1022AA1AA",
2513 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
2516 labelsz =
sizeof(
label);
2517 promptsz =
sizeof(prompt);
2518 r = pMsiSourceListEnumMediaDisksA(
"{51CD2AD5-0482-4C46-8DDD-0ED1022AA1AA}",
2523 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
2526 labelsz =
sizeof(
label);
2527 promptsz =
sizeof(prompt);
2530 0, &
id,
label, &labelsz,
2533 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
2536 labelsz =
sizeof(
label);
2537 promptsz =
sizeof(prompt);
2540 0, &
id,
label, &labelsz,
2543 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
2546 labelsz =
sizeof(
label);
2547 promptsz =
sizeof(prompt);
2552 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
2556 lstrcpyA(keypath,
"Software\\Microsoft\\Installer\\Products\\");
2563 labelsz =
sizeof(
label);
2564 promptsz =
sizeof(prompt);
2569 "Expected ERROR_BAD_CONFIGURATION, got %d\n",
r);
2577 labelsz = 0xdeadbeef;
2579 promptsz = 0xdeadbeef;
2584 "Expected ERROR_NO_MORE_ITEMS, got %d\n",
r);
2585 ok(
id == 0xbeef,
"Expected 0xbeef, got %lu\n",
id);
2587 ok(labelsz == 0xdeadbeef,
"Expected 0xdeadbeef, got %lu\n", labelsz);
2588 ok(!
lstrcmpA(prompt,
"bbb"),
"Expected \"bbb\", got \"%s\"\n", prompt);
2589 ok(promptsz == 0xdeadbeef,
"Expected 0xdeadbeef, got %lu\n", promptsz);
2597 labelsz = 0xdeadbeef;
2599 promptsz = 0xdeadbeef;
2604 "Expected ERROR_NO_MORE_ITEMS, got %d\n",
r);
2605 ok(
id == 0xbeef,
"Expected 0xbeef, got %lu\n",
id);
2607 ok(labelsz == 0xdeadbeef,
"Expected 0xdeadbeef, got %lu\n", labelsz);
2608 ok(!
lstrcmpA(prompt,
"bbb"),
"Expected \"bbb\", got \"%s\"\n", prompt);
2609 ok(promptsz == 0xdeadbeef,
"Expected 0xdeadbeef, got %lu\n", promptsz);
2624 ok(
id == 1,
"Expected 1, got %lu\n",
id);
2626 ok(labelsz == 5,
"Expected 5, got %lu\n", labelsz);
2627 ok(!
lstrcmpA(prompt,
"prompt"),
"Expected \"prompt\", got \"%s\"\n", prompt);
2628 ok(promptsz == 6,
"Expected 6, got %lu\n", promptsz);
2641 "Expected ERROR_SUCCESS or ERROR_INVALID_PARAMETER, got %d\n",
r);
2644 ok(
id == 2,
"Expected 2, got %lu\n",
id);
2645 ok(labelsz == 3,
"Expected 3, got %lu\n", labelsz);
2646 ok(promptsz == 3,
"Expected 3, got %lu\n", promptsz);
2659 "Expected ERROR_SUCCESS or ERROR_INVALID_PARAMETER, got %d\n",
r);
2662 ok(
id == 2,
"Expected 2, got %lu\n",
id);
2664 ok(labelsz == 3,
"Expected 3, got %lu\n", labelsz);
2665 ok(!
lstrcmpA(prompt,
"two"),
"Expected \"two\", got \"%s\"\n", prompt);
2666 ok(promptsz == 3,
"Expected 3, got %lu\n", promptsz);
2670 ok(
id == 0xbeef,
"Expected 0xbeef, got %lu\n",
id);
2672 ok(labelsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", labelsz);
2673 ok(!
lstrcmpA(prompt,
"bbb"),
"Expected \"bbb\", got \"%s\"\n", prompt);
2674 ok(promptsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", promptsz);
2690 ok(
id == 1,
"Expected 1, got %lu\n",
id);
2692 ok(labelsz == 5,
"Expected 5, got %lu\n", labelsz);
2693 ok(!
lstrcmpA(prompt,
"prompt"),
"Expected \"prompt\", got \"%s\"\n", prompt);
2694 ok(promptsz == 6,
"Expected 6, got %lu\n", promptsz);
2706 ok(
id == 2,
"Expected 2, got %lu\n",
id);
2708 ok(labelsz == 3,
"Expected 3, got %lu\n", labelsz);
2709 ok(!
lstrcmpA(prompt,
"two"),
"Expected \"two\", got \"%s\"\n", prompt);
2710 ok(promptsz == 3,
"Expected 3, got %lu\n", promptsz);
2722 ok(
id == 4,
"Expected 4, got %lu\n",
id);
2724 ok(labelsz == 5,
"Expected 5, got %lu\n", labelsz);
2725 ok(!
lstrcmpA(prompt,
"four"),
"Expected \"four\", got \"%s\"\n", prompt);
2726 ok(promptsz == 4,
"Expected 4, got %lu\n", promptsz);
2738 "Expected ERROR_NO_MORE_ITEMS, got %d\n",
r);
2739 ok(
id == 0xbeef,
"Expected 0xbeef, got %lu\n",
id);
2741 ok(labelsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", labelsz);
2742 ok(!
lstrcmpA(prompt,
"bbb"),
"Expected \"bbb\", got \"%s\"\n", prompt);
2743 ok(promptsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", promptsz);
2755 ok(
id == 1,
"Expected 1, got %lu\n",
id);
2757 ok(labelsz == 5,
"Expected 5, got %lu\n", labelsz);
2758 ok(!
lstrcmpA(prompt,
"prompt"),
"Expected \"prompt\", got \"%s\"\n", prompt);
2759 ok(promptsz == 6,
"Expected 6, got %lu\n", promptsz);
2771 ok(
id == 1,
"Expected 1, got %lu\n",
id);
2773 ok(labelsz == 5,
"Expected 5, got %lu\n", labelsz);
2774 ok(!
lstrcmpA(prompt,
"prompt"),
"Expected \"prompt\", got \"%s\"\n", prompt);
2775 ok(promptsz == 6,
"Expected 6, got %lu\n", promptsz);
2787 ok(
id == 0xbeef,
"Expected 0xbeef, got %lu\n",
id);
2789 ok(labelsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", labelsz);
2790 ok(!
lstrcmpA(prompt,
"bbb"),
"Expected \"bbb\", got \"%s\"\n", prompt);
2791 ok(promptsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", promptsz);
2803 ok(
id == 2,
"Expected 2, got %lu\n",
id);
2805 ok(labelsz == 3,
"Expected 3, got %lu\n", labelsz);
2806 ok(!
lstrcmpA(prompt,
"two"),
"Expected \"two\", got \"%s\"\n", prompt);
2807 ok(promptsz == 3,
"Expected 3, got %lu\n", promptsz);
2819 ok(
id == 0xbeef,
"Expected 0xbeef, got %lu\n",
id);
2821 ok(labelsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", labelsz);
2822 ok(!
lstrcmpA(prompt,
"bbb"),
"Expected \"bbb\", got \"%s\"\n", prompt);
2823 ok(promptsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", promptsz);
2835 ok(labelsz == 5,
"Expected 5, got %lu\n", labelsz);
2836 ok(!
lstrcmpA(prompt,
"prompt"),
"Expected \"prompt\", got \"%s\"\n", prompt);
2837 ok(promptsz == 6,
"Expected 6, got %lu\n", promptsz);
2848 "Expected ERROR_SUCCESS or ERROR_INVALID_PARAMETER, got %d\n",
r);
2851 ok(
id == 1,
"Expected 1, got %lu\n",
id);
2852 ok(labelsz == 5,
"Expected 5, got %lu\n", labelsz);
2853 ok(!
lstrcmpA(prompt,
"prompt"),
"Expected \"prompt\", got \"%s\"\n", prompt);
2854 ok(promptsz == 6,
"Expected 6, got %lu\n", promptsz);
2865 ok(
id == 1,
"Expected 1, got %lu\n",
id);
2866 ok(!
lstrcmpA(prompt,
"prompt"),
"Expected \"prompt\", got \"%s\"\n", prompt);
2867 ok(promptsz == 6,
"Expected 6, got %lu\n", promptsz);
2878 "Expected ERROR_SUCCESS or ERROR_INVALID_PARAMETER, got %d\n",
r);
2881 ok(
id == 1,
"Expected 1, got %lu\n",
id);
2883 ok(!
lstrcmpA(prompt,
"prompt"),
"Expected \"prompt\", got \"%s\"\n", prompt);
2884 ok(promptsz == 6,
"Expected 6, got %lu\n", promptsz);
2898 ok(
id == 1,
"Expected 1, got %lu\n",
id);
2900 ok(labelsz == 5,
"Expected 5, got %lu\n", labelsz);
2901 ok(promptsz == 6,
"Expected 6, got %lu\n", promptsz);
2912 ok(
id == 1,
"Expected 1, got %lu\n",
id);
2914 ok(labelsz == 5,
"Expected 5, got %lu\n", labelsz);
2925 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
2926 ok(
id == 0xbeef,
"Expected 0xbeef, got %lu\n",
id);
2928 ok(labelsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", labelsz);
2929 ok(!
lstrcmpA(prompt,
"bbb"),
"Expected \"bbb\", got \"%s\"\n", prompt);
2939 ok(
id == 1,
"Expected 1, got %lu\n",
id);
2947 ok(
id == 1,
"Expected 1, got %lu\n",
id);
2959 ok(labelsz == 5,
"Expected 5, got %lu\n", labelsz);
2960 ok(!
lstrcmpA(prompt,
"bbb"),
"Expected \"bbb\", got \"%s\"\n", prompt);
2961 ok(promptsz == 6,
"Expected 6, got %lu\n", promptsz);
2973 ok(labelsz == 5,
"Expected 5, got %lu\n", labelsz);
2974 ok(!
lstrcmpA(prompt,
"bbb"),
"Expected \"bbb\", got \"%s\"\n", prompt);
2975 ok(promptsz == 6,
"Expected 6, got %lu\n", promptsz);
2990 ok(
id == 1,
"Expected 1, got %lu\n",
id);
2992 ok(labelsz == 5,
"Expected 5, got %lu\n", labelsz);
2993 ok(!
lstrcmpA(prompt,
"label"),
"Expected \"label\", got \"%s\"\n", prompt);
2994 ok(promptsz == 5,
"Expected 5, got %lu\n", promptsz);
3009 ok(
id == 1,
"Expected 1, got %lu\n",
id);
3011 ok(labelsz == 5,
"Expected 5, got %lu\n", labelsz);
3012 ok(!
lstrcmpA(prompt,
""),
"Expected \"\", got \"%s\"\n", prompt);
3013 ok(promptsz == 0,
"Expected 0, got %lu\n", promptsz);
3028 ok(
id == 1,
"Expected 1, got %lu\n",
id);
3030 ok(labelsz == 0,
"Expected 0, got %lu\n", labelsz);
3031 ok(!
lstrcmpA(prompt,
"prompt"),
"Expected \"prompt\", got \"%s\"\n", prompt);
3032 ok(promptsz == 6,
"Expected 6, got %lu\n", promptsz);
3047 ok(
id == 1,
"Expected 1, got %lu\n",
id);
3049 ok(labelsz == 0,
"Expected 0, got %lu\n", labelsz);
3050 ok(!
lstrcmpA(prompt,
""),
"Expected \"\", got \"%s\"\n", prompt);
3051 ok(promptsz == 0,
"Expected 0, got %lu\n", promptsz);
3067 ok(
id == 1,
"Expected 1, got %lu\n",
id);
3069 ok(labelsz == 3,
"Expected 3, got %lu\n", labelsz);
3070 ok(!
lstrcmpA(prompt,
"#42"),
"Expected \"#42\", got \"%s\"\n", prompt);
3071 ok(promptsz == 3,
"Expected 3, got %lu\n", promptsz);
3085 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\Managed\\");
3087 lstrcatA(keypath,
"\\Installer\\Products\\");
3093 skip(
"Product key creation failed with error code %ld\n",
res);
3102 "Expected ERROR_BAD_CONFIGURATION, got %d\n",
r);
3110 labelsz = 0xdeadbeef;
3112 promptsz = 0xdeadbeef;
3117 "Expected ERROR_NO_MORE_ITEMS, got %d\n",
r);
3118 ok(
id == 0xbeef,
"Expected 0xbeef, got %lu\n",
id);
3120 ok(labelsz == 0xdeadbeef,
"Expected 0xdeadbeef, got %lu\n", labelsz);
3121 ok(!
lstrcmpA(prompt,
"bbb"),
"Expected \"bbb\", got \"%s\"\n", prompt);
3122 ok(promptsz == 0xdeadbeef,
"Expected 0xdeadbeef, got %lu\n", promptsz);
3130 labelsz = 0xdeadbeef;
3132 promptsz = 0xdeadbeef;
3137 "Expected ERROR_NO_MORE_ITEMS, got %d\n",
r);
3138 ok(
id == 0xbeef,
"Expected 0xbeef, got %lu\n",
id);
3140 ok(labelsz == 0xdeadbeef,
"Expected 0xdeadbeef, got %lu\n", labelsz);
3141 ok(!
lstrcmpA(prompt,
"bbb"),
"Expected \"bbb\", got \"%s\"\n", prompt);
3142 ok(promptsz == 0xdeadbeef,
"Expected 0xdeadbeef, got %lu\n", promptsz);
3157 ok(
id == 2,
"Expected 2, got %lu\n",
id);
3159 ok(labelsz == 5,
"Expected 5, got %lu\n", labelsz);
3160 ok(!
lstrcmpA(prompt,
"prompt"),
"Expected \"prompt\", got \"%s\"\n", prompt);
3161 ok(promptsz == 6,
"Expected 6, got %lu\n", promptsz);
3174 lstrcpyA(keypath,
"Software\\Classes\\Installer\\Products\\");
3180 skip(
"Product key creation failed with error code %ld\n",
res);
3190 "Expected ERROR_BAD_CONFIGURATION, got %d\n",
r);
3198 labelsz = 0xdeadbeef;
3200 promptsz = 0xdeadbeef;
3205 "Expected ERROR_NO_MORE_ITEMS, got %d\n",
r);
3206 ok(
id == 0xbeef,
"Expected 0xbeef, got %lu\n",
id);
3208 ok(labelsz == 0xdeadbeef,
"Expected 0xdeadbeef, got %lu\n", labelsz);
3209 ok(!
lstrcmpA(prompt,
"bbb"),
"Expected \"bbb\", got \"%s\"\n", prompt);
3210 ok(promptsz == 0xdeadbeef,
"Expected 0xdeadbeef, got %lu\n", promptsz);
3218 labelsz = 0xdeadbeef;
3220 promptsz = 0xdeadbeef;
3225 "Expected ERROR_NO_MORE_ITEMS, got %d\n",
r);
3226 ok(
id == 0xbeef,
"Expected 0xbeef, got %lu\n",
id);
3228 ok(labelsz == 0xdeadbeef,
"Expected 0xdeadbeef, got %lu\n", labelsz);
3229 ok(!
lstrcmpA(prompt,
"bbb"),
"Expected \"bbb\", got \"%s\"\n", prompt);
3230 ok(promptsz == 0xdeadbeef,
"Expected 0xdeadbeef, got %lu\n", promptsz);
3245 ok(
id == 2,
"Expected 2, got %lu\n",
id);
3247 ok(labelsz == 5,
"Expected 5, got %lu\n", labelsz);
3248 ok(!
lstrcmpA(prompt,
"prompt"),
"Expected \"prompt\", got \"%s\"\n", prompt);
3249 ok(promptsz == 6,
"Expected 6, got %lu\n", promptsz);
3261 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
3262 ok(
id == 0xbeef,
"Expected 0xbeef, got %lu\n",
id);
3264 ok(labelsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", labelsz);
3265 ok(!
lstrcmpA(prompt,
"bbb"),
"Expected \"bbb\", got \"%s\"\n", prompt);
3266 ok(promptsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", promptsz);
3291 if (!pMsiSourceListAddSourceA)
3293 win_skip(
"Skipping MsiSourceListAddSourceA tests\n");
3298 skip(
"process is limited\n");
3305 skip(
"User SID not available -> skipping MsiSourceListAddSourceA tests\n");
3324 r = pMsiSourceListAddSourceA(
"",
username, 0,
"source");
3328 r = pMsiSourceListAddSourceA(
"garbage",
username, 0,
"source");
3332 r = pMsiSourceListAddSourceA(
"51CD2AD5-0482-4C46-8DDD-0ED1022AA1AA",
username, 0,
"source");
3336 r = pMsiSourceListAddSourceA(
"{51CD2AD5-0482-4C46-8DDD-0ED1022AA1AA}",
username, 0,
"source");
3340 r = pMsiSourceListAddSourceA(prodcode,
username, 42,
"source");
3348 r = pMsiSourceListAddSourceA(prodcode,
username, 0,
"");
3353 r = pMsiSourceListAddSourceA(prodcode,
username, 0,
"source");
3356 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\Managed\\");
3358 lstrcatA(keypath,
"\\Installer\\Products\\");
3364 skip(
"Product key creation failed with error code %ld\n",
res);
3365 goto userunmanaged_tests;
3369 r = pMsiSourceListAddSourceA(prodcode,
username, 0,
"source");
3376 r = pMsiSourceListAddSourceA(prodcode,
username, 0,
"source");
3397 r = pMsiSourceListAddSourceA(prodcode,
username, 0,
"source");
3415 r = pMsiSourceListAddSourceA(prodcode,
username, 0,
"source");
3426 r = pMsiSourceListAddSourceA(prodcode,
username, 0,
"another\\");
3437 r = pMsiSourceListAddSourceA(prodcode,
username, 0,
"third/");
3458 r = pMsiSourceListAddSourceA(prodcode,
username, 0,
"source");
3461 lstrcpyA(keypath,
"Software\\Microsoft\\Installer\\Products\\");
3467 skip(
"Product key creation failed with error code %ld\n",
res);
3472 r = pMsiSourceListAddSourceA(prodcode,
username, 0,
"source");
3479 r = pMsiSourceListAddSourceA(prodcode,
username, 0,
"source");
3499 r = pMsiSourceListAddSourceA(prodcode,
NULL, 0,
"source");
3502 lstrcpyA(keypath,
"Software\\Classes\\Installer\\Products\\");
3508 skip(
"Product key creation failed with error code %ld\n",
res);
3514 r = pMsiSourceListAddSourceA(prodcode,
NULL, 0,
"source");
3521 r = pMsiSourceListAddSourceA(prodcode,
NULL, 0,
"source");
3528 skip(
"MsiSourceListAddSource (insufficient privileges)\n");
3536 r = pMsiSourceListAddSourceA(prodcode,
"", 0,
"another");
3559 if (pIsWow64Process)
void user(int argc, const char *argv[])
#define RegCloseKey(hKey)
LONG WINAPI RegCreateKeyA(HKEY hKey, LPCSTR lpSubKey, PHKEY phkResult)
LONG WINAPI RegSetValueExA(HKEY hKey, LPCSTR lpValueName, DWORD Reserved, DWORD dwType, CONST BYTE *lpData, DWORD cbData)
LONG WINAPI RegOpenKeyExA(_In_ HKEY hKey, _In_ LPCSTR lpSubKey, _In_ DWORD ulOptions, _In_ REGSAM samDesired, _Out_ PHKEY phkResult)
LONG WINAPI RegDeleteKeyExA(_In_ HKEY hKey, _In_ LPCSTR lpSubKey, _In_ REGSAM samDesired, _In_ DWORD Reserved)
LONG WINAPI RegOpenKeyA(HKEY hKey, LPCSTR lpSubKey, PHKEY phkResult)
LONG WINAPI RegDeleteValueA(HKEY hKey, LPCSTR lpValueName)
LONG WINAPI RegQueryValueExA(_In_ HKEY hkeyorg, _In_ LPCSTR name, _In_ LPDWORD reserved, _Out_opt_ LPDWORD type, _Out_opt_ LPBYTE data, _Inout_opt_ LPDWORD count)
LONG WINAPI RegCreateKeyExA(_In_ HKEY hKey, _In_ LPCSTR lpSubKey, _In_ DWORD Reserved, _In_ LPSTR lpClass, _In_ DWORD dwOptions, _In_ REGSAM samDesired, _In_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, _Out_ PHKEY phkResult, _Out_ LPDWORD lpdwDisposition)
LONG WINAPI RegDeleteKeyA(_In_ HKEY hKey, _In_ LPCSTR lpSubKey)
BOOL WINAPI GetTokenInformation(HANDLE TokenHandle, TOKEN_INFORMATION_CLASS TokenInformationClass, LPVOID TokenInformation, DWORD TokenInformationLength, PDWORD ReturnLength)
BOOL WINAPI OpenProcessToken(HANDLE ProcessHandle, DWORD DesiredAccess, PHANDLE TokenHandle)
BOOL WINAPI ConvertSidToStringSidA(PSID Sid, LPSTR *StringSid)
#define ERROR_INVALID_PARAMETER
#define GetCurrentProcess()
#define ERROR_NO_MORE_ITEMS
#define WideCharToMultiByte
#define MultiByteToWideChar
#define ERROR_ACCESS_DENIED
static const WCHAR valueW[]
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
UINT WINAPI MsiSourceListEnumSourcesA(const char *szProductCodeOrPatch, const char *szUserSid, MSIINSTALLCONTEXT dwContext, DWORD dwOptions, DWORD dwIndex, char *szSource, DWORD *pcchSource)
UINT WINAPI MsiSourceListEnumMediaDisksA(const char *szProductCodeOrPatchCode, const char *szUserSid, MSIINSTALLCONTEXT dwContext, DWORD dwOptions, DWORD dwIndex, DWORD *pdwDiskId, char *szVolumeLabel, DWORD *pcchVolumeLabel, char *szDiskPrompt, DWORD *pcchDiskPrompt)
UINT WINAPI MsiSourceListAddSourceExA(LPCSTR szProduct, LPCSTR szUserSid, MSIINSTALLCONTEXT dwContext, DWORD dwOptions, LPCSTR szSource, DWORD dwIndex)
UINT WINAPI MsiSourceListSetInfoA(LPCSTR szProduct, LPCSTR szUserSid, MSIINSTALLCONTEXT dwContext, DWORD dwOptions, LPCSTR szProperty, LPCSTR szValue)
UINT WINAPI MsiSourceListGetInfoW(LPCWSTR szProduct, LPCWSTR szUserSid, MSIINSTALLCONTEXT dwContext, DWORD dwOptions, LPCWSTR szProperty, LPWSTR szValue, LPDWORD pcchValue)
UINT WINAPI MsiSourceListAddMediaDiskA(LPCSTR szProduct, LPCSTR szUserSid, MSIINSTALLCONTEXT dwContext, DWORD dwOptions, DWORD dwDiskId, LPCSTR szVolumeLabel, LPCSTR szDiskPrompt)
UINT WINAPI MsiSourceListAddSourceA(LPCSTR szProduct, LPCSTR szUserName, DWORD dwReserved, LPCSTR szSource)
UINT WINAPI MsiSourceListGetInfoA(LPCSTR szProduct, LPCSTR szUserSid, MSIINSTALLCONTEXT dwContext, DWORD dwOptions, LPCSTR szProperty, LPSTR szValue, LPDWORD pcchValue)
HRESULT WINAPI CoCreateGuid(GUID *pguid)
HRESULT WINAPI CLSIDFromString(LPCOLESTR idstr, LPCLSID id)
INT WINAPI StringFromGUID2(REFGUID id, LPOLESTR str, INT cmax)
GLuint GLuint GLsizei GLenum type
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLdouble GLdouble GLdouble r
GLuint GLint GLboolean GLint GLenum access
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat token
HLOCAL NTAPI LocalFree(HLOCAL hMem)
int WINAPI lstrcmpiA(LPCSTR lpString1, LPCSTR lpString2)
LPSTR WINAPI lstrcpyA(LPSTR lpString1, LPCSTR lpString2)
int WINAPI lstrcmpA(LPCSTR lpString1, LPCSTR lpString2)
LPSTR WINAPI lstrcatA(LPSTR lpString1, LPCSTR lpString2)
int WINAPI lstrlenA(LPCSTR lpString)
#define ERROR_FILE_NOT_FOUND
static BOOL is_process_limited(void)
static const WCHAR label[]
static HINSTANCE hkernel32
static char * get_user_sid(void)
static void test_MsiSourceListAddMediaDisk(void)
#define GET_PROC(dll, func)
static void test_MsiSourceListSetInfo(void)
#define CHECK_REG_STR(prodkey, name, expected)
static void init_functionpointers(void)
static void test_MsiSourceListAddSource(void)
static void test_MsiSourceListGetInfo(void)
static void test_MsiSourceListAddSourceEx(void)
static WCHAR * strdupAW(const char *str)
static void check_reg_str(HKEY prodkey, LPCSTR name, LPCSTR expected, BOOL bcase, DWORD line)
static void test_MsiSourceListEnumMediaDisks(void)
static void create_test_guid(LPSTR prodcode, LPSTR squashed)
static void test_MsiSourceListEnumSources(void)
#define INSTALLPROPERTY_LASTUSEDTYPEA
#define INSTALLPROPERTY_MEDIAPACKAGEPATHA
#define INSTALLPROPERTY_LASTUSEDSOURCEA
#define INSTALLPROPERTY_DISKPROMPTA
static const WCHAR INSTALLPROPERTY_LASTUSEDSOURCEW[]
@ MSIINSTALLCONTEXT_MACHINE
@ MSIINSTALLCONTEXT_ALLUSERMANAGED
@ MSIINSTALLCONTEXT_USERUNMANAGED
@ MSIINSTALLCONTEXT_USERMANAGED
#define INSTALLPROPERTY_PACKAGENAMEA
BOOL squash_guid(LPCWSTR in, LPWSTR out) DECLSPEC_HIDDEN
#define delete_key(r, p, s)
BOOLEAN WINAPI GetUserNameExA(EXTENDED_NAME_FORMAT NameFormat, LPSTR lpNameBuffer, PULONG nSize)
#define ERROR_UNKNOWN_PRODUCT
#define ERROR_UNKNOWN_PATCH
#define ERROR_UNKNOWN_PROPERTY
#define ERROR_BAD_CONFIGURATION
#define HKEY_LOCAL_MACHINE
#define HKEY_CURRENT_USER