2447{
2459
2460 if (!pMsiSourceListEnumMediaDisksA)
2461 {
2462 win_skip(
"MsiSourceListEnumMediaDisksA is not available\n");
2463 return;
2464 }
2465
2468 {
2469 skip(
"User SID not available -> skipping MsiSourceListEnumMediaDisksA tests\n");
2470 return;
2471 }
2472
2475
2476
2477
2478
2479 labelsz =
sizeof(
label);
2480 promptsz = sizeof(prompt);
2483 prompt, &promptsz);
2485 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
2486
2487
2488 labelsz =
sizeof(
label);
2489 promptsz = sizeof(prompt);
2492 prompt, &promptsz);
2494 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
2495
2496
2497 labelsz =
sizeof(
label);
2498 promptsz = sizeof(prompt);
2501 prompt, &promptsz);
2503 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
2504
2505
2506 labelsz =
sizeof(
label);
2507 promptsz = sizeof(prompt);
2508 r = pMsiSourceListEnumMediaDisksA(
"51CD2AD5-0482-4C46-8DDD-0ED1022AA1AA",
2511 prompt, &promptsz);
2513 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
2514
2515
2516 labelsz =
sizeof(
label);
2517 promptsz = sizeof(prompt);
2518 r = pMsiSourceListEnumMediaDisksA(
"{51CD2AD5-0482-4C46-8DDD-0ED1022AA1AA}",
2521 prompt, &promptsz);
2523 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
2524
2525
2526 labelsz =
sizeof(
label);
2527 promptsz = sizeof(prompt);
2530 0, &
id,
label, &labelsz,
2531 prompt, &promptsz);
2533 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
2534
2535
2536 labelsz =
sizeof(
label);
2537 promptsz = sizeof(prompt);
2540 0, &
id,
label, &labelsz,
2541 prompt, &promptsz);
2543 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
2544
2545
2546 labelsz =
sizeof(
label);
2547 promptsz = sizeof(prompt);
2550 prompt, &promptsz);
2552 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
2553
2554
2555
2556 lstrcpyA(keypath,
"Software\\Microsoft\\Installer\\Products\\");
2558
2561
2562
2563 labelsz =
sizeof(
label);
2564 promptsz = sizeof(prompt);
2567 prompt, &promptsz);
2569 "Expected ERROR_BAD_CONFIGURATION, got %d\n",
r);
2570
2573
2574
2575 id = 0xbeef;
2577 labelsz = 0xdeadbeef;
2579 promptsz = 0xdeadbeef;
2582 prompt, &promptsz);
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);
2590
2593
2594
2595 id = 0xbeef;
2597 labelsz = 0xdeadbeef;
2599 promptsz = 0xdeadbeef;
2602 prompt, &promptsz);
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);
2610
2613
2614
2615 id = 0;
2622 prompt, &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);
2629
2632
2633
2634 id = 0;
2641 "Expected ERROR_SUCCESS or ERROR_INVALID_PARAMETER, got %d\n",
r);
2643 {
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);
2647 }
2648
2649
2650 id = 0xbeef;
2657 prompt, &promptsz);
2659 "Expected ERROR_SUCCESS or ERROR_INVALID_PARAMETER, got %d\n",
r);
2661 {
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);
2667 }
2669 {
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);
2675 }
2676
2679
2680
2681 id = 0;
2688 prompt, &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);
2695
2696
2697 id = 0;
2704 prompt, &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);
2711
2712
2713 id = 0;
2720 prompt, &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);
2727
2728
2729 id = 0xbeef;
2736 prompt, &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);
2744
2745
2746 id = 0;
2753 prompt, &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);
2760
2761
2762 id = 0;
2769 prompt, &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);
2776
2777
2778 id = 0xbeef;
2785 prompt, &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);
2792
2793
2794 id = 0xbeef;
2801 prompt, &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);
2808
2809
2810 id = 0xbeef;
2817 prompt, &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);
2824
2825
2832 prompt, &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);
2838
2839
2840 id = 0;
2846 prompt, &promptsz);
2848 "Expected ERROR_SUCCESS or ERROR_INVALID_PARAMETER, got %d\n",
r);
2850 {
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);
2855 }
2856
2857
2858 id = 0;
2863 prompt, &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);
2868
2869
2870 id = 0xbeef;
2876 prompt, &promptsz);
2878 "Expected ERROR_SUCCESS or ERROR_INVALID_PARAMETER, got %d\n",
r);
2880 {
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);
2885 }
2886
2887
2888 id = 0;
2897 {
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);
2902 }
2903
2904
2905 id = 0;
2912 ok(
id == 1,
"Expected 1, got %lu\n",
id);
2914 ok(labelsz == 5,
"Expected 5, got %lu\n", labelsz);
2915
2916
2917 id = 0xbeef;
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);
2930
2931
2932 id = 0;
2939 ok(
id == 1,
"Expected 1, got %lu\n",
id);
2940
2941
2942 id = 0;
2947 ok(
id == 1,
"Expected 1, got %lu\n",
id);
2948
2949
2951 labelsz = 5;
2956 prompt, &promptsz);
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);
2962
2963
2967 promptsz = 6;
2970 prompt, &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);
2976
2979
2980
2981 id = 0;
2988 prompt, &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);
2995
2998
2999
3000 id = 0;
3007 prompt, &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);
3014
3017
3018
3019 id = 0;
3026 prompt, &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);
3033
3036
3037
3038 id = 0;
3045 prompt, &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);
3052
3056
3057
3058 id = 0;
3065 prompt, &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);
3072
3082
3083
3084
3085 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\Managed\\");
3087 lstrcatA(keypath,
"\\Installer\\Products\\");
3089
3092 {
3093 skip(
"Product key creation failed with error code %ld\n",
res);
3094 goto machine_tests;
3095 }
3096
3097
3100 prompt, &promptsz);
3102 "Expected ERROR_BAD_CONFIGURATION, got %d\n",
r);
3103
3106
3107
3108 id = 0xbeef;
3110 labelsz = 0xdeadbeef;
3112 promptsz = 0xdeadbeef;
3115 prompt, &promptsz);
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);
3123
3126
3127
3128 id = 0xbeef;
3130 labelsz = 0xdeadbeef;
3132 promptsz = 0xdeadbeef;
3135 prompt, &promptsz);
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);
3143
3146
3147
3148 id = 0;
3155 prompt, &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);
3162
3170
3171
3172
3173machine_tests:
3174 lstrcpyA(keypath,
"Software\\Classes\\Installer\\Products\\");
3176
3179 {
3180 skip(
"Product key creation failed with error code %ld\n",
res);
3182 return;
3183 }
3184
3185
3188 prompt, &promptsz);
3190 "Expected ERROR_BAD_CONFIGURATION, got %d\n",
r);
3191
3194
3195
3196 id = 0xbeef;
3198 labelsz = 0xdeadbeef;
3200 promptsz = 0xdeadbeef;
3203 prompt, &promptsz);
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);
3211
3214
3215
3216 id = 0xbeef;
3218 labelsz = 0xdeadbeef;
3220 promptsz = 0xdeadbeef;
3223 prompt, &promptsz);
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);
3231
3234
3235
3236 id = 0;
3243 prompt, &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);
3250
3251
3252 id = 0xbeef;
3259 prompt, &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);
3267
3276}
#define ERROR_NO_MORE_ITEMS
static const WCHAR label[]