38#define SQUASHED_GUID_SIZE (33)
41static const char msifile[] =
"winetest.msi";
87#define GET_PROC(dll, func) \
88 p ## func = (void *)GetProcAddress(dll, #func); \
90 trace("GetProcAddress(%s) failed\n", #func);
118#define MEDIA_SIZE 0x7FFFFFFF
119#define FOLDER_THRESHOLD 900000
138 IStorage_Release(stg);
152 IStream_Release(stm);
153 IStorage_Release(stg);
161 "Directory\tDirectory_Parent\tDefaultDir\n"
163 "Directory\tDirectory\n"
164 "MSITESTDIR\tProgramFilesFolder\tmsitest\n"
165 "ProgramFilesFolder\tTARGETDIR\t.\n"
166 "TARGETDIR\t\tSourceDir";
169 "Component\tComponentId\tDirectory_\tAttributes\tCondition\tKeyPath\n"
170 "s72\tS38\ts72\ti2\tS255\tS72\n"
171 "Component\tComponent\n"
172 "One\t{8F5BAEEF-DD92-40AC-9397-BE3CF9F97C81}\tMSITESTDIR\t2\tNOT REINSTALL\tone.txt\n";
175 "Feature\tFeature_Parent\tTitle\tDescription\tDisplay\tLevel\tDirectory_\tAttributes\n"
176 "s38\tS38\tL64\tL255\tI2\ti2\tS72\ti2\n"
178 "One\t\tOne\tOne\t1\t3\tMSITESTDIR\t0\n"
179 "Two\t\t\t\t2\t1\tTARGETDIR\t0\n";
182 "Feature_\tComponent_\n"
184 "FeatureComponents\tFeature_\tComponent_\n"
188 "File\tComponent_\tFileName\tFileSize\tVersion\tLanguage\tAttributes\tSequence\n"
189 "s72\ts72\tl255\ti4\tS72\tS20\tI2\ti2\n"
191 "one.txt\tOne\tone.txt\t1000\t\t\t0\t1\n";
194 "Action\tCondition\tSequence\n"
196 "InstallExecuteSequence\tAction\n"
197 "ValidateProductID\t\t700\n"
198 "CostInitialize\t\t800\n"
200 "CostFinalize\t\t1000\n"
201 "InstallValidate\t\t1400\n"
202 "InstallInitialize\t\t1500\n"
203 "ProcessComponents\t\t1600\n"
204 "UnpublishFeatures\t\t1800\n"
205 "RemoveFiles\t\t3500\n"
206 "InstallFiles\t\t4000\n"
207 "RegisterProduct\t\t6100\n"
208 "PublishFeatures\t\t6300\n"
209 "PublishProduct\t\t6400\n"
210 "InstallFinalize\t\t6600";
213 "DiskId\tLastSequence\tDiskPrompt\tCabinet\tVolumeLabel\tSource\n"
214 "i2\ti4\tL64\tS255\tS32\tS72\n"
216 "1\t1\t\t\tDISK1\t\n";
221 "Property\tProperty\n"
223 "Manufacturer\tWine\n"
224 "ProductCode\t{38847338-1BBC-4104-81AC-2FAAC7ECDDCD}\n"
225 "ProductName\tMSITEST\n"
226 "ProductVersion\t1.1.1\n"
227 "UpgradeCode\t{9574448F-9B86-4E07-B6F6-8D199DA12127}\n"
228 "MSIFASTINSTALL\t1\n";
233 "Property\tProperty\n"
235 "Manufacturer\tWine\n"
236 "ProductCode\t{FF4AFE9C-6AC2-44F9-A060-9EA6BD16C75E}\n"
237 "ProductName\tMSITEST2\n"
238 "ProductVersion\t1.1.1\n"
239 "UpgradeCode\t{6B60C3CA-B8CA-4FB7-A395-092D98FF5D2A}\n"
240 "MSIFASTINSTALL\t1\n";
243 "Component\tComponentId\tDirectory_\tAttributes\tCondition\tKeyPath\n"
244 "s72\tS38\ts72\ti2\tS255\tS72\n"
245 "Component\tComponent\n"
246 "hydrogen\t{C844BD1E-1907-4C00-8BC9-150BD70DF0A1}\tMSITESTDIR\t2\t\thydrogen\n"
247 "helium\t{5AD3C142-CEF8-490D-B569-784D80670685}\tMSITESTDIR\t2\t\thelium\n"
248 "lithium\t{4AF28FFC-71C7-4307-BDE4-B77C5338F56F}\tMSITESTDIR\t2\tPROPVAR=42\tlithium\n";
251 "Feature\tFeature_Parent\tTitle\tDescription\tDisplay\tLevel\tDirectory_\tAttributes\n"
252 "s38\tS38\tL64\tL255\tI2\ti2\tS72\ti2\n"
254 "hydroxyl\t\thydroxyl\thydroxyl\t2\t1\tTARGETDIR\t0\n"
255 "heliox\t\theliox\theliox\t2\t5\tTARGETDIR\t0\n"
256 "lithia\t\tlithia\tlithia\t2\t10\tTARGETDIR\t0";
259 "Feature_\tComponent_\n"
261 "FeatureComponents\tFeature_\tComponent_\n"
262 "hydroxyl\thydrogen\n"
267 "File\tComponent_\tFileName\tFileSize\tVersion\tLanguage\tAttributes\tSequence\n"
268 "s72\ts72\tl255\ti4\tS72\tS20\tI2\ti2\n"
270 "hydrogen\thydrogen\thydrogen\t0\t\t\t8192\t1\n"
271 "helium\thelium\thelium\t0\t\t\t8192\t1\n"
272 "lithium\tlithium\tlithium\t0\t\t\t8192\t1";
275 "Component\tComponentId\tDirectory_\tAttributes\tCondition\tKeyPath\n"
276 "s72\tS38\ts72\ti2\tS255\tS72\n"
277 "Component\tComponent\n"
278 "maximus\t{DF2CBABC-3BCC-47E5-A998-448D1C0C895B}\tMSITESTDIR\t0\tUILevel=5\tmaximus\n";
281 "Feature\tFeature_Parent\tTitle\tDescription\tDisplay\tLevel\tDirectory_\tAttributes\n"
282 "s38\tS38\tL64\tL255\tI2\ti2\tS72\ti2\n"
284 "feature\t\tFeature\tFeature\t2\t1\tTARGETDIR\t0\n"
285 "montecristo\t\tFeature\tFeature\t2\t1\tTARGETDIR\t0";
288 "File\tComponent_\tFileName\tFileSize\tVersion\tLanguage\tAttributes\tSequence\n"
289 "s72\ts72\tl255\ti4\tS72\tS20\tI2\ti2\n"
291 "maximus\tmaximus\tmaximus\t500\t\t\t8192\t1";
294 "Feature_\tComponent_\n"
296 "FeatureComponents\tFeature_\tComponent_\n"
298 "montecristo\tmaximus";
301 "Action\tCondition\tSequence\n"
303 "InstallExecuteSequence\tAction\n"
304 "ValidateProductID\t\t700\n"
305 "CostInitialize\t\t800\n"
307 "CostFinalize\t\t1000\n"
308 "InstallValidate\t\t1400\n"
309 "InstallInitialize\t\t1500\n"
310 "ProcessComponents\tPROCESS_COMPONENTS=1 Or FULL=1\t1600\n"
311 "UnpublishFeatures\tUNPUBLISH_FEATURES=1 Or FULL=1\t1800\n"
312 "RemoveFiles\t\t3500\n"
313 "InstallFiles\t\t4000\n"
314 "RegisterUser\tREGISTER_USER=1 Or FULL=1\t6000\n"
315 "RegisterProduct\tREGISTER_PRODUCT=1 Or FULL=1\t6100\n"
316 "PublishFeatures\tPUBLISH_FEATURES=1 Or FULL=1\t6300\n"
317 "PublishProduct\tPUBLISH_PRODUCT=1 Or FULL=1\t6400\n"
318 "InstallFinalize\t\t6600";
321 "DiskId\tLastSequence\tDiskPrompt\tCabinet\tVolumeLabel\tSource\n"
322 "i2\ti4\tL64\tS255\tS32\tS72\n"
324 "1\t1\t\t\tDISK1\t\n";
327 "DiskId\tLastSequence\tDiskPrompt\tCabinet\tVolumeLabel\tSource\n"
328 "i2\ti4\tL64\tS255\tS32\tS72\n"
330 "1\t1\t\ttest1.cab\tDISK1\t\n";
333 "DiskId\tLastSequence\tDiskPrompt\tCabinet\tVolumeLabel\tSource\n"
334 "i2\ti4\tL64\tS255\tS32\tS72\n"
336 "1\t1\t\t#test1.cab\tDISK1\t\n";
339 "Action\tType\tSource\tTarget\tISComments\n"
340 "s72\ti2\tS64\tS0\tS255\n"
341 "CustomAction\tAction\n"
342 "SetFolderProp\t51\tMSITESTDIR\t[ProgramFilesFolder]\\msitest\\added\t\n"
343 "SetFolderProp2\t51\tMSITESTDIR\t[ProgramFilesFolder]\\msitest\\added\\added2\t\n";
346 "Action\tCondition\tSequence\n"
348 "InstallExecuteSequence\tAction\n"
349 "CostInitialize\t\t800\n"
351 "SetFolderProp\t\t950\n"
352 "SetFolderProp2\t\t960\n"
353 "CostFinalize\t\t1000\n"
354 "InstallValidate\t\t1400\n"
355 "InstallInitialize\t\t1500\n"
356 "InstallFiles\t\t4000\n"
357 "InstallServices\t\t5000\n"
358 "InstallFinalize\t\t6600\n";
361 "Action\tCondition\tSequence\n"
363 "InstallUISequence\tAction\n"
364 "CostInitialize\t\t800\n"
366 "CostFinalize\t\t1000\n"
367 "ExecuteAction\t\t1100\n";
370 "Directory\tDirectory_Parent\tDefaultDir\n"
372 "Directory\tDirectory\n"
373 "PARENTDIR\tTARGETDIR\tparent\n"
374 "CHILDDIR\tPARENTDIR\tchild\n"
375 "MSITESTDIR\tProgramFilesFolder\tmsitest\n"
376 "ProgramFilesFolder\tTARGETDIR\t.\n"
377 "TARGETDIR\t\tSourceDir";
380 "Component\tComponentId\tDirectory_\tAttributes\tCondition\tKeyPath\n"
381 "s72\tS38\ts72\ti2\tS255\tS72\n"
382 "Component\tComponent\n"
383 "maximus\t{DF2CBABC-3BCC-47E5-A998-448D1C0C895B}\tMSITESTDIR\t0\tUILevel=5\tmaximus\n";
386 "Action\tCondition\tSequence\n"
388 "InstallExecuteSequence\tAction\n"
389 "CostInitialize\t\t800\n"
391 "FormatParentFolderCheck\t\t910\n"
392 "FormatChildFolderCheck\t\t920\n"
393 "CheckParentFolder\tNOT PARENTDIR=PARENTDIRCHECK\t930\n"
394 "CheckChildFolder\tNOT CHILDDIR=CHILDDIRCHECK\t940\n"
395 "FormatParentFolderCheck2\t\t945\n"
396 "SetParentFolder\t\t950\n"
397 "CheckParentFolder2\tNOT PARENTDIR=PARENTDIRCHECK\t960\n"
398 "CheckChildFolder2\tNOT CHILDDIR=CHILDDIRCHECK\t970\n"
399 "CostFinalize\t\t1000\n"
400 "FormatParentFolderCheck3\t\t1005\n"
401 "CheckParentFolder3\tNOT PARENTDIR=PARENTDIRCHECK\t1010\n"
402 "CheckChildFolder3\tNOT CHILDDIR=CHILDDIRCHECK\t1020\n"
403 "InstallValidate\t\t1400\n"
404 "InstallInitialize\t\t1500\n"
405 "InstallFiles\t\t4000\n"
406 "CreateShortcuts\t\t4100\n"
407 "InstallFinalize\t\t6600\n";
410 "Action\tType\tSource\tTarget\tISComments\n"
411 "s72\ti2\tS64\tS0\tS255\n"
412 "CustomAction\tAction\n"
413 "FormatParentFolderCheck\t51\tPARENTDIRCHECK\t[TARGETDIR]parent\\\t\n"
414 "FormatChildFolderCheck\t51\tCHILDDIRCHECK\t[TARGETDIR]parent\\child\\\t\n"
415 "CheckParentFolder\t19\tPARENTDIR\tparent prop wrong before set: [PARENTDIR]\t\n"
416 "CheckChildFolder\t19\tCHILDDIR\tchild prop wrong before set: [CHILDDIR]\t\n"
417 "FormatParentFolderCheck2\t51\tPARENTDIRCHECK\t[ProgramFilesFolder]msitest\\parent\t\n"
418 "SetParentFolder\t51\tPARENTDIR\t[PARENTDIRCHECK]\t\n"
419 "CheckParentFolder2\t19\tPARENTDIR\tparent prop wrong after set: [PARENTDIR]\t\n"
420 "CheckChildFolder2\t19\tCHILDDIR\tchild prop wrong after set: [CHILDDIR]\t\n"
421 "FormatParentFolderCheck3\t51\tPARENTDIRCHECK\t[ProgramFilesFolder]msitest\\parent\\\t\n"
422 "CheckParentFolder3\t19\tPARENTDIR\tparent prop wrong after CostFinalize: [PARENTDIR]\t\n"
423 "CheckChildFolder3\t19\tCHILDDIR\tchild prop wrong after CostFinalize: [CHILDDIR]\t\n";
426 "Shortcut\tDirectory_\tName\tComponent_\tTarget\tArguments\tDescription\tHotkey\tIcon_\tIconIndex\tShowCmd\tWkDir\n"
427 "s72\ts72\tl128\ts72\ts72\tS255\tL255\tI2\tS72\tI2\tI2\tS72\n"
428 "Shortcut\tShortcut\n"
429 "Shortcut\tCHILDDIR\tShortcut\tmaximus\t[#maximus]\t\tShortcut\t\t\t\t\tMSITESTDIR\n";
432 "File\tComponent_\tFileName\tFileSize\tVersion\tLanguage\tAttributes\tSequence\n"
433 "s72\ts72\tl255\ti4\tS72\tS20\tI2\ti2\n"
435 "sourcedir.txt\tsourcedir\tsourcedir.txt\t1000\t\t\t8192\t1\n";
438 "Feature\tFeature_Parent\tTitle\tDescription\tDisplay\tLevel\tDirectory_\tAttributes\n"
439 "s38\tS38\tL64\tL255\tI2\ti2\tS72\ti2\n"
441 "sourcedir\t\t\tsourcedir feature\t1\t2\tMSITESTDIR\t0\n";
444 "Feature_\tComponent_\n"
446 "FeatureComponents\tFeature_\tComponent_\n"
447 "sourcedir\tsourcedir\n";
450 "Component\tComponentId\tDirectory_\tAttributes\tCondition\tKeyPath\n"
451 "s72\tS38\ts72\ti2\tS255\tS72\n"
452 "Component\tComponent\n"
453 "sourcedir\t{DD422F92-3ED8-49B5-A0B7-F266F98357DF}\tMSITESTDIR\t0\t\tsourcedir.txt\n";
456 "Action\tCondition\tSequence\n"
458 "InstallUISequence\tAction\n"
459 "TestSourceDirProp1\tnot SourceDir and not SOURCEDIR and not Installed\t99\n"
461 "TestSourceDirProp2\tnot SourceDir and not SOURCEDIR and not Installed\t101\n"
462 "LaunchConditions\tnot Installed \t110\n"
463 "TestSourceDirProp3\tnot SourceDir and not SOURCEDIR and not Installed\t111\n"
464 "FindRelatedProducts\t\t120\n"
465 "TestSourceDirProp4\tnot SourceDir and not SOURCEDIR and not Installed\t121\n"
467 "TestSourceDirProp5\tnot SourceDir and not SOURCEDIR and not Installed\t131\n"
468 "RMCCPSearch\t\t140\n"
469 "TestSourceDirProp6\tnot SourceDir and not SOURCEDIR and not Installed\t141\n"
470 "ValidateProductID\t\t150\n"
471 "TestSourceDirProp7\tnot SourceDir and not SOURCEDIR and not Installed\t151\n"
472 "CostInitialize\t\t800\n"
473 "TestSourceDirProp8\tnot SourceDir and not SOURCEDIR and not Installed\t801\n"
475 "TestSourceDirProp9\tnot SourceDir and not SOURCEDIR and not Installed\t901\n"
476 "IsolateComponents\t\t1000\n"
477 "TestSourceDirProp10\tnot SourceDir and not SOURCEDIR and not Installed\t1001\n"
478 "CostFinalize\t\t1100\n"
479 "TestSourceDirProp11\tnot SourceDir and not SOURCEDIR and not Installed\t1101\n"
480 "MigrateFeatureStates\t\t1200\n"
481 "TestSourceDirProp12\tnot SourceDir and not SOURCEDIR and not Installed\t1201\n"
482 "ExecuteAction\t\t1300\n"
483 "TestSourceDirProp13\tnot SourceDir and not SOURCEDIR and not Installed\t1301\n";
486 "Action\tCondition\tSequence\n"
488 "InstallExecuteSequence\tAction\n"
489 "TestSourceDirProp14\tSourceDir and SOURCEDIR and not Installed\t99\n"
490 "LaunchConditions\t\t100\n"
491 "TestSourceDirProp15\tSourceDir and SOURCEDIR and not Installed\t101\n"
492 "ValidateProductID\t\t700\n"
493 "TestSourceDirProp16\tSourceDir and SOURCEDIR and not Installed\t701\n"
494 "CostInitialize\t\t800\n"
495 "TestSourceDirProp17\tSourceDir and SOURCEDIR and not Installed\t801\n"
496 "ResolveSource\tResolveSource and not Installed\t850\n"
497 "TestSourceDirProp18\tResolveSource and not SourceDir and not SOURCEDIR and not Installed\t851\n"
498 "TestSourceDirProp19\tnot ResolveSource and SourceDir and SOURCEDIR and not Installed\t852\n"
500 "TestSourceDirProp20\tSourceDir and SOURCEDIR and not Installed\t901\n"
501 "IsolateComponents\t\t1000\n"
502 "TestSourceDirProp21\tSourceDir and SOURCEDIR and not Installed\t1001\n"
503 "CostFinalize\t\t1100\n"
504 "TestSourceDirProp22\tSourceDir and SOURCEDIR and not Installed\t1101\n"
505 "MigrateFeatureStates\t\t1200\n"
506 "TestSourceDirProp23\tSourceDir and SOURCEDIR and not Installed\t1201\n"
507 "InstallValidate\t\t1400\n"
508 "TestSourceDirProp24\tSourceDir and SOURCEDIR and not Installed\t1401\n"
509 "InstallInitialize\t\t1500\n"
510 "TestSourceDirProp25\tSourceDir and SOURCEDIR and not Installed\t1501\n"
511 "ProcessComponents\t\t1600\n"
512 "TestSourceDirProp26\tnot SourceDir and not SOURCEDIR and not Installed\t1601\n"
513 "UnpublishFeatures\t\t1800\n"
514 "TestSourceDirProp27\tnot SourceDir and not SOURCEDIR and not Installed\t1801\n"
515 "RemoveFiles\t\t3500\n"
516 "TestSourceDirProp28\tnot SourceDir and not SOURCEDIR and not Installed\t3501\n"
517 "InstallFiles\t\t4000\n"
518 "TestSourceDirProp29\tnot SourceDir and not SOURCEDIR and not Installed\t4001\n"
519 "RegisterUser\t\t6000\n"
520 "TestSourceDirProp30\tnot SourceDir and not SOURCEDIR and not Installed\t6001\n"
521 "RegisterProduct\t\t6100\n"
522 "TestSourceDirProp31\tnot SourceDir and not SOURCEDIR and not Installed\t6101\n"
523 "PublishFeatures\t\t6300\n"
524 "TestSourceDirProp32\tnot SourceDir and not SOURCEDIR and not Installed\t6301\n"
525 "PublishProduct\t\t6400\n"
526 "TestSourceDirProp33\tnot SourceDir and not SOURCEDIR and not Installed\t6401\n"
527 "InstallExecute\t\t6500\n"
528 "TestSourceDirProp34\tnot SourceDir and not SOURCEDIR and not Installed\t6501\n"
529 "InstallFinalize\t\t6600\n"
530 "TestSourceDirProp35\tnot SourceDir and not SOURCEDIR and not Installed\t6601\n";
533 "Action\tType\tSource\tTarget\tISComments\n"
534 "s72\ti2\tS64\tS0\tS255\n"
535 "CustomAction\tAction\n"
536 "TestSourceDirProp1\t19\t\tTest 1 failed\t\n"
537 "TestSourceDirProp2\t19\t\tTest 2 failed\t\n"
538 "TestSourceDirProp3\t19\t\tTest 3 failed\t\n"
539 "TestSourceDirProp4\t19\t\tTest 4 failed\t\n"
540 "TestSourceDirProp5\t19\t\tTest 5 failed\t\n"
541 "TestSourceDirProp6\t19\t\tTest 6 failed\t\n"
542 "TestSourceDirProp7\t19\t\tTest 7 failed\t\n"
543 "TestSourceDirProp8\t19\t\tTest 8 failed\t\n"
544 "TestSourceDirProp9\t19\t\tTest 9 failed\t\n"
545 "TestSourceDirProp10\t19\t\tTest 10 failed\t\n"
546 "TestSourceDirProp11\t19\t\tTest 11 failed\t\n"
547 "TestSourceDirProp12\t19\t\tTest 12 failed\t\n"
548 "TestSourceDirProp13\t19\t\tTest 13 failed\t\n"
549 "TestSourceDirProp14\t19\t\tTest 14 failed\t\n"
550 "TestSourceDirProp15\t19\t\tTest 15 failed\t\n"
551 "TestSourceDirProp16\t19\t\tTest 16 failed\t\n"
552 "TestSourceDirProp17\t19\t\tTest 17 failed\t\n"
553 "TestSourceDirProp18\t19\t\tTest 18 failed\t\n"
554 "TestSourceDirProp19\t19\t\tTest 19 failed\t\n"
555 "TestSourceDirProp20\t19\t\tTest 20 failed\t\n"
556 "TestSourceDirProp21\t19\t\tTest 21 failed\t\n"
557 "TestSourceDirProp22\t19\t\tTest 22 failed\t\n"
558 "TestSourceDirProp23\t19\t\tTest 23 failed\t\n"
559 "TestSourceDirProp24\t19\t\tTest 24 failed\t\n"
560 "TestSourceDirProp25\t19\t\tTest 25 failed\t\n"
561 "TestSourceDirProp26\t19\t\tTest 26 failed\t\n"
562 "TestSourceDirProp27\t19\t\tTest 27 failed\t\n"
563 "TestSourceDirProp28\t19\t\tTest 28 failed\t\n"
564 "TestSourceDirProp29\t19\t\tTest 29 failed\t\n"
565 "TestSourceDirProp30\t19\t\tTest 30 failed\t\n"
566 "TestSourceDirProp31\t19\t\tTest 31 failed\t\n"
567 "TestSourceDirProp32\t19\t\tTest 32 failed\t\n"
568 "TestSourceDirProp33\t19\t\tTest 33 failed\t\n"
569 "TestSourceDirProp34\t19\t\tTest 34 failed\t\n"
570 "TestSourceDirProp35\t19\t\tTest 35 failed\t\n";
573 "Action\tCondition\tSequence\n"
575 "InstallExecuteSequence\tAction\n"
576 "CostInitialize\t\t800\n"
578 "CostFinalize\t\t1000\n"
579 "InstallValidate\t\t1400\n"
580 "InstallInitialize\t\t1500\n"
581 "RunInstall\tnot Installed\t1550\n"
582 "ProcessComponents\t\t1600\n"
583 "UnpublishFeatures\t\t1800\n"
584 "RemoveFiles\t\t3500\n"
585 "InstallFiles\t\t4000\n"
586 "RegisterProduct\t\t6100\n"
587 "PublishFeatures\t\t6300\n"
588 "PublishProduct\t\t6400\n"
589 "InstallFinalize\t\t6600\n";
592 "Action\tType\tSource\tTarget\tISComments\n"
593 "s72\ti2\tS64\tS0\tS255\n"
594 "CustomAction\tAction\n"
595 "RunInstall\t23\tmsitest\\concurrent.msi\tMYPROP=[UILevel]\t\n";
598 "Component\tComponentId\tDirectory_\tAttributes\tCondition\tKeyPath\n"
599 "s72\tS38\ts72\ti2\tS255\tS72\n"
600 "Component\tComponent\n"
601 "maximus\t{DF2CBABC-3BCC-47E5-A998-448D1C0C895B}\tMSITESTDIR\t0\tUILevel=5\tmaximus\n";
604 "Component\tComponentId\tDirectory_\tAttributes\tCondition\tKeyPath\n"
605 "s72\tS38\ts72\ti2\tS255\tS72\n"
606 "Component\tComponent\n"
607 "augustus\t\tMSITESTDIR\t0\tUILevel=3 AND MYPROP=5\taugustus\n";
610 "Feature_\tComponent_\n"
612 "FeatureComponents\tFeature_\tComponent_\n"
616 "File\tComponent_\tFileName\tFileSize\tVersion\tLanguage\tAttributes\tSequence\n"
617 "s72\ts72\tl255\ti4\tS72\tS20\tI2\ti2\n"
619 "augustus\taugustus\taugustus\t500\t\t\t8192\t1";
622 "Action\tType\tSource\tTarget\tISComments\n"
623 "s72\ti2\tS64\tS0\tS255\n"
624 "CustomAction\tAction\n"
625 "TestCommandlineProp\t19\t\tTest1\t\n";
628 "Action\tCondition\tSequence\n"
630 "InstallExecuteSequence\tAction\n"
631 "LaunchConditions\t\t100\n"
632 "ValidateProductID\t\t700\n"
633 "CostInitialize\t\t800\n"
635 "CostFinalize\t\t1000\n"
636 "TestCommandlineProp\tP=\"one\"\t1100\n"
637 "InstallInitialize\t\t1500\n"
638 "ProcessComponents\t\t1600\n"
639 "InstallValidate\t\t1400\n"
640 "InstallFinalize\t\t5000\n";
793 "Installation Database");
797 "Installation Database");
809 "{A2078D65-94D6-4205-8DEE-F68D6FD622AA}");
847 "CREATE TABLE `Directory` ( "
848 "`Directory` CHAR(255) NOT NULL, "
849 "`Directory_Parent` CHAR(255), "
850 "`DefaultDir` CHAR(255) NOT NULL "
851 "PRIMARY KEY `Directory`)");
855 "CREATE TABLE `Property` ( "
856 "`Property` CHAR(72) NOT NULL, "
858 "PRIMARY KEY `Property`)");
862 "(`Property`, `Value`) "
863 "VALUES( 'ProductCode', '%s' )", prodcode);
877 if (!pMsiUseFeatureExA)
879 win_skip(
"MsiUseFeatureExA not implemented\n");
892 r = pMsiUseFeatureExA(
NULL,
"WORDVIEWFiles", -2, 1 );
895 r = pMsiUseFeatureExA(
"{90850409-6000-11d3-8cfe-0150048383c9}",
899 r = pMsiUseFeatureExA(
"{9085040-6000-11d3-8cfe-0150048383c9}",
900 "WORDVIEWFiles", -2, 0 );
903 r = pMsiUseFeatureExA(
"{0085040-6000-11d3-8cfe-0150048383c9}",
904 "WORDVIEWFiles", -2, 0 );
907 r = pMsiUseFeatureExA(
"{90850409-6000-11d3-8cfe-0150048383c9}",
908 "WORDVIEWFiles", -2, 1 );
914 if (pRegDeleteKeyExA)
915 return pRegDeleteKeyExA(
key, subkey,
access, 0 );
924 DWORD dwType, cbData;
932 r = pMsiOpenPackageExW(
NULL, 0, &hpkg);
960 skip(
"Not enough rights to perform tests\n");
969 if (!(lpData =
malloc(cbData)))
skip(
"Out of memory\n");
980 skip(
"Not enough rights to perform tests\n");
1030 if(!pMsiGetComponentPathA)
1036 r = pMsiGetComponentPathA(
"bogus",
"bogus",
NULL,
NULL );
1039 r = pMsiGetComponentPathA(
"bogus",
"{00000000-0000-0000-000000000000}",
NULL,
NULL );
1044 r = pMsiGetComponentPathA(
"bogus",
"{00000000-0000-0000-000000000000}",
buffer, &sz );
1047 r = pMsiGetComponentPathA(
"{00000000-78E1-11D2-B60F-006097C998E7}",
1048 "{00000000-0000-0000-0000-000000000000}",
buffer, &sz );
1051 r = pMsiGetComponentPathA(
"{00000409-78E1-11D2-B60F-006097C998E7}",
1052 "{00000000-0000-0000-0000-00000000}",
buffer, &sz );
1055 r = pMsiGetComponentPathA(
"{00000409-78E1-11D2-B60F-006097C998E7}",
1056 "{029E403D-A86A-1D11-5B5B0006799C897E}",
buffer, &sz );
1059 r = pMsiGetComponentPathA(
"{00000000-78E1-11D2-B60F-006097C9987e}",
1060 "{00000000-A68A-11d1-5B5B-0006799C897E}",
buffer, &sz );
1098#define HASHSIZE sizeof(MSIFILEHASHINFO)
1115 { 0x98500190, 0xb04fd23c, 0x7d3f96d6, 0x727fe128 },
1119 {
"C:\\Program Files\\msitest\\caesar\n", 0,
1121 { 0x2b566794, 0xfd42181b, 0x2514d6e4, 0x5768b4e2 },
1125 {
"C:\\Program Files\\msitest\\caesar\n", 500,
1127 { 0x58095058, 0x805efeff, 0x10f3483e, 0x0147d653 },
1134 const char name[] =
"msitest.bin";
1139 if (!pMsiGetFileHashA)
1141 win_skip(
"MsiGetFileHash not implemented\n");
1152 r = pMsiGetFileHashA(
"", 0, &
hash);
1154 "Expected ERROR_PATH_NOT_FOUND or ERROR_BAD_PATHNAME, got %d\n",
r);
1165 hash.dwFileHashInfoSize = 0;
1186 ok(!
ret,
"Hash incorrect\n");
1234 ok(
hr ==
S_OK,
"Expected S_OK, got %#lx\n",
hr);
1252 char *usersid =
NULL;
1290 ok(
error == 0xdeadbeef,
"expected 0xdeadbeef, got %lu\n",
error);
1297 ok(
error == 0xdeadbeef,
"expected 0xdeadbeef, got %lu\n",
error);
1304 ok(
error == 0xdeadbeef,
"expected 0xdeadbeef, got %lu\n",
error);
1311 ok(
error == 0xdeadbeef,
"expected 0xdeadbeef, got %lu\n",
error);
1325 ok(
error == 0xdeadbeef,
"expected 0xdeadbeef, got %lu\n",
error);
1335 lstrcpyA(keypath,
"Software\\Microsoft\\Installer\\Products\\");
1348 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\");
1354 skip(
"Not enough rights to perform tests\n");
1383 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\");
1391 skip(
"Not enough rights to perform tests\n");
1470 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\Managed\\");
1472 lstrcatA(keypath,
"\\Installer\\Products\\");
1480 "Expected INSTALLSTATE_ADVERTISED, got %d\n",
state);
1482 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\");
1492 "Expected INSTALLSTATE_ADVERTISED, got %d\n",
state);
1499 "Expected INSTALLSTATE_ADVERTISED, got %d\n",
state);
1519 lstrcpyA(keypath,
"Software\\Classes\\Installer\\Products\\");
1525 skip(
"insufficient rights\n" );
1534 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\");
1535 lstrcatA(keypath,
"S-1-5-18\\Products\\");
1543 "Expected INSTALLSTATE_ADVERTISED, got %d\n",
state);
1550 "Expected INSTALLSTATE_ADVERTISED, got %d\n",
state);
1572"!$%&'()*+,-.0123456789=?@ABCDEFGHIJKLMNO"
1573"PQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwx"
1582 unsigned int x, *
p,
i;
1584 p = (
unsigned int*)
guid;
1585 for(
i=0;
i<4;
i++ )
1611 ok(
hr ==
S_OK,
"Expected S_OK, got %#lx\n",
hr);
1614 ok(
size == 39,
"Expected 39, got %d\n",
size);
1625 HKEY userkey, localkey, compkey, compkey2;
1651 ok(
error == 0xdeadbeef,
"expected 0xdeadbeef, got %lu\n",
error);
1658 ok(
error == 0xdeadbeef,
"expected 0xdeadbeef, got %lu\n",
error);
1665 ok(
error == 0xdeadbeef,
"expected 0xdeadbeef, got %lu\n",
error);
1672 ok(
error == 0xdeadbeef,
"expected 0xdeadbeef, got %lu\n",
error);
1686 ok(
error == 0xdeadbeef,
"expected 0xdeadbeef, got %lu\n",
error);
1693 ok(
error == 0xdeadbeef,
"expected 0xdeadbeef, got %lu\n",
error);
1711 lstrcpyA(keypath,
"Software\\Microsoft\\Installer\\Features\\");
1734 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\");
1743 skip(
"Not enough rights to perform tests\n");
1794 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\");
1796 lstrcatA(keypath,
"\\Components\\");
1802 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\");
1804 lstrcatA(keypath,
"\\Components\\");
1898 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\Managed\\");
1900 lstrcatA(keypath,
"\\Installer\\Features\\");
1917 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\");
1954 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\");
1956 lstrcatA(keypath,
"\\Components\\");
1962 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\");
1964 lstrcatA(keypath,
"\\Components\\");
2005 lstrcpyA(keypath,
"Software\\Classes\\Installer\\Features\\");
2011 skip(
"insufficient rights\n" );
2028 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\");
2029 lstrcatA(keypath,
"S-1-5-18\\Products\\");
2064 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\");
2065 lstrcatA(keypath,
"S-1-5-18\\Components\\");
2071 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\");
2072 lstrcatA(keypath,
"S-1-5-18\\Components\\");
2115 HKEY compkey, prodkey;
2131 if (!pMsiQueryComponentStateA)
2133 win_skip(
"MsiQueryComponentStateA not implemented\n");
2145 state = MAGIC_ERROR;
2150 ok(
state == MAGIC_ERROR,
"Expected 0xdeadbeef, got %d\n",
state);
2151 ok(
error == 0xdeadbeef,
"expected 0xdeadbeef, got %lu\n",
error);
2154 state = MAGIC_ERROR;
2159 ok(
state == MAGIC_ERROR,
"Expected 0xdeadbeef, got %d\n",
state);
2160 ok(
error == 0xdeadbeef,
"expected 0xdeadbeef, got %lu\n",
error);
2163 state = MAGIC_ERROR;
2168 ok(
state == MAGIC_ERROR,
"Expected 0xdeadbeef, got %d\n",
state);
2169 ok(
error == 0xdeadbeef,
"expected 0xdeadbeef, got %lu\n",
error);
2172 state = MAGIC_ERROR;
2177 ok(
state == MAGIC_ERROR,
"Expected 0xdeadbeef, got %d\n",
state);
2178 ok(
error == 0xdeadbeef,
"expected 0xdeadbeef, got %lu\n",
error);
2181 state = MAGIC_ERROR;
2186 ok(
state == MAGIC_ERROR,
"Expected 0xdeadbeef, got %d\n",
state);
2187 ok(
error == 0xdeadbeef,
"expected 0xdeadbeef, got %lu\n",
error);
2190 state = MAGIC_ERROR;
2195 ok(
state == MAGIC_ERROR,
"Expected 0xdeadbeef, got %d\n",
state);
2196 ok(
error == 0xdeadbeef,
"expected 0xdeadbeef, got %lu\n",
error);
2198 state = MAGIC_ERROR;
2203 ok(
state == MAGIC_ERROR,
"Expected 0xdeadbeef, got %d\n",
state);
2204 ok(
error == 0xdeadbeef,
"expected 0xdeadbeef, got %lu\n",
error);
2206 lstrcpyA(keypath,
"Software\\Classes\\Installer\\Products\\");
2212 skip(
"Not enough rights to perform tests\n");
2218 state = MAGIC_ERROR;
2224 ok(
error == 0xdeadbeef,
"expected 0xdeadbeef, got %lu\n",
error);
2230 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\S-1-5-18\\Products\\");
2232 lstrcatA(keypath,
"\\InstallProperties");
2237 skip(
"Not enough rights to perform tests\n");
2244 state = MAGIC_ERROR;
2248 ok(
state == MAGIC_ERROR,
"Expected 0xdeadbeef, got %d\n",
state);
2249 ok(
error == 0xdeadbeef,
"expected 0xdeadbeef, got %lu\n",
error);
2255 state = MAGIC_ERROR;
2261 ok(
error == 0xdeadbeef,
"expected 0xdeadbeef, got %lu\n",
error);
2263 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\S-1-5-18\\Components\\");
2270 state = MAGIC_ERROR;
2276 ok(
error == 0xdeadbeef,
"expected 0xdeadbeef, got %lu\n",
error);
2282 state = MAGIC_ERROR;
2288 "Expected INSTALLSTATE_NOTUSED or INSTALLSTATE_LOCAL, got %d\n",
state);
2289 ok(
error == 0xdeadbeef,
"expected 0xdeadbeef, got %lu\n",
error);
2292 state = MAGIC_ERROR;
2297 ok(
state == MAGIC_ERROR,
"Expected state not changed, got %d\n",
state);
2298 ok(
error == 0xdeadbeef,
"expected 0xdeadbeef, got %lu\n",
error);
2304 state = MAGIC_ERROR;
2310 ok(
error == 0xdeadbeef,
"expected 0xdeadbeef, got %lu\n",
error);
2316 state = MAGIC_ERROR;
2322 ok(
error == 0xdeadbeef,
"expected 0xdeadbeef, got %lu\n",
error);
2328 state = MAGIC_ERROR;
2334 ok(
error == 0xdeadbeef,
"expected 0xdeadbeef, got %lu\n",
error);
2340 state = MAGIC_ERROR;
2346 ok(
error == 0xdeadbeef,
"expected 0xdeadbeef, got %lu\n",
error);
2352 state = MAGIC_ERROR;
2358 ok(
error == 0xdeadbeef,
"expected 0xdeadbeef, got %lu\n",
error);
2369 state = MAGIC_ERROR;
2372 ok(
state == MAGIC_ERROR,
"Expected 0xdeadbeef, got %d\n",
state);
2374 lstrcpyA(keypath,
"Software\\Microsoft\\Installer\\Products\\");
2380 state = MAGIC_ERROR;
2388 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\");
2392 lstrcatA(keypath,
"\\InstallProperties");
2402 state = MAGIC_ERROR;
2407 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\");
2409 lstrcatA(keypath,
"\\Components\\");
2416 state = MAGIC_ERROR;
2425 state = MAGIC_ERROR;
2429 "Expected INSTALLSTATE_NOTUSED or INSTALLSTATE_LOCAL, got %d\n",
state);
2434 state = MAGIC_ERROR;
2441 state = MAGIC_ERROR;
2444 ok(
state == MAGIC_ERROR,
"Expected 0xdeadbeef, got %d\n",
state);
2446 lstrcpyA(keypath,
"Software\\Microsoft\\Installer\\Products\\");
2452 state = MAGIC_ERROR;
2455 ok(
state == MAGIC_ERROR,
"Expected 0xdeadbeef, got %d\n",
state);
2460 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\Managed\\");
2462 lstrcatA(keypath,
"\\Installer\\Products\\");
2468 state = MAGIC_ERROR;
2476 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\");
2480 lstrcatA(keypath,
"\\InstallProperties");
2488 state = MAGIC_ERROR;
2505 HKEY compkey, prodkey, installprop;
2576 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\");
2577 lstrcatA(keypath,
"Installer\\UserData\\S-1-5-18\\Components\\");
2583 skip(
"Not enough rights to perform tests\n");
2609 ok(
size == 10,
"Expected 10, got %lu\n",
size);
2616 ok(
size == 10,
"Expected 10, got %lu\n",
size);
2618 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\");
2619 lstrcatA(keypath,
"Installer\\UserData\\S-1-5-18\\Products\\");
2621 lstrcatA(keypath,
"\\InstallProperties");
2636 ok(
size == 10,
"Expected 10, got %lu\n",
size);
2643 ok(
size == 10,
"Expected 10, got %lu\n",
size);
2653 ok(
size == 10,
"Expected 10, got %lu\n",
size);
2660 ok(
size == 10,
"Expected 10, got %lu\n",
size);
2667 ok(
size == 10,
"Expected 10, got %lu\n",
size);
2674 ok(
size == 10,
"Expected 10, got %lu\n",
size);
2684 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\");
2685 lstrcatA(keypath,
"Installer\\UserData\\");
2687 lstrcatA(keypath,
"\\Components\\");
2713 ok(
size == 10,
"Expected 10, got %lu\n",
size);
2720 ok(
size == 10,
"Expected 10, got %lu\n",
size);
2722 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\");
2723 lstrcatA(keypath,
"Installer\\UserData\\S-1-5-18\\Products\\");
2725 lstrcatA(keypath,
"\\InstallProperties");
2740 ok(
size == 10,
"Expected 10, got %lu\n",
size);
2747 ok(
size == 10,
"Expected 10, got %lu\n",
size);
2757 ok(
size == 10,
"Expected 10, got %lu\n",
size);
2764 ok(
size == 10,
"Expected 10, got %lu\n",
size);
2774 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\");
2775 lstrcatA(keypath,
"Installer\\Managed\\");
2777 lstrcatA(keypath,
"\\Installer\\Products\\");
2794 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\");
2795 lstrcatA(keypath,
"Installer\\UserData\\");
2797 lstrcatA(keypath,
"\\Components\\");
2823 ok(
size == 10,
"Expected 10, got %lu\n",
size);
2830 ok(
size == 10,
"Expected 10, got %lu\n",
size);
2832 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\");
2833 lstrcatA(keypath,
"Installer\\UserData\\S-1-5-18\\Products\\");
2835 lstrcatA(keypath,
"\\InstallProperties");
2850 ok(
size == 10,
"Expected 10, got %lu\n",
size);
2857 ok(
size == 10,
"Expected 10, got %lu\n",
size);
2867 ok(
size == 10,
"Expected 10, got %lu\n",
size);
2874 ok(
size == 10,
"Expected 10, got %lu\n",
size);
2886 lstrcpyA(keypath,
"Software\\Microsoft\\Installer\\Products\\");
2903 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\");
2904 lstrcatA(keypath,
"Installer\\UserData\\");
2906 lstrcatA(keypath,
"\\Components\\");
2932 ok(
size == 10,
"Expected 10, got %lu\n",
size);
2939 ok(
size == 10,
"Expected 10, got %lu\n",
size);
2949 ok(
size == 10,
"Expected 10, got %lu\n",
size);
2956 ok(
size == 10,
"Expected 10, got %lu\n",
size);
2965 lstrcpyA(keypath,
"Software\\Classes\\Installer\\Products\\");
2971 skip(
"insufficient rights\n" );
2988 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\");
2989 lstrcatA(keypath,
"Installer\\UserData\\S-1-5-18\\Components\\");
3015 ok(
size == 10,
"Expected 10, got %lu\n",
size);
3022 ok(
size == 10,
"Expected 10, got %lu\n",
size);
3032 ok(
size == 10,
"Expected 10, got %lu\n",
size);
3039 ok(
size == 10,
"Expected 10, got %lu\n",
size);
3052 HKEY key_comp, key_installprop, key_prod;
3061 if (!pMsiGetComponentPathExA)
3063 win_skip(
"MsiGetComponentPathExA not present\n" );
3109 lstrcpyA( path_key,
"Software\\Microsoft\\Windows\\CurrentVersion\\" );
3110 lstrcatA( path_key,
"Installer\\UserData\\S-1-5-18\\Components\\" );
3111 lstrcatA( path_key, comp_squashed );
3116 skip(
"insufficient rights\n" );
3138 lstrcpyA( path_key,
"Software\\Microsoft\\Windows\\CurrentVersion\\" );
3139 lstrcatA( path_key,
"Installer\\UserData\\S-1-5-18\\Products\\" );
3140 lstrcatA( path_key, prod_squashed );
3141 lstrcatA( path_key,
"\\InstallProperties" );
3183 lstrcpyA( path_key,
"Software\\Microsoft\\Installer\\Products\\" );
3184 lstrcatA( path_key, prod_squashed );
3195 lstrcpyA( path_key,
"Software\\Microsoft\\Windows\\CurrentVersion\\" );
3196 lstrcatA( path_key,
"Installer\\UserData\\" );
3198 lstrcatA( path_key,
"\\Components\\" );
3199 lstrcatA( path_key, comp_squashed );
3238 lstrcpyA( path_key,
"Software\\Microsoft\\Windows\\CurrentVersion\\" );
3239 lstrcatA( path_key,
"Installer\\Managed\\" );
3241 lstrcatA( path_key,
"\\Installer\\Products\\" );
3242 lstrcatA( path_key, prod_squashed );
3252 lstrcpyA( path_key,
"Software\\Microsoft\\Windows\\CurrentVersion\\" );
3253 lstrcatA( path_key,
"Installer\\UserData\\" );
3255 lstrcatA( path_key,
"\\Components\\" );
3256 lstrcatA( path_key, comp_squashed );
3277 lstrcpyA( path_key,
"Software\\Microsoft\\Windows\\CurrentVersion\\" );
3278 lstrcatA( path_key,
"Installer\\UserData\\S-1-5-18\\Products\\" );
3279 lstrcatA( path_key, prod_squashed );
3280 lstrcatA( path_key,
"\\InstallProperties" );
3316 lstrcpyA( path_key,
"Software\\Classes\\Installer\\Products\\" );
3317 lstrcatA( path_key, prod_squashed );
3322 skip(
"insufficient rights\n" );
3334 lstrcpyA( path_key,
"Software\\Microsoft\\Windows\\CurrentVersion\\" );
3335 lstrcatA( path_key,
"Installer\\UserData\\S-1-5-18\\Components\\" );
3336 lstrcatA( path_key, comp_squashed );
3387 skip(
"process is limited\n");
3399 r = pMsiProvideComponentA(
"{90120000-0070-0000-0000-4000000FF1CE}",
3400 "{17961602-C4E2-482E-800A-DF6E627549CF}",
3412 r = pMsiProvideComponentA(
"{38847338-1BBC-4104-81AC-2FAAC7ECDDCD}",
"sourcedir",
3413 "{DD422F92-3ED8-49B5-A0B7-F266F98357DF}",
3416 ok(
buf[0],
"empty path\n");
3420 r = pMsiProvideComponentA(
"{38847338-1BBC-4104-81AC-2FAAC7ECDDCD}",
"sourcedir",
3421 "{DD422F92-3ED8-49B5-A0B7-F266F98357DF}",
3424 ok(len2 ==
len,
"got %lu\n", len2);
3427 r = pMsiProvideComponentA(
"{38847338-1BBC-4104-81AC-2FAAC7ECDDCD}",
"sourcedir",
3428 "{DD422F92-3ED8-49B5-A0B7-F266F98357DF}",
3431 ok(len2 ==
len,
"got %lu\n", len2);
3437 r = pMsiProvideComponentW(
L"{38847338-1BBC-4104-81AC-2FAAC7ECDDCD}",
L"sourcedir",
3440 ok(bufW[0],
"empty path\n");
3444 r = pMsiProvideComponentW(
L"{38847338-1BBC-4104-81AC-2FAAC7ECDDCD}",
L"sourcedir",
3447 ok(len2 ==
len,
"got %lu\n", len2);
3450 r = pMsiProvideComponentW(
L"{38847338-1BBC-4104-81AC-2FAAC7ECDDCD}",
L"sourcedir",
3453 ok(len2 ==
len,
"got %lu\n", len2);
3467 char comp[39], comp_squashed[33], comp2[39], comp2_base85[21], comp2_squashed[33];
3468 char prod[39], prod_base85[21], prod_squashed[33];
3472 HKEY hkey, hkey2, hkey3, hkey4, hkey5;
3477 skip(
"process is limited\n" );
3488 lstrcpyA( keypath,
"Software\\Classes\\Installer\\Components\\" );
3489 lstrcatA( keypath, comp_squashed );
3498 lstrlenA(prod_base85) +
sizeof(
"feature<\0") );
3510 lstrcpyA( keypath,
"Software\\Classes\\Installer\\Products\\" );
3511 lstrcatA( keypath, prod_squashed );
3522 lstrcpyA( keypath,
"Software\\Classes\\Installer\\Features\\" );
3523 lstrcatA( keypath, prod_squashed );
3544 lstrcpyA( keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\S-1-5-18\\Products\\" );
3545 lstrcatA( keypath, prod_squashed );
3557 lstrcpyA( keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\S-1-5-18\\Components\\" );
3558 lstrcatA( keypath, comp2_squashed );
3605 HKEY compkey, prodkey;
3632 ok(!
lstrcmpA(product,
"prod"),
"Expected product to be unchanged, got %s\n", product);
3638 ok(!
lstrcmpA(product,
"prod"),
"Expected product to be unchanged, got %s\n", product);
3644 ok(!
lstrcmpA(product,
"prod"),
"Expected product to be unchanged, got %s\n", product);
3650 ok(!
lstrcmpA(product,
"prod"),
"Expected product to be unchanged, got %s\n", product);
3656 ok(!
lstrcmpA(product,
"prod"),
"Expected product to be unchanged, got %s\n", product);
3662 ok(!
lstrcmpA(product,
"prod"),
"Expected product to be unchanged, got %s\n", product);
3668 ok(!
lstrcmpA(product,
"prod"),
"Expected product to be unchanged, got %s\n", product);
3670 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\");
3671 lstrcatA(keypath,
"Installer\\UserData\\");
3673 lstrcatA(keypath,
"\\Components\\");
3679 skip(
"Not enough rights to perform tests\n");
3689 ok(!
lstrcmpA(product,
"prod"),
"Expected product to be unchanged, got %s\n", product);
3698 ok(!
lstrcmpA(product, prodcode),
"Expected %s, got %s\n", prodcode, product);
3703 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\");
3704 lstrcatA(keypath,
"Installer\\Managed\\");
3706 lstrcatA(keypath,
"\\Installer\\Products\\");
3716 ok(!
lstrcmpA(product, prodcode),
"Expected %s, got %s\n", prodcode, product);
3721 lstrcpyA(keypath,
"Software\\Microsoft\\Installer\\Products\\");
3731 ok(!
lstrcmpA(product, prodcode),
"Expected %s, got %s\n", prodcode, product);
3736 lstrcpyA(keypath,
"Software\\Classes\\Installer\\Products\\");
3742 skip(
"insufficient rights\n" );
3752 ok(!
lstrcmpA(product, prodcode),
"Expected %s, got %s\n", prodcode, product);
3757 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\");
3758 lstrcatA(keypath,
"Installer\\Managed\\");
3760 lstrcatA(keypath,
"\\Installer\\Products\\");
3770 ok(!
lstrcmpA(product, prodcode2),
"Expected %s, got %s\n", prodcode2, product);
3779 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\");
3780 lstrcatA(keypath,
"Installer\\UserData\\S-1-5-18\\Components\\");
3790 ok(!
lstrcmpA(product,
"prod"),
"Expected product to be unchanged, got %s\n", product);
3799 ok(!
lstrcmpA(product, prodcode),
"Expected %s, got %s\n", prodcode, product);
3804 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\");
3805 lstrcatA(keypath,
"Installer\\Managed\\");
3807 lstrcatA(keypath,
"\\Installer\\Products\\");
3817 ok(!
lstrcmpA(product, prodcode),
"Expected %s, got %s\n", prodcode, product);
3822 lstrcpyA(keypath,
"Software\\Microsoft\\Installer\\Products\\");
3832 ok(!
lstrcmpA(product, prodcode),
"Expected %s, got %s\n", prodcode, product);
3837 lstrcpyA(keypath,
"Software\\Classes\\Installer\\Products\\");
3843 skip(
"insufficient rights\n" );
3853 ok(!
lstrcmpA(product, prodcode),
"Expected %s, got %s\n", prodcode, product);
3858 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\");
3859 lstrcatA(keypath,
"Installer\\Managed\\");
3861 lstrcatA(keypath,
"\\Installer\\Products\\");
3871 ok(!
lstrcmpA(product, prodcode2),
"Expected %s, got %s\n", prodcode2, product);
3911 ok(!
lstrcmpA(product,
""),
"Expected product to be unchanged, got %s\n", product);
3917 ok(!
lstrcmpA(product,
""),
"Expected product to be unchanged, got %s\n", product);
3927 ok(!
lstrcmpA(product,
""),
"Expected product to be unchanged, got %s\n", product);
3929 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\");
3930 lstrcatA(keypath,
"Installer\\UserData\\");
3932 lstrcatA(keypath,
"\\Components\\");
3938 skip(
"Not enough rights to perform tests\n");
3948 ok(!
lstrcmpA(product,
""),
"Expected product to be unchanged, got %s\n", product);
3954 ok(!
lstrcmpA(product,
""),
"Expected product to be unchanged, got %s\n", product);
3962 ok(!
lstrcmpA(product, prodcode),
"Expected %s, got %s\n", prodcode, product);
3968 ok(!
lstrcmpA(product, prodcode),
"Expected %s, got %s\n", prodcode, product);
3974 ok(!
lstrcmpA(product,
""),
"Expected product to be unchanged, got %s\n", product);
3985 ok(!
lstrcmpA(product,
""),
"Expected product to be unchanged, got %s\n", product);
3993 "Expected %s or %s, got %s\n", prodcode, prodcode2, product);
4000 "Expected %s or %s, got %s\n", prodcode, prodcode2, product);
4007 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\");
4008 lstrcatA(keypath,
"Installer\\UserData\\S-1-5-18\\Components\\");
4018 ok(!
lstrcmpA(product,
""),
"Expected product to be unchanged, got %s\n", product);
4024 ok(!
lstrcmpA(product,
""),
"Expected product to be unchanged, got %s\n", product);
4033 ok(!
lstrcmpA(product, prodcode),
"Expected %s, got %s\n", prodcode, product);
4044 ok(!
lstrcmpA(product,
""),
"Expected product to be unchanged, got %s\n", product);
4055 ok(!
lstrcmpA(product,
""),
"Expected product to be unchanged, got %s\n", product);
4063 "Expected %s or %s, got %s\n", prodcode, prodcode2, product);
4070 "Expected %s or %s, got %s\n", prodcode, prodcode2, product);
4101 *langchecksz =
lstrlenA(*langcheck);
4109 DWORD versz, langsz;
4113 LPSTR vercheck, langcheck;
4114 DWORD verchecksz, langchecksz;
4126 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
4128 "Expected version to be unchanged, got %s\n",
version);
4131 "Expected lang to be unchanged, got %s\n",
lang);
4144 "Expected ERROR_FILE_NOT_FOUND, got %d\n",
r);
4146 "Expected version to be unchanged, got %s\n",
version);
4149 "Expected lang to be unchanged, got %s\n",
lang);
4159 "Expected ERROR_FILE_NOT_FOUND, got %d\n",
r);
4161 "Expected version to be unchanged, got %s\n",
version);
4164 "Expected lang to be unchanged, got %s\n",
lang);
4174 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
4176 "Expected version to be unchanged, got %s\n",
version);
4179 "Expected lang to be unchanged, got %s\n",
lang);
4189 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
4191 "Expected version to be unchanged, got %s\n",
version);
4194 "Expected lang to be unchanged, got %s\n",
lang);
4204 "Expected ERROR_FILE_NOT_FOUND, got %d\n",
r);
4206 "Expected version to be unchanged, got %s\n",
version);
4207 ok(versz == 0,
"Expected 0, got %lu\n", versz);
4209 "Expected lang to be unchanged, got %s\n",
lang);
4219 "Expected ERROR_FILE_NOT_FOUND, got %d\n",
r);
4221 "Expected version to be unchanged, got %s\n",
version);
4224 "Expected lang to be unchanged, got %s\n",
lang);
4225 ok(langsz == 0,
"Expected 0, got %lu\n", langsz);
4230 "Expected ERROR_FILE_NOT_FOUND, got %d\n",
r);
4245 "Expected version to be unchanged, got %s\n",
version);
4248 "Expected lang to be unchanged, got %s\n",
lang);
4250 "Expected ERROR_FILE_INVALID, got %d\n",
r);
4263 "Expected ERROR_FILE_NOT_FOUND, got %d\n",
r);
4265 "Expected version to be unchanged, got %s\n",
version);
4268 "Expected lang to be unchanged, got %s\n",
lang);
4284 if (langchecksz && !langsz)
4286 win_skip(
"broken MsiGetFileVersionA detected\n");
4291 ok(versz == verchecksz,
"Expected %lu, got %lu\n", verchecksz, versz);
4294 "Expected %s, got %s\n", vercheck,
version);
4301 ok(versz == verchecksz,
"Expected %lu, got %lu\n", verchecksz, versz);
4319 ok(versz == verchecksz,
"Expected %lu, got %lu\n", verchecksz, versz);
4325 ok(langsz >= langchecksz,
"Expected %lu >= %lu\n", langsz, langchecksz);
4333 "Expected first 4 characters of \"%s\", got \"%s\"\n", vercheck,
version);
4334 ok(versz == verchecksz,
"Expected %lu, got %lu\n", verchecksz, versz);
4342 ok(langsz >= langchecksz,
"Expected %lu >= %lu\n", langsz, langchecksz);
4350 ok(versz == verchecksz,
"Expected %lu, got %lu\n", verchecksz, versz);
4352 ok(langsz >= langchecksz && langsz < MAX_PATH, "Expected %lu >= %lu\
n", langsz, langchecksz);
4354 /* pcchVersionBuf not big enough, pcchLangBuf big enough */
4357 lstrcpyA(lang, "lang");
4358 r = MsiGetFileVersionA(path, NULL, &versz, lang, &langsz);
4360 ok(versz == verchecksz, "Expected %lu, got %lu\
n", verchecksz, versz);
4361 ok(langsz >= langchecksz && langsz < MAX_PATH, "Expected %lu >= %lu\
n", langsz, langchecksz);
4362 ok(strstr(lang, langcheck) != NULL, "expected %
s in %
s\
n", langcheck, lang);
4364 /* NULL pcchVersionBuf and pcchLangBuf */
4365 r = MsiGetFileVersionA(path, version, NULL, lang, NULL);
4368 /* All NULL except szFilePath */
4369 r = MsiGetFileVersionA(path, NULL, NULL, NULL, NULL);
4376static void test_MsiGetProductInfo(void)
4380 HKEY propkey, source;
4381 HKEY prodkey, localkey;
4382 CHAR prodcode[MAX_PATH];
4383 CHAR prod_squashed[MAX_PATH];
4384 CHAR packcode[MAX_PATH];
4385 CHAR pack_squashed[MAX_PATH];
4387 CHAR keypath[MAX_PATH];
4390 REGSAM access = KEY_ALL_ACCESS;
4392 create_test_guid(prodcode, prod_squashed);
4393 create_test_guid(packcode, pack_squashed);
4394 usersid = get_user_sid();
4397 access |= KEY_WOW64_64KEY;
4399 /* NULL szProduct */
4401 lstrcpyA(buf, "apple
");
4402 r = MsiGetProductInfoA(NULL, INSTALLPROPERTY_HELPLINKA, buf, &sz);
4403 ok(r == ERROR_INVALID_PARAMETER,
4405 ok(!lstrcmpA(buf, "apple
"), "Expected buf to be unchanged, got %
s\
n", buf);
4406 ok(sz == MAX_PATH, "got %lu\
n", sz);
4408 /* empty szProduct */
4410 lstrcpyA(buf, "apple
");
4411 r = MsiGetProductInfoA("", INSTALLPROPERTY_HELPLINKA, buf, &sz);
4412 ok(r == ERROR_INVALID_PARAMETER,
4414 ok(!lstrcmpA(buf, "apple
"), "Expected buf to be unchanged, got %
s\
n", buf);
4415 ok(sz == MAX_PATH, "got %lu\
n", sz);
4417 /* garbage szProduct */
4419 lstrcpyA(buf, "apple
");
4420 r = MsiGetProductInfoA("garbage
", INSTALLPROPERTY_HELPLINKA, buf, &sz);
4421 ok(r == ERROR_INVALID_PARAMETER,
4423 ok(!lstrcmpA(buf, "apple
"), "Expected buf to be unchanged, got %
s\
n", buf);
4424 ok(sz == MAX_PATH, "got %lu\
n", sz);
4426 /* guid without brackets */
4428 lstrcpyA(buf, "apple
");
4429 r = MsiGetProductInfoA("6700E8CF-95AB-4D9C-BC2C-15840DEA7A5D
",
4430 INSTALLPROPERTY_HELPLINKA, buf, &sz);
4431 ok(r == ERROR_INVALID_PARAMETER,
4433 ok(!lstrcmpA(buf, "apple
"), "Expected buf to be unchanged, got %
s\
n", buf);
4434 ok(sz == MAX_PATH, "got %lu\
n", sz);
4436 /* guid with brackets */
4438 lstrcpyA(buf, "apple
");
4439 r = MsiGetProductInfoA("{6700E8CF-95AB-4D9C-BC2C-15840DEA7A5D}
",
4440 INSTALLPROPERTY_HELPLINKA, buf, &sz);
4441 ok(r == ERROR_UNKNOWN_PRODUCT,
4443 ok(!lstrcmpA(buf, "apple
"), "Expected buf to be unchanged, got %s\n
", buf);
4444 ok(sz == MAX_PATH, "got %lu\n
", sz);
4446 /* same length as guid, but random */
4448 lstrcpyA(buf, "apple
");
4449 r = MsiGetProductInfoA("A938G02JF-2NF3N93-VN3-2NNF-3KGKALDNF93
",
4450 INSTALLPROPERTY_HELPLINKA, buf, &sz);
4451 ok(r == ERROR_INVALID_PARAMETER,
4453 ok(!lstrcmpA(buf, "apple
"), "Expected buf to be unchanged, got %s\n
", buf);
4454 ok(sz == MAX_PATH, "got %lu\n
", sz);
4456 /* not installed, NULL szAttribute */
4458 lstrcpyA(buf, "apple
");
4459 r = MsiGetProductInfoA(prodcode, NULL, buf, &sz);
4460 ok(r == ERROR_INVALID_PARAMETER,
4462 ok(!lstrcmpA(buf, "apple
"), "Expected buf to be unchanged, got %s\n
", buf);
4463 ok(sz == MAX_PATH, "got %lu\n
", sz);
4465 /* not installed, NULL lpValueBuf */
4467 lstrcpyA(buf, "apple
");
4468 r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINKA, NULL, &sz);
4469 ok(r == ERROR_UNKNOWN_PRODUCT,
4471 ok(!lstrcmpA(buf, "apple
"), "Expected buf to be unchanged, got %s\n
", buf);
4472 ok(sz == MAX_PATH, "got %lu\n
", sz);
4474 /* not installed, NULL pcchValueBuf */
4476 lstrcpyA(buf, "apple
");
4477 r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINKA, buf, NULL);
4478 ok(r == ERROR_INVALID_PARAMETER,
4480 ok(!lstrcmpA(buf, "apple
"), "Expected buf to be unchanged, got %s\n
", buf);
4481 ok(sz == MAX_PATH, "got %lu\n
", sz);
4483 /* created guid cannot possibly be an installed product code */
4485 lstrcpyA(buf, "apple
");
4486 r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINKA, buf, &sz);
4487 ok(r == ERROR_UNKNOWN_PRODUCT,
4489 ok(!lstrcmpA(buf, "apple
"), "Expected buf to be unchanged, got %s\n
", buf);
4490 ok(sz == MAX_PATH, "got %lu\n
", sz);
4492 lstrcpyA(keypath, "Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\Managed\\
");
4493 lstrcatA(keypath, usersid);
4494 lstrcatA(keypath, "\\Installer\\Products\\
");
4495 lstrcatA(keypath, prod_squashed);
4497 res = RegCreateKeyExA(HKEY_LOCAL_MACHINE, keypath, 0, NULL, 0, access, NULL, &prodkey, NULL);
4498 if (res == ERROR_ACCESS_DENIED)
4500 skip("Not enough rights to perform tests\n
");
4506 /* managed product code exists */
4508 lstrcpyA(buf, "apple
");
4509 r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINKA, buf, &sz);
4510 ok(r == ERROR_UNKNOWN_PROPERTY,
4512 ok(!lstrcmpA(buf, "apple
"), "Expected buf to be unchanged, got %s\n
", buf);
4513 ok(sz == MAX_PATH, "got %lu\n
", sz);
4515 delete_key(prodkey, "", access & KEY_WOW64_64KEY);
4516 RegCloseKey(prodkey);
4518 lstrcpyA(keypath, "Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\
UserData\\
");
4519 lstrcatA(keypath, usersid);
4520 lstrcatA(keypath, "\\Products\\
");
4521 lstrcatA(keypath, prod_squashed);
4523 res = RegCreateKeyExA(HKEY_LOCAL_MACHINE, keypath, 0, NULL, 0, access, NULL, &localkey, NULL);
4524 if (res == ERROR_ACCESS_DENIED)
4526 skip("Not enough rights to perform tests\n
");
4532 /* local user product code exists */
4534 lstrcpyA(buf, "apple
");
4535 r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINKA, buf, &sz);
4536 ok(r == ERROR_UNKNOWN_PRODUCT,
4538 ok(!lstrcmpA(buf, "apple
"), "Expected buf to be unchanged, got %s\n
", buf);
4539 ok(sz == MAX_PATH, "got %lu\n
", sz);
4541 lstrcpyA(keypath, "Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\Managed\\
");
4542 lstrcatA(keypath, usersid);
4543 lstrcatA(keypath, "\\Installer\\Products\\
");
4544 lstrcatA(keypath, prod_squashed);
4546 res = RegCreateKeyExA(HKEY_LOCAL_MACHINE, keypath, 0, NULL, 0, access, NULL, &prodkey, NULL);
4549 /* both local and managed product code exist */
4551 lstrcpyA(buf, "apple
");
4552 r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINKA, buf, &sz);
4553 ok(r == ERROR_UNKNOWN_PROPERTY,
4555 ok(!lstrcmpA(buf, "apple
"), "Expected buf to be unchanged, got %s\n
", buf);
4556 ok(sz == MAX_PATH, "%lu\n
", sz);
4558 res = RegCreateKeyExA(localkey, "InstallProperties
", 0, NULL, 0, access, NULL, &propkey, NULL);
4561 /* InstallProperties key exists */
4563 lstrcpyA(buf, "apple
");
4564 r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINKA, buf, &sz);
4566 ok(!lstrcmpA(buf, ""), "Expected \
"\", got \"%s\"\n",
buf);
4567 ok(sz == 0,
"Expected 0, got %lu\n", sz);
4578 ok(sz == 4,
"Expected 4, got %lu\n", sz);
4588 ok(sz == 4,
"Expected 4, got %lu\n", sz);
4594 ok(sz == 4,
"Expected 4, got %lu\n", sz);
4600 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to remain unchanged, got \"%s\"\n",
buf);
4602 ok(sz == 4,
"Expected 4, got %lu\n", sz);
4610 "Expected buf to remain unchanged, got \"%s\"\n",
buf);
4611 ok(sz == 4,
"Expected 4, got %lu\n", sz);
4621 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
4623 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
4634 lstrcpyA(keypath,
"Software\\Microsoft\\Installer\\Products\\");
4645 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
4647 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
4649 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\");
4662 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
4675 ok(sz == 0,
"Expected 0, got %lu\n", sz);
4686 ok(sz == 4,
"Expected 4, got %lu\n", sz);
4696 lstrcpyA(keypath,
"Software\\Classes\\Installer\\Products\\");
4702 skip(
"insufficient rights\n" );
4713 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
4715 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
4717 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\");
4730 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
4732 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
4742 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
4744 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
4751 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\");
4752 lstrcatA(keypath,
"S-1-5-18\\\\Products\\");
4763 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
4765 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
4776 ok(sz == 0,
"Expected 0, got %lu\n", sz);
4787 ok(sz == 4,
"Expected 4, got %lu\n", sz);
4799 ok(sz == 2,
"Expected 2, got %lu\n", sz);
4810 ok(sz == 4,
"Expected 4, got %lu\n", sz);
4821 ok(sz == 2,
"Expected 2, got %lu\n", sz);
4832 ok(sz == 5,
"Expected 5, got %lu\n", sz);
4844 ok(sz == 2,
"Expected 2, got %lu\n", sz);
4855 ok(sz == 4,
"Expected 4, got %lu\n", sz);
4867 ok(sz == 2,
"Expected 2, got %lu\n", sz);
4878 ok(sz == 3,
"Expected 3, got %lu\n", sz);
4890 ok(sz == 2,
"Expected 2, got %lu\n", sz);
4901 ok(sz == 6,
"Expected 6, got %lu\n", sz);
4913 ok(sz == 2,
"Expected 2, got %lu\n", sz);
4924 ok(sz == 4,
"Expected 4, got %lu\n", sz);
4936 ok(sz == 2,
"Expected 2, got %lu\n", sz);
4947 ok(sz == 3,
"Expected 3, got %lu\n", sz);
4959 ok(sz == 2,
"Expected 2, got %lu\n", sz);
4970 ok(sz == 4,
"Expected 4, got %lu\n", sz);
4982 ok(sz == 2,
"Expected 2, got %lu\n", sz);
4993 ok(sz == 5,
"Expected 5, got %lu\n", sz);
5005 ok(sz == 2,
"Expected 2, got %lu\n", sz);
5016 ok(sz == 4,
"Expected 4, got %lu\n", sz);
5028 ok(sz == 2,
"Expected 2, got %lu\n", sz);
5039 ok(sz == 1,
"Expected 1, got %lu\n", sz);
5051 ok(sz == 2,
"Expected 2, got %lu\n", sz);
5062 ok(sz == 1,
"Expected 1, got %lu\n", sz);
5074 ok(sz == 2,
"Expected 2, got %lu\n", sz);
5085 ok(sz == 2,
"Expected 2, got %lu\n", sz);
5097 ok(sz == 2,
"Expected 2, got %lu\n", sz);
5108 ok(sz == 4,
"Expected 4, got %lu\n", sz);
5120 ok(sz == 2,
"Expected 2, got %lu\n", sz);
5131 ok(sz == 3,
"Expected 3, got %lu\n", sz);
5143 ok(sz == 2,
"Expected 2, got %lu\n", sz);
5154 ok(sz == 0,
"Expected 0, got %lu\n", sz);
5166 ok(sz == 0,
"Expected 0, got %lu\n", sz);
5177 ok(sz == 4,
"Expected 4, got %lu\n", sz);
5189 ok(sz == 2,
"Expected 2, got %lu\n", sz);
5200 ok(sz == 0,
"Expected 0, got %lu\n", sz);
5212 ok(sz == 0,
"Expected 0, got %lu\n", sz);
5223 ok(sz == 6,
"Expected 6, got %lu\n", sz);
5235 ok(sz == 2,
"Expected 2, got %lu\n", sz);
5246 ok(sz == 0,
"Expected 0, got %lu\n", sz);
5258 ok(sz == 0,
"Expected 0, got %lu\n", sz);
5269 ok(sz == 4,
"Expected 4, got %lu\n", sz);
5281 ok(sz == 2,
"Expected 2, got %lu\n", sz);
5292 ok(sz == 0,
"Expected 0, got %lu\n", sz);
5304 ok(sz == 0,
"Expected 0, got %lu\n", sz);
5315 ok(sz == 4,
"Expected 4, got %lu\n", sz);
5327 ok(sz == 2,
"Expected 2, got %lu\n", sz);
5338 ok(sz == 0,
"Expected 0, got %lu\n", sz);
5350 ok(sz == 0,
"Expected 0, got %lu\n", sz);
5361 ok(sz == 2,
"Expected 2, got %lu\n", sz);
5373 ok(sz == 2,
"Expected 2, got %lu\n", sz);
5384 ok(sz == 0,
"Expected 0, got %lu\n", sz);
5396 ok(sz == 0,
"Expected 0, got %lu\n", sz);
5406 "Expected ERROR_BAD_CONFIGURATION, got %d\n",
r);
5408 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
5420 ok(sz == 2,
"Expected 2, got %lu\n", sz);
5430 ok(!
lstrcmpA(
buf, packcode),
"Expected \"%s\", got \"%s\"\n", packcode,
buf);
5431 ok(sz == 38,
"Expected 38, got %lu\n", sz);
5442 ok(sz == 0,
"Expected 0, got %lu\n", sz);
5454 ok(sz == 0,
"Expected 0, got %lu\n", sz);
5465 ok(sz == 3,
"Expected 3, got %lu\n", sz);
5477 ok(sz == 2,
"Expected 2, got %lu\n", sz);
5488 ok(sz == 0,
"Expected 0, got %lu\n", sz);
5500 ok(sz == 0,
"Expected 0, got %lu\n", sz);
5511 ok(sz == 3,
"Expected 3, got %lu\n", sz);
5523 ok(sz == 2,
"Expected 2, got %lu\n", sz);
5530 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
5532 "Expected buf to be unchanged, got \"%s\"\n",
buf);
5533 ok(sz ==
MAX_PATH,
"Expected sz to be unchanged, got %lu\n", sz);
5544 ok(sz == 0,
"Expected 0, got %lu\n", sz);
5554 ok(!
lstrcmpA(
buf,
"packname"),
"Expected \"packname\", got \"%s\"\n",
buf);
5555 ok(sz == 8,
"Expected 8, got %lu\n", sz);
5567 ok(sz == 2,
"Expected 2, got %lu\n", sz);
5580 ok(sz == 0,
"Expected 0, got %lu\n", sz);
5595 ok(sz == 0,
"Expected 0, got %lu\n", sz);
5609 ok(sz == 4,
"Expected 4, got %lu\n", sz);
5624 ok(sz == 2,
"Expected 2, got %lu\n", sz);
5677 HKEY propkey, userkey;
5678 HKEY prodkey, localkey;
5689 if (!pMsiGetProductInfoExA)
5691 win_skip(
"MsiGetProductInfoExA is not available\n");
5708 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
5709 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
5710 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
5718 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
5719 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
5720 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
5728 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
5729 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
5730 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
5735 r = pMsiGetProductInfoExA(
"6700E8CF-95AB-4D9C-BC2C-15840DEA7A5D", usersid,
5739 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
5740 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
5741 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
5746 r = pMsiGetProductInfoExA(
"{6700E8CF-95AB-4D9C-BC2C-15840DEA7A5D}", usersid,
5750 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
5751 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
5752 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
5756 r = pMsiGetProductInfoExA(prodcode, usersid,
5760 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
5761 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
5766 r = pMsiGetProductInfoExA(prodcode, usersid, 42,
5769 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
5770 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
5771 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
5776 r = pMsiGetProductInfoExA(prodcode, usersid,
5780 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
5781 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
5782 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
5787 r = pMsiGetProductInfoExA(prodcode, usersid,
5791 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
5792 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
5793 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
5798 r = pMsiGetProductInfoExA(prodcode, usersid,
5800 "notvalid",
buf, &sz);
5802 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
5803 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
5804 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
5809 r = pMsiGetProductInfoExA(
"A938G02JF-2NF3N93-VN3-2NNF-3KGKALDNF93", usersid,
5813 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
5814 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
5815 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
5819 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\");
5827 skip(
"Not enough rights to perform tests\n");
5836 r = pMsiGetProductInfoExA(prodcode, usersid,
5840 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
5841 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
5842 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
5850 r = pMsiGetProductInfoExA(prodcode, usersid,
5854 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
5855 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
5856 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
5864 r = pMsiGetProductInfoExA(prodcode, usersid,
5869 ok(sz == 1,
"Expected 1, got %lu\n", sz);
5876 r = pMsiGetProductInfoExA(prodcode, usersid,
5880 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
5881 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
5882 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
5890 r = pMsiGetProductInfoExA(prodcode, usersid,
5895 ok(sz == 0,
"Expected 0, got %lu\n", sz);
5903 r = pMsiGetProductInfoExA(prodcode, usersid,
5908 ok(sz == 4,
"Expected 4, got %lu\n", sz);
5916 r = pMsiGetProductInfoExA(prodcode, usersid,
5921 ok(sz == 5,
"Expected 5, got %lu\n", sz);
5924 r = pMsiGetProductInfoExA(prodcode, usersid,
5932 r = pMsiGetProductInfoExA(prodcode, usersid,
5936 "Expected ERROR_MORE_DATA, got %d\n",
r);
5937 ok(sz == 10,
"Expected 10, got %lu\n", sz);
5941 r = pMsiGetProductInfoExA(prodcode, usersid,
5945 ok(sz == 10,
"Expected 10, got %lu\n", sz);
5949 r = pMsiGetProductInfoExA(prodcode, usersid,
5953 ok(sz == 10,
"Expected 10, got %lu\n", sz);
5958 r = pMsiGetProductInfoExA(prodcode, usersid,
5962 "Expected ERROR_MORE_DATA, got %d\n",
r);
5964 ok(sz == 10,
"Expected 10, got %lu\n", sz);
5972 r = pMsiGetProductInfoExA(prodcode, usersid,
5974 "notvalid",
buf, &sz);
5976 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
5977 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
5978 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
5986 r = pMsiGetProductInfoExA(prodcode, usersid,
5991 ok(sz == 4,
"Expected 4, got %lu\n", sz);
5999 r = pMsiGetProductInfoExA(prodcode, usersid,
6004 ok(sz == 4,
"Expected 4, got %lu\n", sz);
6012 r = pMsiGetProductInfoExA(prodcode, usersid,
6017 ok(sz == 3,
"Expected 3, got %lu\n", sz);
6025 r = pMsiGetProductInfoExA(prodcode, usersid,
6030 ok(sz == 6,
"Expected 6, got %lu\n", sz);
6038 r = pMsiGetProductInfoExA(prodcode, usersid,
6043 ok(sz == 5,
"Expected 5, got %lu\n", sz);
6051 r = pMsiGetProductInfoExA(prodcode, usersid,
6056 ok(sz == 3,
"Expected 3, got %lu\n", sz);
6064 r = pMsiGetProductInfoExA(prodcode, usersid,
6069 ok(sz == 5,
"Expected 5, got %lu\n", sz);
6077 r = pMsiGetProductInfoExA(prodcode, usersid,
6082 ok(sz == 6,
"Expected 6, got %lu\n", sz);
6090 r = pMsiGetProductInfoExA(prodcode, usersid,
6095 ok(sz == 1,
"Expected 1, got %lu\n", sz);
6103 r = pMsiGetProductInfoExA(prodcode, usersid,
6108 ok(sz == 1,
"Expected 1, got %lu\n", sz);
6116 r = pMsiGetProductInfoExA(prodcode, usersid,
6121 ok(sz == 5,
"Expected 5, got %lu\n", sz);
6129 r = pMsiGetProductInfoExA(prodcode, usersid,
6134 ok(sz == 2,
"Expected 2, got %lu\n", sz);
6142 r = pMsiGetProductInfoExA(prodcode, usersid,
6147 ok(sz == 4,
"Expected 4, got %lu\n", sz);
6155 r = pMsiGetProductInfoExA(prodcode, usersid,
6160 ok(sz == 5,
"Expected 5, got %lu\n", sz);
6168 r = pMsiGetProductInfoExA(prodcode, usersid,
6172 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
6173 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
6174 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
6182 r = pMsiGetProductInfoExA(prodcode, usersid,
6186 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
6187 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
6188 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
6196 r = pMsiGetProductInfoExA(prodcode, usersid,
6200 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
6201 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
6202 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
6212 r = pMsiGetProductInfoExA(prodcode, usersid,
6216 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
6217 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
6218 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
6226 r = pMsiGetProductInfoExA(prodcode, usersid,
6230 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
6231 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
6232 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
6240 r = pMsiGetProductInfoExA(prodcode, usersid,
6244 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
6245 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
6246 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
6254 r = pMsiGetProductInfoExA(prodcode, usersid,
6258 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
6259 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
6260 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
6268 r = pMsiGetProductInfoExA(prodcode, usersid,
6272 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
6273 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
6274 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
6282 r = pMsiGetProductInfoExA(prodcode, usersid,
6286 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
6287 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
6288 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
6321 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\Managed\\");
6323 lstrcatA(keypath,
"\\Installer\\Products\\");
6332 r = pMsiGetProductInfoExA(prodcode, usersid,
6336 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
6337 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
6338 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
6343 lstrcpyA(keypath,
"Software\\Microsoft\\Installer\\Products\\");
6351 r = pMsiGetProductInfoExA(prodcode, usersid,
6357 win_skip(
"skipping remaining tests for MsiGetProductInfoEx\n");
6363 ok(sz == 1,
"Expected 1, got %lu\n", sz);
6371 r = pMsiGetProductInfoExA(prodcode, usersid,
6375 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
6376 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
6377 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
6385 r = pMsiGetProductInfoExA(prodcode, usersid,
6389 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
6390 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
6391 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
6399 r = pMsiGetProductInfoExA(prodcode, usersid,
6403 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
6404 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
6405 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
6413 r = pMsiGetProductInfoExA(prodcode, usersid,
6417 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
6418 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
6419 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
6427 r = pMsiGetProductInfoExA(prodcode, usersid,
6431 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
6432 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
6433 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
6441 r = pMsiGetProductInfoExA(prodcode, usersid,
6445 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
6446 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
6447 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
6455 r = pMsiGetProductInfoExA(prodcode, usersid,
6459 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
6460 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
6461 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
6469 r = pMsiGetProductInfoExA(prodcode, usersid,
6473 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
6474 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
6475 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
6483 r = pMsiGetProductInfoExA(prodcode, usersid,
6487 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
6488 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
6489 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
6497 r = pMsiGetProductInfoExA(prodcode, usersid,
6501 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
6502 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
6503 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
6511 r = pMsiGetProductInfoExA(prodcode, usersid,
6515 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
6516 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
6517 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
6525 r = pMsiGetProductInfoExA(prodcode, usersid,
6529 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
6530 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
6531 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
6539 r = pMsiGetProductInfoExA(prodcode, usersid,
6543 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
6544 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
6545 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
6553 r = pMsiGetProductInfoExA(prodcode, usersid,
6557 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
6558 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
6559 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
6567 r = pMsiGetProductInfoExA(prodcode, usersid,
6571 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
6572 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
6573 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
6581 r = pMsiGetProductInfoExA(prodcode, usersid,
6585 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
6586 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
6587 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
6595 r = pMsiGetProductInfoExA(prodcode, usersid,
6600 ok(sz == 5,
"Expected 5, got %lu\n", sz);
6608 r = pMsiGetProductInfoExA(prodcode, usersid,
6613 ok(sz == 4,
"Expected 4, got %lu\n", sz);
6621 r = pMsiGetProductInfoExA(prodcode, usersid,
6626 ok(sz == 4,
"Expected 4, got %lu\n", sz);
6636 r = pMsiGetProductInfoExA(prodcode, usersid,
6641 ok(sz == 0,
"Expected 0, got %lu\n", sz);
6651 r = pMsiGetProductInfoExA(prodcode, usersid,
6657 "Expected ERROR_BAD_CONFIGURATION, got %d\n",
r);
6658 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
6659 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
6668 r = pMsiGetProductInfoExA(prodcode, usersid,
6673 ok(sz == 3,
"Expected 3, got %lu\n", sz);
6681 r = pMsiGetProductInfoExA(prodcode, usersid,
6686 ok(sz == 4,
"Expected 4, got %lu\n", sz);
6694 r = pMsiGetProductInfoExA(prodcode, usersid,
6700 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
6701 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
6702 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
6711 r = pMsiGetProductInfoExA(prodcode, usersid,
6716 ok(sz == 4,
"Expected 4, got %lu\n", sz);
6749 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\");
6760 r = pMsiGetProductInfoExA(prodcode, usersid,
6764 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
6765 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
6766 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
6774 r = pMsiGetProductInfoExA(prodcode, usersid,
6778 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
6779 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
6780 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
6788 r = pMsiGetProductInfoExA(prodcode, usersid,
6793 ok(sz == 1,
"Expected 1, got %lu\n", sz);
6801 r = pMsiGetProductInfoExA(prodcode, usersid,
6806 ok(sz == 4,
"Expected 4, got %lu\n", sz);
6814 r = pMsiGetProductInfoExA(prodcode, usersid,
6819 ok(sz == 5,
"Expected 5, got %lu\n", sz);
6827 r = pMsiGetProductInfoExA(prodcode, usersid,
6832 ok(sz == 4,
"Expected 4, got %lu\n", sz);
6840 r = pMsiGetProductInfoExA(prodcode, usersid,
6845 ok(sz == 4,
"Expected 4, got %lu\n", sz);
6853 r = pMsiGetProductInfoExA(prodcode, usersid,
6858 ok(sz == 3,
"Expected 3, got %lu\n", sz);
6866 r = pMsiGetProductInfoExA(prodcode, usersid,
6871 ok(sz == 6,
"Expected 6, got %lu\n", sz);
6879 r = pMsiGetProductInfoExA(prodcode, usersid,
6884 ok(sz == 5,
"Expected 5, got %lu\n", sz);
6892 r = pMsiGetProductInfoExA(prodcode, usersid,
6897 ok(sz == 3,
"Expected 3, got %lu\n", sz);
6905 r = pMsiGetProductInfoExA(prodcode, usersid,
6910 ok(sz == 5,
"Expected 5, got %lu\n", sz);
6918 r = pMsiGetProductInfoExA(prodcode, usersid,
6923 ok(sz == 6,
"Expected 6, got %lu\n", sz);
6931 r = pMsiGetProductInfoExA(prodcode, usersid,
6936 ok(sz == 1,
"Expected 1, got %lu\n", sz);
6944 r = pMsiGetProductInfoExA(prodcode, usersid,
6949 ok(sz == 1,
"Expected 1, got %lu\n", sz);
6957 r = pMsiGetProductInfoExA(prodcode, usersid,
6962 ok(sz == 5,
"Expected 5, got %lu\n", sz);
6970 r = pMsiGetProductInfoExA(prodcode, usersid,
6975 ok(sz == 2,
"Expected 2, got %lu\n", sz);
6983 r = pMsiGetProductInfoExA(prodcode, usersid,
6988 ok(sz == 4,
"Expected 4, got %lu\n", sz);
6996 r = pMsiGetProductInfoExA(prodcode, usersid,
7001 ok(sz == 5,
"Expected 5, got %lu\n", sz);
7009 r = pMsiGetProductInfoExA(prodcode, usersid,
7013 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
7014 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
7015 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
7023 r = pMsiGetProductInfoExA(prodcode, usersid,
7027 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
7028 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
7029 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
7037 r = pMsiGetProductInfoExA(prodcode, usersid,
7041 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
7042 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
7043 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
7053 r = pMsiGetProductInfoExA(prodcode, usersid,
7057 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
7058 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
7059 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
7067 r = pMsiGetProductInfoExA(prodcode, usersid,
7071 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
7072 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
7073 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
7081 r = pMsiGetProductInfoExA(prodcode, usersid,
7085 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
7086 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
7087 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
7095 r = pMsiGetProductInfoExA(prodcode, usersid,
7099 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
7100 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
7101 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
7109 r = pMsiGetProductInfoExA(prodcode, usersid,
7113 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
7114 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
7115 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
7123 r = pMsiGetProductInfoExA(prodcode, usersid,
7127 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
7128 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
7129 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
7162 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\Managed\\");
7164 lstrcatA(keypath,
"\\Installer\\Products\\");
7173 r = pMsiGetProductInfoExA(prodcode, usersid,
7178 ok(sz == 1,
"Expected 1, got %lu\n", sz);
7183 lstrcpyA(keypath,
"Software\\Microsoft\\Installer\\Products\\");
7192 r = pMsiGetProductInfoExA(prodcode, usersid,
7196 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
7197 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
7198 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
7206 r = pMsiGetProductInfoExA(prodcode, usersid,
7210 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
7211 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
7212 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
7214 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\Managed\\");
7216 lstrcatA(keypath,
"\\Installer\\Products\\");
7228 r = pMsiGetProductInfoExA(prodcode, usersid,
7232 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
7233 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
7234 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
7242 r = pMsiGetProductInfoExA(prodcode, usersid,
7246 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
7247 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
7248 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
7256 r = pMsiGetProductInfoExA(prodcode, usersid,
7260 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
7261 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
7262 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
7270 r = pMsiGetProductInfoExA(prodcode, usersid,
7274 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
7275 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
7276 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
7284 r = pMsiGetProductInfoExA(prodcode, usersid,
7288 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
7289 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
7290 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
7298 r = pMsiGetProductInfoExA(prodcode, usersid,
7302 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
7303 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
7304 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
7312 r = pMsiGetProductInfoExA(prodcode, usersid,
7316 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
7317 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
7318 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
7326 r = pMsiGetProductInfoExA(prodcode, usersid,
7330 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
7331 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
7332 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
7340 r = pMsiGetProductInfoExA(prodcode, usersid,
7344 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
7345 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
7346 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
7354 r = pMsiGetProductInfoExA(prodcode, usersid,
7358 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
7359 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
7360 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
7368 r = pMsiGetProductInfoExA(prodcode, usersid,
7372 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
7373 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
7374 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
7382 r = pMsiGetProductInfoExA(prodcode, usersid,
7386 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
7387 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
7388 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
7396 r = pMsiGetProductInfoExA(prodcode, usersid,
7400 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
7401 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
7402 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
7410 r = pMsiGetProductInfoExA(prodcode, usersid,
7414 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
7415 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
7416 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
7424 r = pMsiGetProductInfoExA(prodcode, usersid,
7428 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
7429 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
7430 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
7438 r = pMsiGetProductInfoExA(prodcode, usersid,
7442 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
7443 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
7444 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
7452 r = pMsiGetProductInfoExA(prodcode, usersid,
7457 ok(sz == 5,
"Expected 5, got %lu\n", sz);
7465 r = pMsiGetProductInfoExA(prodcode, usersid,
7470 ok(sz == 4,
"Expected 4, got %lu\n", sz);
7478 r = pMsiGetProductInfoExA(prodcode, usersid,
7483 ok(sz == 4,
"Expected 4, got %lu\n", sz);
7493 r = pMsiGetProductInfoExA(prodcode, usersid,
7498 ok(sz == 0,
"Expected 0, got %lu\n", sz);
7508 r = pMsiGetProductInfoExA(prodcode, usersid,
7514 "Expected ERROR_BAD_CONFIGURATION, got %d\n",
r);
7515 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
7516 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
7525 r = pMsiGetProductInfoExA(prodcode, usersid,
7530 ok(sz == 3,
"Expected 3, got %lu\n", sz);
7538 r = pMsiGetProductInfoExA(prodcode, usersid,
7543 ok(sz == 4,
"Expected 4, got %lu\n", sz);
7551 r = pMsiGetProductInfoExA(prodcode, usersid,
7557 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
7558 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
7559 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
7568 r = pMsiGetProductInfoExA(prodcode, usersid,
7573 ok(sz == 4,
"Expected 4, got %lu\n", sz);
7610 r = pMsiGetProductInfoExA(prodcode, usersid,
7614 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
7615 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
7616 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
7618 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\S-1-5-18\\Products\\");
7627 r = pMsiGetProductInfoExA(prodcode,
NULL,
7631 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
7632 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
7633 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
7641 r = pMsiGetProductInfoExA(prodcode,
NULL,
7645 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
7646 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
7647 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
7655 r = pMsiGetProductInfoExA(prodcode,
NULL,
7660 ok(sz == 1,
"Expected 1, got %lu\n", sz);
7668 r = pMsiGetProductInfoExA(prodcode,
NULL,
7673 ok(sz == 4,
"Expected 4, got %lu\n", sz);
7681 r = pMsiGetProductInfoExA(prodcode,
NULL,
7686 ok(sz == 5,
"Expected 5, got %lu\n", sz);
7694 r = pMsiGetProductInfoExA(prodcode,
NULL,
7699 ok(sz == 4,
"Expected 4, got %lu\n", sz);
7707 r = pMsiGetProductInfoExA(prodcode,
NULL,
7712 ok(sz == 4,
"Expected 4, got %lu\n", sz);
7720 r = pMsiGetProductInfoExA(prodcode,
NULL,
7725 ok(sz == 3,
"Expected 3, got %lu\n", sz);
7733 r = pMsiGetProductInfoExA(prodcode,
NULL,
7738 ok(sz == 6,
"Expected 6, got %lu\n", sz);
7746 r = pMsiGetProductInfoExA(prodcode,
NULL,
7751 ok(sz == 5,
"Expected 5, got %lu\n", sz);
7759 r = pMsiGetProductInfoExA(prodcode,
NULL,
7764 ok(sz == 3,
"Expected 3, got %lu\n", sz);
7772 r = pMsiGetProductInfoExA(prodcode,
NULL,
7777 ok(sz == 5,
"Expected 5, got %lu\n", sz);
7785 r = pMsiGetProductInfoExA(prodcode,
NULL,
7790 ok(sz == 6,
"Expected 6, got %lu\n", sz);
7798 r = pMsiGetProductInfoExA(prodcode,
NULL,
7803 ok(sz == 1,
"Expected 1, got %lu\n", sz);
7811 r = pMsiGetProductInfoExA(prodcode,
NULL,
7816 ok(sz == 1,
"Expected 1, got %lu\n", sz);
7824 r = pMsiGetProductInfoExA(prodcode,
NULL,
7829 ok(sz == 5,
"Expected 5, got %lu\n", sz);
7837 r = pMsiGetProductInfoExA(prodcode,
NULL,
7842 ok(sz == 2,
"Expected 2, got %lu\n", sz);
7850 r = pMsiGetProductInfoExA(prodcode,
NULL,
7855 ok(sz == 4,
"Expected 4, got %lu\n", sz);
7863 r = pMsiGetProductInfoExA(prodcode,
NULL,
7868 ok(sz == 5,
"Expected 5, got %lu\n", sz);
7876 r = pMsiGetProductInfoExA(prodcode,
NULL,
7880 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
7881 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
7882 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
7890 r = pMsiGetProductInfoExA(prodcode,
NULL,
7894 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
7895 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
7896 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
7904 r = pMsiGetProductInfoExA(prodcode,
NULL,
7908 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
7909 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
7910 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
7920 r = pMsiGetProductInfoExA(prodcode,
NULL,
7924 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
7925 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
7926 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
7934 r = pMsiGetProductInfoExA(prodcode,
NULL,
7938 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
7939 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
7940 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
7948 r = pMsiGetProductInfoExA(prodcode,
NULL,
7952 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
7953 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
7954 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
7962 r = pMsiGetProductInfoExA(prodcode,
NULL,
7966 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
7967 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
7968 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
7976 r = pMsiGetProductInfoExA(prodcode,
NULL,
7980 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
7981 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
7982 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
7990 r = pMsiGetProductInfoExA(prodcode,
NULL,
7994 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
7995 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
7996 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
8029 lstrcpyA(keypath,
"Software\\Classes\\Installer\\Products\\");
8035 skip(
"insufficient rights\n" );
8044 r = pMsiGetProductInfoExA(prodcode,
NULL,
8049 ok(sz == 1,
"Expected 1, got %lu\n", sz);
8057 r = pMsiGetProductInfoExA(prodcode,
NULL,
8061 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
8062 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
8063 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
8071 r = pMsiGetProductInfoExA(prodcode,
NULL,
8075 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
8076 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
8077 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
8085 r = pMsiGetProductInfoExA(prodcode,
NULL,
8089 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
8090 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
8091 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
8099 r = pMsiGetProductInfoExA(prodcode,
NULL,
8103 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
8104 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
8105 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
8113 r = pMsiGetProductInfoExA(prodcode,
NULL,
8117 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
8118 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
8119 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
8127 r = pMsiGetProductInfoExA(prodcode,
NULL,
8131 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
8132 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
8133 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
8141 r = pMsiGetProductInfoExA(prodcode,
NULL,
8145 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
8146 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
8147 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
8155 r = pMsiGetProductInfoExA(prodcode,
NULL,
8159 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
8160 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
8161 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
8169 r = pMsiGetProductInfoExA(prodcode,
NULL,
8173 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
8174 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
8175 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
8183 r = pMsiGetProductInfoExA(prodcode,
NULL,
8187 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
8188 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
8189 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
8197 r = pMsiGetProductInfoExA(prodcode,
NULL,
8201 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
8202 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
8203 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
8211 r = pMsiGetProductInfoExA(prodcode,
NULL,
8215 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
8216 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
8217 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
8225 r = pMsiGetProductInfoExA(prodcode,
NULL,
8229 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
8230 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
8231 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
8239 r = pMsiGetProductInfoExA(prodcode,
NULL,
8243 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
8244 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
8245 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
8253 r = pMsiGetProductInfoExA(prodcode,
NULL,
8257 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
8258 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
8259 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
8267 r = pMsiGetProductInfoExA(prodcode,
NULL,
8271 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
8272 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
8273 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
8281 r = pMsiGetProductInfoExA(prodcode,
NULL,
8286 ok(sz == 5,
"Expected 5, got %lu\n", sz);
8294 r = pMsiGetProductInfoExA(prodcode,
NULL,
8299 ok(sz == 4,
"Expected 4, got %lu\n", sz);
8307 r = pMsiGetProductInfoExA(prodcode,
NULL,
8312 ok(sz == 4,
"Expected 4, got %lu\n", sz);
8322 r = pMsiGetProductInfoExA(prodcode,
NULL,
8327 ok(sz == 0,
"Expected 0, got %lu\n", sz);
8337 r = pMsiGetProductInfoExA(prodcode,
NULL,
8343 "Expected ERROR_BAD_CONFIGURATION, got %d\n",
r);
8344 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
8345 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
8354 r = pMsiGetProductInfoExA(prodcode,
NULL,
8359 ok(sz == 3,
"Expected 3, got %lu\n", sz);
8367 r = pMsiGetProductInfoExA(prodcode,
NULL,
8372 ok(sz == 4,
"Expected 4, got %lu\n", sz);
8380 r = pMsiGetProductInfoExA(prodcode,
NULL,
8386 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
8387 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
8388 ok(sz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", sz);
8397 r = pMsiGetProductInfoExA(prodcode,
NULL,
8402 ok(sz == 4,
"Expected 4, got %lu\n", sz);
8434#define INIT_USERINFO() \
8435 lstrcpyA(user, "apple"); \
8436 lstrcpyA(org, "orange"); \
8437 lstrcpyA(serial, "banana"); \
8438 usersz = orgsz = serialsz = MAX_PATH;
8446 DWORD usersz, orgsz, serialsz;
8465 "Expected USERINFOSTATE_INVALIDARG, got %d\n",
state);
8467 ok(!
lstrcmpA(
org,
"orange"),
"Expected org to be unchanged, got \"%s\"\n",
org);
8469 ok(usersz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", usersz);
8470 ok(orgsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", orgsz);
8471 ok(serialsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", serialsz);
8477 "Expected USERINFOSTATE_INVALIDARG, got %d\n",
state);
8479 ok(!
lstrcmpA(
org,
"orange"),
"Expected org to be unchanged, got \"%s\"\n",
org);
8481 ok(usersz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", usersz);
8482 ok(orgsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", orgsz);
8483 ok(serialsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", serialsz);
8489 "Expected USERINFOSTATE_INVALIDARG, got %d\n",
state);
8491 ok(!
lstrcmpA(
org,
"orange"),
"Expected org to be unchanged, got \"%s\"\n",
org);
8493 ok(usersz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", usersz);
8494 ok(orgsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", orgsz);
8495 ok(serialsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", serialsz);
8502 "Expected USERINFOSTATE_INVALIDARG, got %d\n",
state);
8504 ok(!
lstrcmpA(
org,
"orange"),
"Expected org to be unchanged, got \"%s\"\n",
org);
8506 ok(usersz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", usersz);
8507 ok(orgsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", orgsz);
8508 ok(serialsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", serialsz);
8515 "Expected USERINFOSTATE_UNKNOWN, got %d\n",
state);
8517 ok(!
lstrcmpA(
org,
"orange"),
"Expected org to be unchanged, got \"%s\"\n",
org);
8519 ok(usersz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", usersz);
8520 ok(orgsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", orgsz);
8521 ok(serialsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", serialsz);
8527 "Expected USERINFOSTATE_UNKNOWN, got %d\n",
state);
8528 ok(!
lstrcmpA(
org,
"orange"),
"Expected org to be unchanged, got \"%s\"\n",
org);
8530 ok(usersz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", usersz);
8531 ok(orgsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", orgsz);
8532 ok(serialsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", serialsz);
8538 "Expected USERINFOSTATE_INVALIDARG, got %d\n",
state);
8540 ok(!
lstrcmpA(
org,
"orange"),
"Expected org to be unchanged, got \"%s\"\n",
org);
8542 ok(orgsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", orgsz);
8543 ok(serialsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", serialsz);
8549 "Expected USERINFOSTATE_UNKNOWN, got %d\n",
state);
8550 ok(!
lstrcmpA(
org,
"orange"),
"Expected org to be unchanged, got \"%s\"\n",
org);
8552 ok(orgsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", orgsz);
8553 ok(serialsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", serialsz);
8559 "Expected USERINFOSTATE_UNKNOWN, got %d\n",
state);
8562 ok(usersz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", usersz);
8563 ok(orgsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", orgsz);
8564 ok(serialsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", serialsz);
8570 "Expected USERINFOSTATE_INVALIDARG, got %d\n",
state);
8572 ok(!
lstrcmpA(
org,
"orange"),
"Expected org to be unchanged, got \"%s\"\n",
org);
8574 ok(usersz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", usersz);
8575 ok(serialsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", serialsz);
8581 "Expected USERINFOSTATE_UNKNOWN, got %d\n",
state);
8584 ok(usersz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", usersz);
8585 ok(serialsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", serialsz);
8591 "Expected USERINFOSTATE_UNKNOWN, got %d\n",
state);
8593 ok(!
lstrcmpA(
org,
"orange"),
"Expected org to be unchanged, got \"%s\"\n",
org);
8594 ok(usersz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", usersz);
8595 ok(orgsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", orgsz);
8596 ok(serialsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", serialsz);
8602 "Expected USERINFOSTATE_INVALIDARG, got %d\n",
state);
8604 ok(!
lstrcmpA(
org,
"orange"),
"Expected org to be unchanged, got \"%s\"\n",
org);
8606 ok(usersz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", usersz);
8607 ok(orgsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", orgsz);
8613 "Expected USERINFOSTATE_UNKNOWN, got %d\n",
state);
8615 ok(!
lstrcmpA(
org,
"orange"),
"Expected org to be unchanged, got \"%s\"\n",
org);
8616 ok(usersz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", usersz);
8617 ok(orgsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", orgsz);
8622 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\Managed\\");
8624 lstrcatA(keypath,
"\\Installer\\Products\\");
8630 skip(
"Not enough rights to perform tests\n");
8640 "Expected USERINFOSTATE_ABSENT, got %d\n",
state);
8642 ok(!
lstrcmpA(
org,
"orange"),
"Expected org to be unchanged, got \"%s\"\n",
org);
8644 ok(usersz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", usersz);
8645 ok(orgsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", orgsz);
8646 ok(serialsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", serialsz);
8648 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\");
8649 lstrcatA(keypath,
"Installer\\UserData\\");
8657 skip(
"Not enough rights to perform tests\n");
8670 "Expected USERINFOSTATE_ABSENT, got %d\n",
state);
8672 ok(!
lstrcmpA(
org,
"orange"),
"Expected org to be unchanged, got \"%s\"\n",
org);
8674 ok(usersz ==
MAX_PATH - 1,
"Expected MAX_PATH - 1, got %lu\n", usersz);
8675 ok(orgsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", orgsz);
8676 ok(serialsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", serialsz);
8682 "Expected USERINFOSTATE_ABSENT, got %d\n",
state);
8685 ok(orgsz == 0,
"Expected 0, got %lu\n", orgsz);
8686 ok(serialsz ==
MAX_PATH - 1,
"Expected MAX_PATH - 1, got %lu\n", serialsz);
8692 "Expected USERINFOSTATE_ABSENT, got %d\n",
state);
8694 ok(serialsz ==
MAX_PATH - 1,
"Expected MAX_PATH - 1, got %lu\n", serialsz);
8703 "Expected USERINFOSTATE_ABSENT, got %d\n",
state);
8707 ok(usersz == 5,
"Expected 5, got %lu\n", usersz);
8708 ok(orgsz == 0,
"Expected 0, got %lu\n", orgsz);
8709 ok(serialsz ==
MAX_PATH - 1,
"Expected MAX_PATH - 1, got %lu\n", serialsz);
8718 "Expected USERINFOSTATE_ABSENT, got %d\n",
state);
8722 ok(usersz == 5,
"Expected 5, got %lu\n", usersz);
8723 ok(orgsz == 7,
"Expected 7, got %lu\n", orgsz);
8724 ok(serialsz ==
MAX_PATH - 1,
"Expected MAX_PATH - 1, got %lu\n", serialsz);
8733 "Expected USERINFOSTATE_PRESENT, got %d\n",
state);
8737 ok(usersz == 5,
"Expected 5, got %lu\n", usersz);
8738 ok(orgsz == 7,
"Expected 7, got %lu\n", orgsz);
8739 ok(serialsz == 2,
"Expected 2, got %lu\n", serialsz);
8746 "Expected USERINFOSTATE_MOREDATA, got %d\n",
state);
8748 ok(!
lstrcmpA(
org,
"orange"),
"Expected org to be unchanged, got \"%s\"\n",
org);
8750 ok(usersz == 5,
"Expected 5, got %lu\n", usersz);
8751 ok(orgsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", orgsz);
8752 ok(serialsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", serialsz);
8759 "Expected USERINFOSTATE_MOREDATA, got %d\n",
state);
8764 ok(!
lstrcmpA(
org,
"orange"),
"Expected org to be unchanged, got \"%s\"\n",
org);
8766 ok(usersz == 5,
"Expected 5, got %lu\n", usersz);
8767 ok(orgsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", orgsz);
8768 ok(serialsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", serialsz);
8775 "Expected USERINFOSTATE_PRESENT, got %d\n",
state);
8779 ok(usersz == 5,
"Expected 5, got %lu\n", usersz);
8780 ok(orgsz == 7,
"Expected 7, got %lu\n", orgsz);
8781 ok(serialsz == 2,
"Expected 2, got %lu\n", serialsz);
8796 lstrcpyA(keypath,
"Software\\Microsoft\\Installer\\Products\\");
8806 "Expected USERINFOSTATE_ABSENT, got %d\n",
state);
8808 ok(!
lstrcmpA(
org,
"orange"),
"Expected org to be unchanged, got \"%s\"\n",
org);
8810 ok(usersz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", usersz);
8811 ok(orgsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", orgsz);
8812 ok(serialsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", serialsz);
8814 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\");
8815 lstrcatA(keypath,
"Installer\\UserData\\");
8830 "Expected USERINFOSTATE_ABSENT, got %d\n",
state);
8832 ok(!
lstrcmpA(
org,
"orange"),
"Expected org to be unchanged, got \"%s\"\n",
org);
8834 ok(usersz ==
MAX_PATH - 1,
"Expected MAX_PATH - 1, got %lu\n", usersz);
8835 ok(orgsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", orgsz);
8836 ok(serialsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", serialsz);
8842 "Expected USERINFOSTATE_ABSENT, got %d\n",
state);
8845 ok(orgsz == 0,
"Expected 0, got %lu\n", orgsz);
8846 ok(serialsz ==
MAX_PATH - 1,
"Expected MAX_PATH - 1, got %lu\n", serialsz);
8852 "Expected USERINFOSTATE_ABSENT, got %d\n",
state);
8854 ok(serialsz ==
MAX_PATH - 1,
"Expected MAX_PATH - 1, got %lu\n", serialsz);
8863 "Expected USERINFOSTATE_ABSENT, got %d\n",
state);
8867 ok(usersz == 5,
"Expected 5, got %lu\n", usersz);
8868 ok(orgsz == 0,
"Expected 0, got %lu\n", orgsz);
8869 ok(serialsz ==
MAX_PATH - 1,
"Expected MAX_PATH - 1, got %lu\n", serialsz);
8878 "Expected USERINFOSTATE_ABSENT, got %d\n",
state);
8882 ok(usersz == 5,
"Expected 5, got %lu\n", usersz);
8883 ok(orgsz == 7,
"Expected 7, got %lu\n", orgsz);
8884 ok(serialsz ==
MAX_PATH - 1,
"Expected MAX_PATH - 1, got %lu\n", serialsz);
8893 "Expected USERINFOSTATE_PRESENT, got %d\n",
state);
8897 ok(usersz == 5,
"Expected 5, got %lu\n", usersz);
8898 ok(orgsz == 7,
"Expected 7, got %lu\n", orgsz);
8899 ok(serialsz == 2,
"Expected 2, got %lu\n", serialsz);
8914 lstrcpyA(keypath,
"Software\\Classes\\Installer\\Products\\");
8920 skip(
"insufficient rights\n" );
8930 "Expected USERINFOSTATE_ABSENT, got %d\n",
state);
8932 ok(!
lstrcmpA(
org,
"orange"),
"Expected org to be unchanged, got \"%s\"\n",
org);
8934 ok(usersz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", usersz);
8935 ok(orgsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", orgsz);
8936 ok(serialsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", serialsz);
8938 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\");
8939 lstrcatA(keypath,
"Installer\\UserData\\S-1-5-18");
8953 "Expected USERINFOSTATE_ABSENT, got %d\n",
state);
8955 ok(!
lstrcmpA(
org,
"orange"),
"Expected org to be unchanged, got \"%s\"\n",
org);
8957 ok(usersz ==
MAX_PATH - 1,
"Expected MAX_PATH - 1, got %lu\n", usersz);
8958 ok(orgsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", orgsz);
8959 ok(serialsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", serialsz);
8965 "Expected USERINFOSTATE_ABSENT, got %d\n",
state);
8968 ok(orgsz == 0,
"Expected 0, got %lu\n", orgsz);
8969 ok(serialsz ==
MAX_PATH - 1,
"Expected MAX_PATH - 1, got %lu\n", serialsz);
8975 "Expected USERINFOSTATE_ABSENT, got %d\n",
state);
8977 ok(serialsz ==
MAX_PATH - 1,
"Expected MAX_PATH - 1, got %lu\n", serialsz);
8986 "Expected USERINFOSTATE_ABSENT, got %d\n",
state);
8990 ok(usersz == 5,
"Expected 5, got %lu\n", usersz);
8991 ok(orgsz == 0,
"Expected 0, got %lu\n", orgsz);
8992 ok(serialsz ==
MAX_PATH - 1,
"Expected MAX_PATH - 1, got %lu\n", serialsz);
9001 "Expected USERINFOSTATE_ABSENT, got %d\n",
state);
9005 ok(usersz == 5,
"Expected 5, got %lu\n", usersz);
9006 ok(orgsz == 7,
"Expected 7, got %lu\n", orgsz);
9007 ok(serialsz ==
MAX_PATH - 1,
"Expected MAX_PATH - 1, got %lu\n", serialsz);
9016 "Expected USERINFOSTATE_PRESENT, got %d\n",
state);
9020 ok(usersz == 5,
"Expected 5, got %lu\n", usersz);
9021 ok(orgsz == 7,
"Expected 7, got %lu\n", orgsz);
9022 ok(serialsz == 2,
"Expected 2, got %lu\n", serialsz);
9069 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
9070 ok(hprod == 0xdeadbeef,
"Expected hprod to be unchanged\n");
9076 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
9077 ok(hprod == 0xdeadbeef,
"Expected hprod to be unchanged\n");
9083 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
9084 ok(hprod == 0xdeadbeef,
"Expected hprod to be unchanged\n");
9090 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
9091 ok(hprod == 0xdeadbeef,
"Expected hprod to be unchanged\n");
9097 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
9098 ok(hprod == 0xdeadbeef,
"Expected hprod to be unchanged\n");
9104 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
9105 ok(hprod == 0xdeadbeef,
"Expected hprod to be unchanged\n");
9111 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
9112 ok(hprod == 0xdeadbeef,
"Expected hprod to be unchanged\n");
9116 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\");
9117 lstrcatA(keypath,
"Installer\\Managed\\");
9119 lstrcatA(keypath,
"\\Installer\\Products\\");
9125 skip(
"Not enough rights to perform tests\n");
9135 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
9136 ok(hprod == 0xdeadbeef,
"Expected hprod to be unchanged\n");
9138 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\");
9139 lstrcatA(keypath,
"Installer\\UserData\\");
9147 skip(
"Not enough rights to perform tests\n");
9157 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
9158 ok(hprod == 0xdeadbeef,
"Expected hprod to be unchanged\n");
9167 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
9168 ok(hprod == 0xdeadbeef,
"Expected hprod to be unchanged\n");
9180 ok(hprod != 0 && hprod != 0xdeadbeef,
"Expected a valid product handle\n");
9185 ok(!
lstrcmpA(
val, prodcode),
"Expected \"%s\", got \"%s\"\n", prodcode,
val);
9200 lstrcpyA(keypath,
"Software\\Microsoft\\Installer\\Products\\");
9210 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
9211 ok(hprod == 0xdeadbeef,
"Expected hprod to be unchanged\n");
9213 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\");
9214 lstrcatA(keypath,
"Installer\\UserData\\");
9226 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
9227 ok(hprod == 0xdeadbeef,
"Expected hprod to be unchanged\n");
9236 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
9237 ok(hprod == 0xdeadbeef,
"Expected hprod to be unchanged\n");
9249 ok(hprod != 0 && hprod != 0xdeadbeef,
"Expected a valid product handle\n");
9254 ok(!
lstrcmpA(
val, prodcode),
"Expected \"%s\", got \"%s\"\n", prodcode,
val);
9269 lstrcpyA(keypath,
"Software\\Classes\\Installer\\Products\\");
9275 skip(
"insufficient rights\n" );
9285 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
9286 ok(hprod == 0xdeadbeef,
"Expected hprod to be unchanged\n");
9288 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\");
9289 lstrcatA(keypath,
"Installer\\UserData\\S-1-5-18\\Products\\");
9299 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
9300 ok(hprod == 0xdeadbeef,
"Expected hprod to be unchanged\n");
9309 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
9310 ok(hprod == 0xdeadbeef,
"Expected hprod to be unchanged\n");
9322 ok(hprod != 0 && hprod != 0xdeadbeef,
"Expected a valid product handle\n");
9327 ok(!
lstrcmpA(
val, prodcode),
"Expected \"%s\", got \"%s\"\n", prodcode,
val);
9333 (
const BYTE *)
"winetest.msi", 13);
9348 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
9349 ok(hprod == 0xdeadbeef,
"Expected hprod to be unchanged\n");
9370 HKEY prodkey, patches, udprod, udpatch, hpatch;
9394 skip(
"Not enough rights to perform tests\n");
9399 "Expected patchcode to be unchanged, got %s\n", patchcode);
9401 "Expected targetprod to be unchanged, got %s\n", targetprod);
9403 "Expected context to be unchanged, got %d\n",
context);
9405 "Expected targetsid to be unchanged, got %s\n", targetsid);
9408 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\Managed\\");
9410 lstrcatA(keypath,
"\\Installer\\Products\\");
9416 skip(
"Not enough rights to perform tests\n");
9432 "Expected patchcode to be unchanged, got %s\n", patchcode);
9434 "Expected targetprod to be unchanged, got %s\n", targetprod);
9436 "Expected context to be unchanged, got %d\n",
context);
9438 "Expected targetsid to be unchanged, got %s\n", targetsid);
9455 "Expected patchcode to be unchanged, got %s\n", patchcode);
9457 "Expected targetprod to be unchanged, got %s\n", targetprod);
9459 "Expected context to be unchanged, got %d\n",
context);
9461 "Expected targetsid to be unchanged, got %s\n", targetsid);
9465 (
const BYTE *)patch_squashed,
9479 "Expected ERROR_BAD_CONFIGURATION, got %d\n",
r);
9481 "Expected patchcode to be unchanged, got %s\n", patchcode);
9483 "Expected targetprod to be unchanged, got %s\n", targetprod);
9485 "Expected context to be unchanged, got %d\n",
context);
9487 "Expected targetsid to be unchanged, got %s\n", targetsid);
9491 (
const BYTE *)
"a\0b\0c\0\0", 7);
9504 "Expected ERROR_BAD_CONFIGURATION, got %d\n",
r);
9506 "Expected patchcode to be unchanged, got %s\n", patchcode);
9508 "Expected targetprod to be unchanged, got %s\n", targetprod);
9510 "Expected context to be unchanged, got %d\n",
context);
9512 "Expected targetsid to be unchanged, got %s\n", targetsid);
9515 patch_squashed[
lstrlenA(patch_squashed) + 1] =
'\0';
9517 (
const BYTE *)patch_squashed,
9532 "Expected patchcode to be unchanged, got %s\n", patchcode);
9534 "Expected targetprod to be unchanged, got %s\n", targetprod);
9536 "Expected context to be unchanged, got %d\n",
context);
9538 "Expected targetsid to be unchanged, got %s\n", targetsid);
9542 (
const BYTE *)
"whatever", 9);
9556 "Expected \"%s\", got \"%s\"\n", patch, patchcode);
9558 "Expected \"%s\", got \"%s\"\n", prodcode, targetprod);
9560 "Expected MSIINSTALLCONTEXT_USERMANAGED, got %d\n",
context);
9562 "Expected \"%s\", got \"%s\"\n", expectedsid, targetsid);
9564 "Expected %d, got %lu\n",
lstrlenA(expectedsid),
size);
9577 "Expected patchcode to be unchanged, got %s\n", patchcode);
9579 "Expected targetprod to be unchanged, got %s\n", targetprod);
9581 "Expected context to be unchanged, got %d\n",
context);
9583 "Expected targetsid to be unchanged, got %s\n", targetsid);
9596 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
9598 "Expected patchcode to be unchanged, got %s\n", patchcode);
9600 "Expected targetprod to be unchanged, got %s\n", targetprod);
9602 "Expected context to be unchanged, got %d\n",
context);
9604 "Expected targetsid to be unchanged, got %s\n", targetsid);
9617 "Expected \"%s\", got \"%s\"\n", prodcode, targetprod);
9619 "Expected MSIINSTALLCONTEXT_USERMANAGED, got %d\n",
context);
9621 "Expected \"%s\", got \"%s\"\n", expectedsid, targetsid);
9623 "Expected %d, got %lu\n",
lstrlenA(expectedsid),
size);
9635 "Expected \"%s\", got \"%s\"\n", patch, patchcode);
9637 "Expected MSIINSTALLCONTEXT_USERMANAGED, got %d\n",
context);
9639 "Expected \"%s\", got \"%s\"\n", expectedsid, targetsid);
9641 "Expected %d, got %lu\n",
lstrlenA(expectedsid),
size);
9653 "Expected \"%s\", got \"%s\"\n", patch, patchcode);
9655 "Expected \"%s\", got \"%s\"\n", prodcode, targetprod);
9657 "Expected \"%s\", got \"%s\"\n", expectedsid, targetsid);
9659 "Expected %d, got %lu\n",
lstrlenA(expectedsid),
size);
9671 "Expected \"%s\", got \"%s\"\n", patch, patchcode);
9673 "Expected \"%s\", got \"%s\"\n", prodcode, targetprod);
9675 "Expected MSIINSTALLCONTEXT_USERMANAGED, got %d\n",
context);
9677 "Expected %d*sizeof(WCHAR), got %lu\n",
lstrlenA(expectedsid),
size);
9690 "Expected \"%s\", got \"%s\"\n", patch, patchcode);
9692 "Expected \"%s\", got \"%s\"\n", prodcode, targetprod);
9694 "Expected MSIINSTALLCONTEXT_USERMANAGED, got %d\n",
context);
9696 "Expected \"%s\", got \"%s\"\n", expectedsid, targetsid);
9698 "Expected %d*sizeof(WCHAR), got %lu\n",
lstrlenA(expectedsid),
size);
9711 "Expected \"%s\", got \"%s\"\n", patch, patchcode);
9713 "Expected \"%s\", got \"%s\"\n", prodcode, targetprod);
9715 "Expected MSIINSTALLCONTEXT_USERMANAGED, got %d\n",
context);
9717 "Expected \"%s\", got \"%s\"\n", expectedsid, targetsid);
9719 "Expected %d, got %lu\n",
lstrlenA(expectedsid),
size);
9730 "Expected \"%s\", got \"%s\"\n", patch, patchcode);
9732 "Expected \"%s\", got \"%s\"\n", prodcode, targetprod);
9734 "Expected MSIINSTALLCONTEXT_USERMANAGED, got %d\n",
context);
9748 "Expected patchcode to be unchanged, got %s\n", patchcode);
9750 "Expected targetprod to be unchanged, got %s\n", targetprod);
9752 "Expected context to be unchanged, got %d\n",
context);
9754 "Expected targetsid to be unchanged, got %s\n", targetsid);
9757 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\");
9765 skip(
"Not enough rights to perform tests\n");
9781 "Expected patchcode to be unchanged, got %s\n", patchcode);
9783 "Expected targetprod to be unchanged, got %s\n", targetprod);
9785 "Expected context to be unchanged, got %d\n",
context);
9787 "Expected targetsid to be unchanged, got %s\n", targetsid);
9804 "Expected patchcode to be unchanged, got %s\n", patchcode);
9806 "Expected targetprod to be unchanged, got %s\n", targetprod);
9808 "Expected context to be unchanged, got %d\n",
context);
9810 "Expected targetsid to be unchanged, got %s\n", targetsid);
9826 "Expected ERROR_BAD_CONFIGURATION, got %d\n",
r);
9828 "Expected patchcode to be unchanged, got %s\n", patchcode);
9830 "Expected targetprod to be unchanged, got %s\n", targetprod);
9832 "Expected context to be unchanged, got %d\n",
context);
9834 "Expected targetsid to be unchanged, got %s\n", targetsid);
9853 "Expected \"%s\", got \"%s\"\n", patch, patchcode);
9855 "Expected \"%s\", got \"%s\"\n", prodcode, targetprod);
9857 "Expected MSIINSTALLCONTEXT_USERMANAGED, got %d\n",
context);
9859 "Expected \"%s\", got \"%s\"\n", expectedsid, targetsid);
9861 "Expected %d, got %lu\n",
lstrlenA(expectedsid),
size);
9875 "Expected patchcode to be unchanged, got %s\n", patchcode);
9877 "Expected targetprod to be unchanged, got %s\n", targetprod);
9879 "Expected context to be unchanged, got %d\n",
context);
9881 "Expected targetsid to be unchanged, got %s\n", targetsid);
9900 "Expected \"%s\", got \"%s\"\n", patch, patchcode);
9902 "Expected \"%s\", got \"%s\"\n", prodcode, targetprod);
9904 "Expected MSIINSTALLCONTEXT_USERMANAGED, got %d\n",
context);
9906 "Expected \"%s\", got \"%s\"\n", expectedsid, targetsid);
9908 "Expected %d, got %lu\n",
lstrlenA(expectedsid),
size);
9926 "Expected \"%s\", got \"%s\"\n", patch, patchcode);
9928 "Expected \"%s\", got \"%s\"\n", prodcode, targetprod);
9930 "Expected MSIINSTALLCONTEXT_USERMANAGED, got %d\n",
context);
9932 "Expected \"%s\", got \"%s\"\n", expectedsid, targetsid);
9934 "Expected %d, got %lu\n",
lstrlenA(expectedsid),
size);
9947 "Expected patchcode to be unchanged, got %s\n", patchcode);
9949 "Expected targetprod to be unchanged, got %s\n", targetprod);
9951 "Expected context to be unchanged, got %d\n",
context);
9953 "Expected targetsid to be unchanged, got %s\n", targetsid);
9977 HKEY prodkey, patches, udprod, udpatch;
9978 HKEY userkey, hpatch;
10002 "Expected patchcode to be unchanged, got %s\n", patchcode);
10004 "Expected targetprod to be unchanged, got %s\n", targetprod);
10006 "Expected context to be unchanged, got %d\n",
context);
10008 "Expected targetsid to be unchanged, got %s\n", targetsid);
10011 lstrcpyA(keypath,
"Software\\Microsoft\\Installer\\Products\\");
10028 "Expected patchcode to be unchanged, got %s\n", patchcode);
10030 "Expected targetprod to be unchanged, got %s\n", targetprod);
10032 "Expected context to be unchanged, got %d\n",
context);
10034 "Expected targetsid to be unchanged, got %s\n", targetsid);
10051 "Expected patchcode to be unchanged, got %s\n", patchcode);
10053 "Expected targetprod to be unchanged, got %s\n", targetprod);
10055 "Expected context to be unchanged, got %d\n",
context);
10057 "Expected targetsid to be unchanged, got %s\n", targetsid);
10061 (
const BYTE *)patch_squashed,
10075 "Expected ERROR_BAD_CONFIGURATION, got %d\n",
r);
10077 "Expected patchcode to be unchanged, got %s\n", patchcode);
10079 "Expected targetprod to be unchanged, got %s\n", targetprod);
10081 "Expected context to be unchanged, got %d\n",
context);
10083 "Expected targetsid to be unchanged, got %s\n", targetsid);
10087 (
const BYTE *)
"a\0b\0c\0\0", 7);
10100 "Expected ERROR_BAD_CONFIGURATION, got %d\n",
r);
10102 "Expected patchcode to be unchanged, got %s\n", patchcode);
10104 "Expected targetprod to be unchanged, got %s\n", targetprod);
10106 "Expected context to be unchanged, got %d\n",
context);
10108 "Expected targetsid to be unchanged, got %s\n", targetsid);
10111 patch_squashed[
lstrlenA(patch_squashed) + 1] = 0;
10113 (
const BYTE *)patch_squashed,
10128 "Expected ERROR_NO_MORE_ITEMS, got %d\n",
r);
10130 "Expected patchcode to be unchanged, got %s\n", patchcode);
10132 "Expected targetprod to be unchanged, got %s\n", targetprod);
10134 "Expected context to be unchanged, got %d\n",
context);
10136 "Expected targetsid to be unchanged, got %s\n", targetsid);
10140 (
const BYTE *)
"whatever", 9);
10154 "Expected ERROR_NO_MORE_ITEMS, got %d\n",
r);
10156 "Expected patchcode to be unchanged, got %s\n", patchcode);
10158 "Expected targetprod to be unchanged, got %s\n", targetprod);
10160 "Expected context to be unchanged, got %d\n",
context);
10162 "Expected targetsid to be unchanged, got %s\n", targetsid);
10165 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\");
10168 lstrcatA(keypath, patch_squashed);
10173 skip(
"Not enough rights to perform tests\n");
10189 "Expected \"%s\", got \"%s\"\n", patch, patchcode);
10191 "Expected \"%s\", got \"%s\"\n", prodcode, targetprod);
10193 "Expected MSIINSTALLCONTEXT_USERUNMANAGED, got %d\n",
context);
10195 "Expected \"%s\", got \"%s\"\n", expectedsid, targetsid);
10197 "Expected %d, got %lu\n",
lstrlenA(expectedsid),
size);
10211 "Expected patchcode to be unchanged, got %s\n", patchcode);
10213 "Expected targetprod to be unchanged, got %s\n", targetprod);
10215 "Expected context to be unchanged, got %d\n",
context);
10217 "Expected targetsid to be unchanged, got %s\n", targetsid);
10220 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\");
10222 lstrcatA(keypath,
"\\Products\\");
10228 skip(
"Not enough rights to perform tests\n");
10244 "Expected patchcode to be unchanged, got %s\n", patchcode);
10246 "Expected targetprod to be unchanged, got %s\n", targetprod);
10248 "Expected context to be unchanged, got %d\n",
context);
10250 "Expected targetsid to be unchanged, got %s\n", targetsid);
10267 "Expected patchcode to be unchanged, got %s\n", patchcode);
10269 "Expected targetprod to be unchanged, got %s\n", targetprod);
10271 "Expected context to be unchanged, got %d\n",
context);
10273 "Expected targetsid to be unchanged, got %s\n", targetsid);
10289 "Expected ERROR_BAD_CONFIGURATION, got %d\n",
r);
10291 "Expected patchcode to be unchanged, got %s\n", patchcode);
10293 "Expected targetprod to be unchanged, got %s\n", targetprod);
10295 "Expected context to be unchanged, got %d\n",
context);
10297 "Expected targetsid to be unchanged, got %s\n", targetsid);
10316 "Expected \"%s\", got \"%s\"\n", patch, patchcode);
10318 "Expected \"%s\", got \"%s\"\n", prodcode, targetprod);
10320 "Expected MSIINSTALLCONTEXT_USERUNMANAGED, got %d\n",
context);
10322 "Expected \"%s\", got \"%s\"\n", expectedsid, targetsid);
10324 "Expected %d, got %lu\n",
lstrlenA(expectedsid),
size);
10338 "Expected patchcode to be unchanged, got %s\n", patchcode);
10340 "Expected targetprod to be unchanged, got %s\n", targetprod);
10342 "Expected context to be unchanged, got %d\n",
context);
10344 "Expected targetsid to be unchanged, got %s\n", targetsid);
10363 "Expected \"%s\", got \"%s\"\n", patch, patchcode);
10365 "Expected \"%s\", got \"%s\"\n", prodcode, targetprod);
10367 "Expected MSIINSTALLCONTEXT_USERUNMANAGED, got %d\n",
context);
10369 "Expected \"%s\", got \"%s\"\n", expectedsid, targetsid);
10371 "Expected %d, got %lu\n",
lstrlenA(expectedsid),
size);
10389 "Expected \"%s\", got \"%s\"\n", patch, patchcode);
10391 "Expected \"%s\", got \"%s\"\n", prodcode, targetprod);
10393 "Expected MSIINSTALLCONTEXT_USERUNMANAGED, got %d\n",
context);
10395 "Expected \"%s\", got \"%s\"\n", expectedsid, targetsid);
10397 "Expected %d, got %lu\n",
lstrlenA(expectedsid),
size);
10410 "Expected patchcode to be unchanged, got %s\n", patchcode);
10412 "Expected targetprod to be unchanged, got %s\n", targetprod);
10414 "Expected context to be unchanged, got %d\n",
context);
10416 "Expected targetsid to be unchanged, got %s\n", targetsid);
10444 HKEY prodkey, patches, udprod, udpatch;
10470 "Expected patchcode to be unchanged, got %s\n", patchcode);
10472 "Expected targetprod to be unchanged, got %s\n", targetprod);
10474 "Expected context to be unchanged, got %d\n",
context);
10476 "Expected targetsid to be unchanged, got %s\n", targetsid);
10479 lstrcpyA(keypath,
"Software\\Classes\\Installer\\Products\\");
10485 skip(
"Not enough rights to perform tests\n");
10501 "Expected patchcode to be unchanged, got %s\n", patchcode);
10503 "Expected targetprod to be unchanged, got %s\n", targetprod);
10505 "Expected context to be unchanged, got %d\n",
context);
10507 "Expected targetsid to be unchanged, got %s\n", targetsid);
10524 "Expected patchcode to be unchanged, got %s\n", patchcode);
10526 "Expected targetprod to be unchanged, got %s\n", targetprod);
10528 "Expected context to be unchanged, got %d\n",
context);
10530 "Expected targetsid to be unchanged, got %s\n", targetsid);
10534 (
const BYTE *)patch_squashed,
10548 "Expected ERROR_BAD_CONFIGURATION, got %d\n",
r);
10550 "Expected patchcode to be unchanged, got %s\n", patchcode);
10552 "Expected targetprod to be unchanged, got %s\n", targetprod);
10554 "Expected context to be unchanged, got %d\n",
context);
10556 "Expected targetsid to be unchanged, got %s\n", targetsid);
10560 (
const BYTE *)
"a\0b\0c\0\0", 7);
10573 "Expected ERROR_BAD_CONFIGURATION, got %d\n",
r);
10575 "Expected patchcode to be unchanged, got %s\n", patchcode);
10577 "Expected targetprod to be unchanged, got %s\n", targetprod);
10579 "Expected context to be unchanged, got %d\n",
context);
10581 "Expected targetsid to be unchanged, got %s\n", targetsid);
10584 patch_squashed[
lstrlenA(patch_squashed) + 1] =
'\0';
10586 (
const BYTE *)patch_squashed,
10601 "Expected patchcode to be unchanged, got %s\n", patchcode);
10603 "Expected targetprod to be unchanged, got %s\n", targetprod);
10605 "Expected context to be unchanged, got %d\n",
context);
10607 "Expected targetsid to be unchanged, got %s\n", targetsid);
10611 (
const BYTE *)
"whatever", 9);
10625 "Expected \"%s\", got \"%s\"\n", patch, patchcode);
10627 "Expected \"%s\", got \"%s\"\n", prodcode, targetprod);
10629 "Expected MSIINSTALLCONTEXT_MACHINE, got %d\n",
context);
10630 ok(!
lstrcmpA(targetsid,
""),
"Expected \"\", got \"%s\"\n", targetsid);
10631 ok(
size == 0,
"Expected 0, got %lu\n",
size);
10633 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\");
10634 lstrcatA(keypath,
"Installer\\UserData\\S-1-5-18\\Products\\");
10640 skip(
"Not enough rights to perform tests\n");
10656 "Expected \"%s\", got \"%s\"\n", patch, patchcode);
10658 "Expected \"%s\", got \"%s\"\n", prodcode, targetprod);
10660 "Expected MSIINSTALLCONTEXT_MACHINE, got %d\n",
context);
10662 "Expected \"\", got \"%s\"\n", targetsid);
10663 ok(
size == 0,
"Expected 0, got %lu\n",
size);
10679 "Expected \"%s\", got \"%s\"\n", patch, patchcode);
10681 "Expected \"%s\", got \"%s\"\n", prodcode, targetprod);
10683 "Expected MSIINSTALLCONTEXT_MACHINE, got %d\n",
context);
10685 "Expected \"\", got \"%s\"\n", targetsid);
10686 ok(
size == 0,
"Expected 0, got %lu\n",
size);
10702 "Expected patchcode to be unchanged, got %s\n", patchcode);
10704 "Expected targetprod to be unchanged, got %s\n", targetprod);
10706 "Expected context to be unchanged, got %d\n",
context);
10708 "Expected targetsid to be unchanged, got %s\n", targetsid);
10727 "Expected \"%s\", got \"%s\"\n", patch, patchcode);
10729 "Expected \"%s\", got \"%s\"\n", prodcode, targetprod);
10731 "Expected MSIINSTALLCONTEXT_MACHINE, got %d\n",
context);
10733 "Expected \"\", got \"%s\"\n", targetsid);
10734 ok(
size == 0,
"Expected 0, got %lu\n",
size);
10748 "Expected patchcode to be unchanged, got %s\n", patchcode);
10750 "Expected targetprod to be unchanged, got %s\n", targetprod);
10752 "Expected context to be unchanged, got %d\n",
context);
10754 "Expected targetsid to be unchanged, got %s\n", targetsid);
10773 "Expected \"%s\", got \"%s\"\n", patch, patchcode);
10775 "Expected \"%s\", got \"%s\"\n", prodcode, targetprod);
10777 "Expected MSIINSTALLCONTEXT_MACHINE, got %d\n",
context);
10778 ok(!
lstrcmpA(targetsid,
""),
"Expected \"\", got \"%s\"\n", targetsid);
10779 ok(
size == 0,
"Expected 0, got %lu\n",
size);
10793 "Expected patchcode to be unchanged, got %s\n", patchcode);
10795 "Expected targetprod to be unchanged, got %s\n", targetprod);
10797 "Expected context to be unchanged, got %d\n",
context);
10799 "Expected targetsid to be unchanged, got %s\n", targetsid);
10818 "Expected \"%s\", got \"%s\"\n", patch, patchcode);
10820 "Expected \"%s\", got \"%s\"\n", prodcode, targetprod);
10822 "Expected MSIINSTALLCONTEXT_MACHINE, got %d\n",
context);
10823 ok(!
lstrcmpA(targetsid,
""),
"Expected \"\", got \"%s\"\n", targetsid);
10824 ok(
size == 0,
"Expected 0, got %lu\n",
size);
10842 "Expected \"%s\", got \"%s\"\n", patch, patchcode);
10844 "Expected \"%s\", got \"%s\"\n", prodcode, targetprod);
10846 "Expected MSIINSTALLCONTEXT_MACHINE, got %d\n",
context);
10847 ok(!
lstrcmpA(targetsid,
""),
"Expected \"\", got \"%s\"\n", targetsid);
10848 ok(
size == 0,
"Expected 0, got %lu\n",
size);
10861 "Expected patchcode to be unchanged, got %s\n", patchcode);
10863 "Expected targetprod to be unchanged, got %s\n", targetprod);
10865 "Expected context to be unchanged, got %d\n",
context);
10867 "Expected targetsid to be unchanged, got %s\n", targetsid);
10897 if (!pMsiEnumPatchesExA)
10899 win_skip(
"MsiEnumPatchesExA not implemented\n");
10916 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
10918 "Expected patchcode to be unchanged, got %s\n", patchcode);
10920 "Expected targetprod to be unchanged, got %s\n", targetprod);
10922 "Expected context to be unchanged, got %d\n",
context);
10924 "Expected targetsid to be unchanged, got %s\n", targetsid);
10937 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
10939 "Expected patchcode to be unchanged, got %s\n", patchcode);
10941 "Expected targetprod to be unchanged, got %s\n", targetprod);
10943 "Expected context to be unchanged, got %d\n",
context);
10945 "Expected targetsid to be unchanged, got %s\n", targetsid);
10954 r = pMsiEnumPatchesExA(
"6700E8CF-95AB-4D9C-BC2C-15840DEA7A5D", usersid,
10956 0, patchcode, targetprod, &
context,
10959 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
10961 "Expected patchcode to be unchanged, got %s\n", patchcode);
10963 "Expected targetprod to be unchanged, got %s\n", targetprod);
10965 "Expected context to be unchanged, got %d\n",
context);
10967 "Expected targetsid to be unchanged, got %s\n", targetsid);
10976 r = pMsiEnumPatchesExA(
"{6700E8CF-95AB-4D9C-BC2C-15840DDA7A5D}", usersid,
10978 0, patchcode, targetprod, &
context,
10981 "Expected ERROR_NO_MORE_ITEMS, got %d\n",
r);
10983 "Expected patchcode to be unchanged, got %s\n", patchcode);
10985 "Expected targetprod to be unchanged, got %s\n", targetprod);
10987 "Expected context to be unchanged, got %d\n",
context);
10989 "Expected targetsid to be unchanged, got %s\n", targetsid);
10998 r = pMsiEnumPatchesExA(prodcode,
"S-1-5-18",
11000 0, patchcode, targetprod, &
context,
11003 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
11005 "Expected patchcode to be unchanged, got %s\n", patchcode);
11007 "Expected targetprod to be unchanged, got %s\n", targetprod);
11009 "Expected context to be unchanged, got %d\n",
context);
11011 "Expected targetsid to be unchanged, got %s\n", targetsid);
11024 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
11026 "Expected patchcode to be unchanged, got %s\n", patchcode);
11028 "Expected targetprod to be unchanged, got %s\n", targetprod);
11030 "Expected context to be unchanged, got %d\n",
context);
11032 "Expected targetsid to be unchanged, got %s\n", targetsid);
11041 r = pMsiEnumPatchesExA(prodcode, usersid, 0,
11045 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
11047 "Expected patchcode to be unchanged, got %s\n", patchcode);
11049 "Expected targetprod to be unchanged, got %s\n", targetprod);
11051 "Expected context to be unchanged, got %d\n",
context);
11053 "Expected targetsid to be unchanged, got %s\n", targetsid);
11066 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
11068 "Expected patchcode to be unchanged, got %s\n", patchcode);
11070 "Expected targetprod to be unchanged, got %s\n", targetprod);
11072 "Expected context to be unchanged, got %d\n",
context);
11074 "Expected targetsid to be unchanged, got %s\n", targetsid);
11087 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
11089 "Expected patchcode to be unchanged, got %s\n", patchcode);
11091 "Expected targetprod to be unchanged, got %s\n", targetprod);
11093 "Expected context to be unchanged, got %d\n",
context);
11095 "Expected targetsid to be unchanged, got %s\n", targetsid);
11108 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
11110 "Expected patchcode to be unchanged, got %s\n", patchcode);
11112 "Expected targetprod to be unchanged, got %s\n", targetprod);
11114 "Expected context to be unchanged, got %d\n",
context);
11116 "Expected targetsid to be unchanged, got %s\n", targetsid);
11128 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
11130 "Expected patchcode to be unchanged, got %s\n", patchcode);
11132 "Expected targetprod to be unchanged, got %s\n", targetprod);
11134 "Expected context to be unchanged, got %d\n",
context);
11136 "Expected targetsid to be unchanged, got %s\n", targetsid);
11155 HKEY prodkey, patches, udprod;
11156 HKEY userkey, hpatch, udpatch;
11176 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
11178 "Expected lpPatchBuf to be unchanged, got \"%s\"\n", patch);
11180 "Expected lpTransformsBuf to be unchanged, got \"%s\"\n", transforms);
11189 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
11191 "Expected lpPatchBuf to be unchanged, got \"%s\"\n", patch);
11193 "Expected lpTransformsBuf to be unchanged, got \"%s\"\n", transforms);
11202 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
11204 "Expected lpPatchBuf to be unchanged, got \"%s\"\n", patch);
11206 "Expected lpTransformsBuf to be unchanged, got \"%s\"\n", transforms);
11214 transforms, &
size);
11216 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
11218 "Expected lpPatchBuf to be unchanged, got \"%s\"\n", patch);
11220 "Expected lpTransformsBuf to be unchanged, got \"%s\"\n", transforms);
11228 transforms, &
size);
11230 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
11232 "Expected lpPatchBuf to be unchanged, got \"%s\"\n", patch);
11234 "Expected lpTransformsBuf to be unchanged, got \"%s\"\n", transforms);
11242 transforms, &
size);
11244 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
11246 "Expected lpPatchBuf to be unchanged, got \"%s\"\n", patch);
11248 "Expected lpTransformsBuf to be unchanged, got \"%s\"\n", transforms);
11258 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
11260 "Expected lpPatchBuf to be unchanged, got \"%s\"\n", patch);
11262 "Expected lpTransformsBuf to be unchanged, got \"%s\"\n", transforms);
11265 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\Managed\\");
11267 lstrcatA(keypath,
"\\Installer\\Products\\");
11273 skip(
"Not enough rights to perform tests\n");
11286 "Expected lpPatchBuf to be unchanged, got \"%s\"\n", patch);
11288 "Expected lpTransformsBuf to be unchanged, got \"%s\"\n", transforms);
11301 "Expected ERROR_NO_MORE_ITEMS, got %d\n",
r);
11303 "Expected lpPatchBuf to be unchanged, got \"%s\"\n", patch);
11305 "Expected lpTransformsBuf to be unchanged, got \"%s\"\n", transforms);
11309 (
const BYTE *)patch_squashed,
11320 "Expected ERROR_BAD_CONFIGURATION, got %d\n",
r);
11322 "Expected lpPatchBuf to be unchanged, got \"%s\"\n", patch);
11324 "Expected lpTransformsBuf to be unchanged, got \"%s\"\n", transforms);
11328 (
const BYTE *)
"a\0b\0c\0\0", 7);
11337 "Expected ERROR_BAD_CONFIGURATION, got %d\n",
r);
11339 "Expected lpPatchBuf to be unchanged, got \"%s\"\n", patch);
11341 "Expected lpTransformsBuf to be unchanged, got \"%s\"\n", transforms);
11344 patch_squashed[
lstrlenA(patch_squashed) + 1] =
'\0';
11346 (
const BYTE *)patch_squashed,
11357 "Expected ERROR_NO_MORE_ITEMS, got %d\n",
r);
11360 "Expected lpPatchBuf to be unchanged, got \"%s\"\n", patch);
11362 "Expected lpTransformsBuf to be unchanged, got \"%s\"\n", transforms);
11366 (
const BYTE *)
"whatever", 9);
11376 "Expected \"%s\", got \"%s\"\n", patchcode, patch);
11378 "Expected \"whatever\", got \"%s\"\n", transforms);
11386 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
11388 "Expected lpTransformsBuf to be unchanged, got \"%s\"\n", transforms);
11396 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
11398 "Expected lpPatchBuf to be unchanged, got \"%s\"\n", patch);
11406 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
11408 "Expected lpPatchBuf to be unchanged, got \"%s\"\n", patch);
11410 "Expected lpTransformsBuf to be unchanged, got \"%s\"\n", transforms);
11419 "Expected \"%s\", got \"%s\"\n", patchcode, patch);
11422 "Expected \"whate\", got \"%s\"\n", transforms);
11423 ok(
size == 8 ||
size == 16,
"Expected 8 or 16, got %lu\n",
size);
11432 "Expected lpPatchBuf to be unchanged, got \"%s\"\n", patch);
11434 "Expected lpTransformsBuf to be unchanged, got \"%s\"\n", transforms);
11444 "Expected lpPatchBuf to be unchanged, got \"%s\"\n", patch);
11446 "Expected lpTransformsBuf to be unchanged, got \"%s\"\n", transforms);
11462 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
11464 "Expected lpPatchBuf to be unchanged, got \"%s\"\n", patch);
11466 "Expected lpTransformsBuf to be unchanged, got \"%s\"\n", transforms);
11469 lstrcpyA(keypath,
"Software\\Microsoft\\Installer\\Products\\");
11482 "Expected lpPatchBuf to be unchanged, got \"%s\"\n", patch);
11484 "Expected lpTransformsBuf to be unchanged, got \"%s\"\n", transforms);
11497 "Expected ERROR_NO_MORE_ITEMS, got %d\n",
r);
11499 "Expected lpPatchBuf to be unchanged, got \"%s\"\n", patch);
11501 "Expected lpTransformsBuf to be unchanged, got \"%s\"\n", transforms);
11505 (
const BYTE *)patch_squashed,
11516 "Expected ERROR_BAD_CONFIGURATION, got %d\n",
r);
11518 "Expected lpPatchBuf to be unchanged, got \"%s\"\n", patch);
11520 "Expected lpTransformsBuf to be unchanged, got \"%s\"\n", transforms);
11524 (
const BYTE *)
"a\0b\0c\0\0", 7);
11533 "Expected ERROR_BAD_CONFIGURATION, got %d\n",
r);
11535 "Expected lpPatchBuf to be unchanged, got \"%s\"\n", patch);
11537 "Expected lpTransformsBuf to be unchanged, got \"%s\"\n", transforms);
11540 patch_squashed[
lstrlenA(patch_squashed) + 1] =
'\0';
11542 (
const BYTE *)patch_squashed,
11553 "Expected ERROR_NO_MORE_ITEMS, got %d\n",
r);
11556 "Expected lpPatchBuf to be unchanged, got \"%s\"\n", patch);
11558 "Expected lpTransformsBuf to be unchanged, got \"%s\"\n", transforms);
11562 (
const BYTE *)
"whatever", 9);
11572 "Expected ERROR_NO_MORE_ITEMS, got %d\n",
r);
11575 "Expected lpPatchBuf to be unchanged, got \"%s\"\n", patch);
11578 "Expected lpTransformsBuf to be unchanged, got \"%s\"\n", transforms);
11581 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\");
11584 lstrcatA(keypath, patch_squashed);
11596 "Expected \"%s\", got \"%s\"\n", patchcode, patch);
11598 "Expected \"whatever\", got \"%s\"\n", transforms);
11617 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
11619 "Expected lpPatchBuf to be unchanged, got \"%s\"\n", patch);
11621 "Expected lpTransformsBuf to be unchanged, got \"%s\"\n", transforms);
11624 lstrcpyA(keypath,
"Software\\Classes\\Installer\\Products\\");
11630 skip(
"Not enough rights to perform tests\n");
11643 "Expected lpPatchBuf to be unchanged, got \"%s\"\n", patch);
11645 "Expected lpTransformsBuf to be unchanged, got \"%s\"\n", transforms);
11658 "Expected ERROR_NO_MORE_ITEMS, got %d\n",
r);
11660 "Expected lpPatchBuf to be unchanged, got \"%s\"\n", patch);
11662 "Expected lpTransformsBuf to be unchanged, got \"%s\"\n", transforms);
11666 (
const BYTE *)patch_squashed,
11677 "Expected ERROR_BAD_CONFIGURATION, got %d\n",
r);
11679 "Expected lpPatchBuf to be unchanged, got \"%s\"\n", patch);
11681 "Expected lpTransformsBuf to be unchanged, got \"%s\"\n", transforms);
11685 (
const BYTE *)
"a\0b\0c\0\0", 7);
11694 "Expected ERROR_BAD_CONFIGURATION, got %d\n",
r);
11696 "Expected lpPatchBuf to be unchanged, got \"%s\"\n", patch);
11698 "Expected lpTransformsBuf to be unchanged, got \"%s\"\n", transforms);
11701 patch_squashed[
lstrlenA(patch_squashed) + 1] =
'\0';
11703 (
const BYTE *)patch_squashed,
11714 "Expected ERROR_NO_MORE_ITEMS, got %d\n",
r);
11717 "Expected lpPatchBuf to be unchanged, got \"%s\"\n", patch);
11719 "Expected lpTransformsBuf to be unchanged, got \"%s\"\n", transforms);
11723 (
const BYTE *)
"whatever", 9);
11733 "Expected \"%s\", got \"%s\"\n", patchcode, patch);
11735 "Expected \"whatever\", got \"%s\"\n", transforms);
11738 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\");
11739 lstrcatA(keypath,
"Installer\\UserData\\S-1-5-18\\Products\\");
11752 "Expected \"%s\", got \"%s\"\n", patchcode, patch);
11754 "Expected \"whatever\", got \"%s\"\n", transforms);
11767 "Expected \"%s\", got \"%s\"\n", patchcode, patch);
11769 "Expected \"whatever\", got \"%s\"\n", transforms);
11782 "Expected ERROR_NO_MORE_ITEMS, got %d\n",
r);
11785 "Expected lpPatchBuf to be unchanged, got \"%s\"\n", patch);
11788 "Expected lpTransformsBuf to be unchanged, got \"%s\"\n", transforms);
11803 "Expected \"%s\", got \"%s\"\n", patchcode, patch);
11805 "Expected \"whatever\", got \"%s\"\n", transforms);
11820 "Expected \"%s\", got \"%s\"\n", patchcode, patch);
11823 "Expected \"whate\", got \"%s\"\n", transforms);
11824 ok(
size == 8,
"Expected 8, got %lu\n",
size);
11835 "Expected \"%s\", got \"%s\"\n", patchcode, patch);
11837 "Expected \"whatever\", got \"%s\"\n", transforms);
11862 HKEY hpatch, udpatch, prodpatches;
11869 if (!pMsiGetPatchInfoExA)
11871 win_skip(
"MsiGetPatchInfoEx not implemented\n");
11888 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
11890 "Expected val to be unchanged, got \"%s\"\n",
val);
11899 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
11901 "Expected val to be unchanged, got \"%s\"\n",
val);
11907 r = pMsiGetPatchInfoExA(
"garbage", prodcode,
NULL,
11911 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
11913 "Expected val to be unchanged, got \"%s\"\n",
val);
11919 r = pMsiGetPatchInfoExA(
"6700E8CF-95AB-4D9C-BC2C-15840DEA7A5D", prodcode,
11923 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
11925 "Expected val to be unchanged, got \"%s\"\n",
val);
11931 r = pMsiGetPatchInfoExA(
"{6700E8CF-95AB-4D9C-BC2C-15840DEA7A5D}", prodcode,
11935 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
11937 "Expected val to be unchanged, got \"%s\"\n",
val);
11943 r = pMsiGetPatchInfoExA(
"A938G02JF-2NF3N93-VN3-2NNF-3KGKALDNF93", prodcode,
11947 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
11949 "Expected val to be unchanged, got \"%s\"\n",
val);
11958 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
11960 "Expected val to be unchanged, got \"%s\"\n",
val);
11969 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
11971 "Expected val to be unchanged, got \"%s\"\n",
val);
11977 r = pMsiGetPatchInfoExA(patchcode,
"garbage",
NULL,
11981 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
11983 "Expected val to be unchanged, got \"%s\"\n",
val);
11989 r = pMsiGetPatchInfoExA(patchcode,
"6700E8CF-95AB-4D9C-BC2C-15840DEA7A5D",
11993 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
11995 "Expected val to be unchanged, got \"%s\"\n",
val);
12001 r = pMsiGetPatchInfoExA(patchcode,
"{6700E8CF-95AB-4D9C-BC2C-15840DEA7A5D}",
12005 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
12007 "Expected val to be unchanged, got \"%s\"\n",
val);
12013 r = pMsiGetPatchInfoExA(patchcode,
"A938G02JF-2NF3N93-VN3-2NNF-3KGKALDNF93",
12017 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
12019 "Expected val to be unchanged, got \"%s\"\n",
val);
12025 r = pMsiGetPatchInfoExA(patchcode, prodcode,
"S-1-5-18",
12029 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
12031 "Expected val to be unchanged, got \"%s\"\n",
val);
12037 r = pMsiGetPatchInfoExA(patchcode, prodcode,
"S-1-5-18",
12041 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
12043 "Expected val to be unchanged, got \"%s\"\n",
val);
12049 r = pMsiGetPatchInfoExA(patchcode, prodcode,
"S-1-5-18",
12053 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
12055 "Expected val to be unchanged, got \"%s\"\n",
val);
12061 r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
12065 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
12067 "Expected val to be unchanged, got \"%s\"\n",
val);
12073 r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
12077 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
12079 "Expected val to be unchanged, got \"%s\"\n",
val);
12085 r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
12089 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
12091 "Expected val to be unchanged, got \"%s\"\n",
val);
12097 r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid, 3,
12100 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
12102 "Expected val to be unchanged, got \"%s\"\n",
val);
12109 r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
12113 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
12115 "Expected val to be unchanged, got \"%s\"\n",
val);
12118 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\");
12120 lstrcatA(keypath,
"\\Products\\");
12126 skip(
"Not enough rights to perform tests\n");
12135 r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
12139 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
12141 "Expected val to be unchanged, got \"%s\"\n",
val);
12150 r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
12155 "Expected val to be unchanged, got \"%s\"\n",
val);
12164 r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
12169 "Expected val to be unchanged, got \"%s\"\n",
val);
12178 r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
12183 "Expected val to be unchanged, got \"%s\"\n",
val);
12186 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\Managed\\");
12188 lstrcatA(keypath,
"\\Installer\\Products\\");
12197 r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
12202 "Expected val to be unchanged, got \"%s\"\n",
val);
12211 r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
12216 "Expected val to be unchanged, got \"%s\"\n",
val);
12220 (
const BYTE *)
"transforms", 11);
12226 r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
12231 "Expected val to be unchanged, got \"%s\"\n",
val);
12234 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\");
12237 lstrcatA(keypath, patch_squashed);
12245 r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
12250 ok(
size == 0,
"Expected 0, got %lu\n",
size);
12253 (
const BYTE *)
"pack", 5);
12259 r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
12264 ok(
size == 4,
"Expected 4, got %lu\n",
size);
12268 r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
12272 ok(!
lstrcmpA(
val,
"transforms"),
"Expected \"transforms\", got \"%s\"\n",
val);
12273 ok(
size == 10,
"Expected 10, got %lu\n",
size);
12276 (
const BYTE *)
"mydate", 7);
12282 r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
12287 ok(
size == 6,
"Expected 6, got %lu\n",
size);
12290 (
const BYTE *)
"yes", 4);
12296 r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
12301 ok(
size == 3,
"Expected 3, got %lu\n",
size);
12304 (
const BYTE *)
"good", 5);
12310 r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
12315 ok(
size == 4,
"Expected 4, got %lu\n",
size);
12325 r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
12330 ok(
size == 1,
"Expected 1, got %lu\n",
size);
12340 r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
12345 ok(
size == 1,
"Expected 1, got %lu\n",
size);
12348 (
const BYTE *)
"display", 8);
12354 r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
12359 ok(
size == 7,
"Expected 7, got %lu\n",
size);
12362 (
const BYTE *)
"moreinfo", 9);
12368 r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
12372 ok(!
lstrcmpA(
val,
"moreinfo"),
"Expected \"moreinfo\", got \"%s\"\n",
val);
12373 ok(
size == 8,
"Expected 8, got %lu\n",
size);
12378 r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
12382 "Expected ERROR_UNKNOWN_PROPERTY, got %d\n",
r);
12388 r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
12392 ok(
size == 16,
"Expected 16, got %lu\n",
size);
12396 r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
12400 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
12404 r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
12412 r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
12417 "Expected \"moreinf\", got \"%s\"\n",
val);
12418 ok(
size == 16,
"Expected 16, got %lu\n",
size);
12423 r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
12428 "Expected \"moreinfo\", got \"%s\"\n",
val);
12429 ok(
size == 8,
"Expected 8, got %lu\n",
size);
12433 r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
12437 ok(
size == 16,
"Expected 16, got %lu\n",
size);
12450 r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
12455 ok(
size == 4,
"Expected 4, got %lu\n",
size);
12462 r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
12490 r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
12494 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
12496 "Expected val to be unchanged, got \"%s\"\n",
val);
12499 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\");
12501 lstrcatA(keypath,
"\\Products\\");
12510 r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
12514 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
12516 "Expected val to be unchanged, got \"%s\"\n",
val);
12525 r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
12530 "Expected val to be unchanged, got \"%s\"\n",
val);
12539 r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
12544 "Expected val to be unchanged, got \"%s\"\n",
val);
12553 r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
12558 "Expected val to be unchanged, got \"%s\"\n",
val);
12561 lstrcpyA(keypath,
"Software\\Microsoft\\Installer\\Products\\");
12570 r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
12575 "Expected val to be unchanged, got \"%s\"\n",
val);
12584 r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
12589 "Expected val to be unchanged, got \"%s\"\n",
val);
12593 (
const BYTE *)
"transforms", 11);
12599 r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
12604 "Expected val to be unchanged, got \"%s\"\n",
val);
12607 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\");
12610 lstrcatA(keypath, patch_squashed);
12618 r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
12623 ok(
size == 0,
"Expected 0, got %lu\n",
size);
12626 (
const BYTE *)
"pack", 5);
12632 r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
12637 ok(
size == 4,
"Expected 4, got %lu\n",
size);
12641 r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
12645 ok(!
lstrcmpA(
val,
"transforms"),
"Expected \"transforms\", got \"%s\"\n",
val);
12646 ok(
size == 10,
"Expected 10, got %lu\n",
size);
12659 r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
12664 ok(
size == 4,
"Expected 4, got %lu\n",
size);
12671 r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
12694 r = pMsiGetPatchInfoExA(patchcode, prodcode,
NULL,
12698 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
12700 "Expected val to be unchanged, got \"%s\"\n",
val);
12703 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer");
12704 lstrcatA(keypath,
"\\UserData\\S-1-5-18\\Products\\");
12713 r = pMsiGetPatchInfoExA(patchcode, prodcode,
NULL,
12717 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
12719 "Expected val to be unchanged, got \"%s\"\n",
val);
12728 r = pMsiGetPatchInfoExA(patchcode, prodcode,
NULL,
12733 "Expected val to be unchanged, got \"%s\"\n",
val);
12742 r = pMsiGetPatchInfoExA(patchcode, prodcode,
NULL,
12747 "Expected val to be unchanged, got \"%s\"\n",
val);
12756 r = pMsiGetPatchInfoExA(patchcode, prodcode,
NULL,
12761 "Expected val to be unchanged, got \"%s\"\n",
val);
12764 lstrcpyA(keypath,
"Software\\Classes\\Installer\\Products\\");
12770 skip(
"insufficient rights\n" );
12779 r = pMsiGetPatchInfoExA(patchcode, prodcode,
NULL,
12784 "Expected val to be unchanged, got \"%s\"\n",
val);
12793 r = pMsiGetPatchInfoExA(patchcode, prodcode,
NULL,
12798 "Expected val to be unchanged, got \"%s\"\n",
val);
12802 (
const BYTE *)
"transforms", 11);
12808 r = pMsiGetPatchInfoExA(patchcode, prodcode,
NULL,
12813 "Expected val to be unchanged, got \"%s\"\n",
val);
12816 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer");
12817 lstrcatA(keypath,
"\\UserData\\S-1-5-18\\Patches\\");
12818 lstrcatA(keypath, patch_squashed);
12826 r = pMsiGetPatchInfoExA(patchcode, prodcode,
NULL,
12831 ok(
size == 0,
"Expected 0, got %lu\n",
size);
12834 (
const BYTE *)
"pack", 5);
12840 r = pMsiGetPatchInfoExA(patchcode, prodcode,
NULL,
12845 ok(
size == 4,
"Expected 4, got %lu\n",
size);
12849 r = pMsiGetPatchInfoExA(patchcode, prodcode,
NULL,
12853 ok(!
lstrcmpA(
val,
"transforms"),
"Expected \"transforms\", got \"%s\"\n",
val);
12854 ok(
size == 10,
"Expected 10, got %lu\n",
size);
12867 r = pMsiGetPatchInfoExA(patchcode, prodcode,
NULL,
12872 ok(
size == 4,
"Expected 4, got %lu\n",
size);
12879 r = pMsiGetPatchInfoExA(patchcode, prodcode,
NULL,
12906 HKEY hkey_product, hkey_patch, hkey_patches, hkey_udprops, hkey_udproduct;
12907 HKEY hkey_udpatch, hkey_udpatches, hkey_udproductpatches, hkey_udproductpatch;
12935 lstrcpyA(keypath,
"Software\\Classes\\Installer\\Products\\");
12941 skip(
"Not enough rights to perform tests\n");
12951 ok(!
lstrcmpA(
val,
"apple"),
"expected val to be unchanged, got \"%s\"\n",
val);
12962 ok(!
lstrcmpA(
val,
"apple"),
"expected val to be unchanged got \"%s\"\n",
val);
12973 ok(!
lstrcmpA(
val,
"apple"),
"expected val to be unchanged got \"%s\"\n",
val);
12976 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer");
12977 lstrcatA(keypath,
"\\UserData\\S-1-5-18\\Products\\");
12983 skip(
"Not enough rights to perform tests\n");
12993 ok(!
lstrcmpA(
val,
"apple"),
"expected val to be unchanged got \"%s\"\n",
val);
13004 ok(!
lstrcmpA(
val,
"apple"),
"expected val to be unchanged, got \"%s\"\n",
val);
13015 ok(!
lstrcmpA(
val,
"apple"),
"expected val to be unchanged got \"%s\"\n",
val);
13029 ok(!
lstrcmpA(
val,
"apple"),
"expected val to be unchanged got \"%s\"\n",
val);
13032 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer");
13033 lstrcatA(keypath,
"\\UserData\\S-1-5-18\\Patches\\");
13034 lstrcatA(keypath, patch_squashed);
13048 ok(
size == 11,
"expected 11 got %lu\n",
size);
13054 ok(!
lstrcmpA(
val,
"c:\\test.msp"),
"expected \"c:\\test.msp\", got \"%s\"\n",
val);
13055 ok(
size == 11,
"expected 11 got %lu\n",
size);
13061 ok(!valW[0],
"expected 0 got %u\n", valW[0]);
13062 ok(
size == 11,
"expected 11 got %lu\n",
size);
13068 ok(valW[0],
"expected > 0 got %u\n", valW[0]);
13069 ok(
size == 11,
"expected 11 got %lu\n",
size);
13096 BOOL found1, found2, found3;
13098 char product1[39], product2[39], product3[39],
guid[39];
13099 char product_squashed1[33], product_squashed2[33], product_squashed3[33];
13107 skip(
"process is limited\n" );
13119 strcpy(keypath2,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\Managed\\");
13120 strcat(keypath2, usersid);
13121 strcat(keypath2,
"\\Installer\\Products\\");
13122 strcat(keypath2, product_squashed2);
13127 skip(
"Not enough rights to perform tests\n");
13133 strcpy(keypath1,
"Software\\Classes\\Installer\\Products\\");
13134 strcat(keypath1, product_squashed1);
13139 skip(
"insufficient rights\n" );
13145 strcpy(keypath3,
"Software\\Microsoft\\Installer\\Products\\");
13146 strcat(keypath3, product_squashed3);
13166 found1 = found2 = found3 =
FALSE;
13172 if (found1 && found2 && found3)
break;
13175 ok(found1,
"product1 not found\n");
13176 ok(found2,
"product2 not found\n");
13178 ok(found3,
"product3 not found\n");
13237 char product0[39], product1[39], product2[39], product3[39],
guid[39],
sid[128];
13238 char product_squashed1[33], product_squashed2[33], product_squashed3[33];
13243 BOOL found1, found2, found3;
13245 if (!pMsiEnumProductsExA)
13247 win_skip(
"MsiEnumProductsExA not implemented\n");
13258 strcpy( keypath2,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\Managed\\" );
13259 strcat( keypath2, usersid );
13260 strcat( keypath2,
"\\Installer\\Products\\" );
13261 strcat( keypath2, product_squashed2 );
13266 skip(
"insufficient rights\n" );
13271 strcpy( keypath1,
"Software\\Classes\\Installer\\Products\\" );
13272 strcat( keypath1, product_squashed1 );
13277 skip(
"insufficient rights\n" );
13282 strcpy( keypath3, usersid );
13283 strcat( keypath3,
"\\Software\\Microsoft\\Installer\\Products\\" );
13284 strcat( keypath3, product_squashed3 );
13318 ok(
len,
"length unchanged\n" );
13327 ok(
guid[0],
"empty guid\n" );
13328 ok(
context != 0xdeadbeef,
"context unchanged\n" );
13338 ok(
guid[0],
"empty guid\n" );
13339 ok(
context != 0xdeadbeef,
"context unchanged\n" );
13350 skip(
"insufficient rights\n" );
13354 ok(
guid[0],
"empty guid\n" );
13355 ok(
context != 0xdeadbeef,
"context unchanged\n" );
13364 found1 = found2 = found3 =
FALSE;
13370 ok( !
sid[0],
"got \"%s\"\n",
sid );
13371 ok( !
len,
"unexpected length %lu\n",
len );
13377 ok(
sid[0],
"empty sid\n" );
13384 ok(
sid[0],
"empty sid\n" );
13388 if (found1 && found2 && found3)
break;
13395 ok(found1,
"product1 not found\n");
13396 ok(found2,
"product2 not found\n");
13397 ok(found3,
"product3 not found\n");
13412 BOOL found1, found2;
13414 char comp1[39], comp2[39],
guid[39];
13415 char comp_squashed1[33], comp_squashed2[33];
13423 skip(
"process is limited\n");
13432 strcpy( keypath1,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\" );
13433 strcat( keypath1,
"S-1-5-18\\Components\\" );
13434 strcat( keypath1, comp_squashed1 );
13439 skip(
"insufficient rights\n" );
13444 strcpy( keypath2,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\" );
13445 strcat( keypath2, usersid );
13446 strcat( keypath2,
"\\Components\\" );
13447 strcat( keypath2, comp_squashed2 );
13452 skip(
"insufficient rights\n" );
13461 found1 = found2 =
FALSE;
13466 ok(
guid[0],
"empty guid\n" );
13467 if (found1 && found2)
break;
13471 ok( found1,
"comp1 not found\n" );
13472 ok( found2,
"comp2 not found\n" );
13485 BOOL found1, found2;
13488 char comp1[39], comp2[39],
guid[39],
sid[128];
13489 char comp_squashed1[33], comp_squashed2[33];
13495 if (!pMsiEnumComponentsExA)
13497 win_skip(
"MsiEnumComponentsExA not implemented\n" );
13502 skip(
"process is limited\n");
13511 strcpy( keypath1,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\" );
13512 strcat( keypath1,
"S-1-5-18\\Components\\" );
13513 strcat( keypath1, comp_squashed1 );
13518 skip(
"insufficient rights\n" );
13523 strcpy( keypath2,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\" );
13524 strcat( keypath2, usersid );
13525 strcat( keypath2,
"\\Components\\" );
13526 strcat( keypath2, comp_squashed2 );
13531 skip(
"insufficient rights\n" );
13536 sizeof(
"c:\\doesnotexist"));
13544 found1 = found2 =
FALSE;
13550 ok( !
sid[0],
"got \"%s\"\n",
sid );
13551 ok( !
len,
"unexpected length %lu\n",
len );
13558 ok(
sid[0],
"empty sid\n" );
13569 ok( found1,
"comp1 not found\n" );
13570 ok( found2,
"comp2 not found\n" );
13598 skip(
"process is limited\n");
13618 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
13624 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
13630 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
13637 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
13644 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
13651 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
13658 "Expected ERROR_UNKNOWN_PRODUCT, got %d\n",
r);
13664 skip(
"Not enough rights to perform tests\n");
13668 ok(
pf_exists(
"msitest\\hydrogen"),
"File not installed\n");
13669 ok(
pf_exists(
"msitest\\helium"),
"File not installed\n");
13670 ok(
pf_exists(
"msitest\\lithium"),
"File not installed\n");
13671 ok(
pf_exists(
"msitest"),
"File not installed\n");
13688 "Expected ERROR_UNKNOWN_PRODUCT, got %u\n",
r);
13693 ok(
pf_exists(
"msitest\\hydrogen"),
"File not installed\n");
13694 ok(
pf_exists(
"msitest\\helium"),
"File not installed\n");
13695 ok(
pf_exists(
"msitest\\lithium"),
"File not installed\n");
13696 ok(
pf_exists(
"msitest"),
"File not installed\n");
13713 "Expected ERROR_UNKNOWN_PRODUCT, got %u\n",
r);
13718 ok(
pf_exists(
"msitest\\hydrogen"),
"File not installed\n");
13719 ok(
pf_exists(
"msitest\\helium"),
"File not installed\n");
13720 ok(
pf_exists(
"msitest\\lithium"),
"File not installed\n");
13721 ok(
pf_exists(
"msitest"),
"File not installed\n");
13740 ok(
pf_exists(
"msitest\\hydrogen"),
"File not installed\n");
13741 ok(
pf_exists(
"msitest\\helium"),
"File not installed\n");
13742 ok(
pf_exists(
"msitest\\lithium"),
"File not installed\n");
13743 ok(
pf_exists(
"msitest"),
"File not installed\n");
13747 lstrcpyA(keypath,
"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\");
13748 lstrcatA(keypath,
"Installer\\UserData\\S-1-5-18\\Products\\");
13749 lstrcatA(keypath,
"83374883CBB1401418CAF2AA7CCEDDDC\\InstallProperties");
13761 (
const BYTE *)
"C:\\idontexist.msi", 18);
13769 "Expected ERROR_INSTALL_SOURCE_ABSENT, got %d\n",
r);
13770 ok(
pf_exists(
"msitest\\hydrogen"),
"File not installed\n");
13771 ok(
pf_exists(
"msitest\\helium"),
"File not installed\n");
13772 ok(
pf_exists(
"msitest\\lithium"),
"File not installed\n");
13773 ok(
pf_exists(
"msitest"),
"File not installed\n");
13792 ok(
pf_exists(
"msitest\\hydrogen"),
"File not installed\n");
13793 ok(
pf_exists(
"msitest\\helium"),
"File not installed\n");
13794 ok(
pf_exists(
"msitest\\lithium"),
"File not installed\n");
13795 ok(
pf_exists(
"msitest"),
"File not installed\n");
13797 lstrcpyA(keypath,
"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\");
13798 lstrcatA(keypath,
"Installer\\UserData\\S-1-5-18\\Products\\");
13799 lstrcatA(keypath,
"83374883CBB1401418CAF2AA7CCEDDDC\\InstallProperties");
13811 (
const BYTE *)
"C:\\idontexist.msi", 18);
13814 lstrcpyA(keypath,
"SOFTWARE\\Classes\\Installer\\Products\\");
13815 lstrcatA(keypath,
"83374883CBB1401418CAF2AA7CCEDDDC\\SourceList");
13827 (
const BYTE *)
"idontexist.msi", 15);
13835 "Expected ERROR_INSTALL_SOURCE_ABSENT, got %d\n",
r);
13836 ok(
pf_exists(
"msitest\\hydrogen"),
"File not installed\n");
13837 ok(
pf_exists(
"msitest\\helium"),
"File not installed\n");
13838 ok(
pf_exists(
"msitest\\lithium"),
"File not installed\n");
13839 ok(
pf_exists(
"msitest"),
"File not installed\n");
13843 (
const BYTE *)packagename,
lstrlenA(packagename) + 1);
13848 (
const BYTE *)localpackage,
lstrlenA(localpackage) + 1);
13881 skip(
"process is limited\n");
13893 skip(
"Not enough rights to perform tests\n");
13917 attrs = 0xdeadbeef;
13921 "expected INSTALLFEATUREATTRIBUTE_FAVORLOCAL, got %#lx\n", attrs);
13930 "expected INSTALLFEATUREATTRIBUTE_FAVORLOCAL, got %#lx\n", attrs);
13942 "expected INSTALLFEATUREATTRIBUTE_FAVORSOURCE, got %#lx\n", attrs);
13959 DWORD attrs, title_len, help_len;
13963 skip(
"process is limited\n");
13975 skip(
"Not enough rights to perform tests\n");
13996 title_len = help_len = 0;
13999 ok(title_len == 3,
"expected 3, got %lu\n", title_len);
14000 ok(help_len == 3,
"expected 3, got %lu\n", help_len);
14003 title_len = help_len = 0;
14006 ok(title_len == 3,
"expected 3, got %lu\n", title_len);
14007 ok(help_len == 3,
"expected 3, got %lu\n", help_len);
14011 title_len =
sizeof(
title);
14012 help_len =
sizeof(
help);
14016 ok(title_len == 3,
"expected 3, got %lu\n", title_len);
14017 ok(help_len == 3,
"expected 3, got %lu\n", help_len);
14023 title_len =
sizeof(
title);
14024 help_len =
sizeof(
help);
14028 ok(!title_len,
"expected 0, got %lu\n", title_len);
14029 ok(!help_len,
"expected 0, got %lu\n", help_len);
14031 ok(!
help[0],
"expected \"\", got \"%s\"\n",
help);
14077 ok(ret_a ==
NULL,
"expected NULL, got %p\n", ret_a);
14083 if (!pMsiSetExternalUIRecord) {
14084 win_skip(
"MsiSetExternalUIRecord is not available\n");
14089 ok(!
error,
"MsiSetExternalUIRecord failed %u\n",
error);
14090 ok(prev ==
NULL,
"expected NULL, got %p\n", prev);
14094 ok(!
error,
"MsiSetExternalUIRecord failed %u\n",
error);
14098 ok(ret_w ==
NULL,
"expected NULL, got %p\n", ret_w);
14104 ok(ret_a ==
NULL,
"expected NULL, got %p\n", ret_a);
14107 ok(ret_w ==
NULL,
"expected NULL, got %p\n", ret_w);
14111 ok(!
error,
"MsiSetExternalUIRecord failed %u\n",
error);
14112 ok(prev ==
NULL,
"expected NULL, got %p\n", prev);
14115 ok(ret_a ==
NULL,
"expected NULL, got %p\n", ret_a);
14118 ok(ret_w ==
NULL,
"expected NULL, got %p\n", ret_w);
14122 ok(!
error,
"MsiSetExternalUIRecord failed %u\n",
error);
14126 ok(!
error,
"MsiSetExternalUIRecord failed %u\n",
error);
14129 ok(!
error,
"MsiSetExternalUIRecord failed %u\n",
error);
14134 static const char prodcode[] =
"{38847338-1BBC-4104-81AC-2FAAC7ECDDCD}";
14139 if (!pMsiSourceListGetInfoA)
14141 win_skip(
"MsiSourceListGetInfoA is not available\n");
14168 skip(
"Not enough rights to perform tests\n");
14260 skip(
"process is limited\n");
14274 skip(
"Not enough rights to perform tests\n");
14278 ok(
delete_pf(
"msitest\\added\\added2\\maximus",
TRUE),
"File not installed\n");
14279 ok(
delete_pf(
"msitest\\added\\added2",
FALSE),
"Directory not created\n");
14295 ok(
DeleteFileA(
"c:\\parent\\child\\Shortcut.lnk"),
"file not installed\n");
14315 skip(
"process is limited\n");
14332 ok(!
delete_pf(
"msitest\\sourcedir.txt",
TRUE),
"file not removed\n");
14342 ok(!
delete_pf(
"msitest\\sourcedir.txt",
TRUE),
"file not removed\n");
14354 ok(!
delete_pf(
"msitest\\sourcedir.txt",
TRUE),
"file not removed\n");
14364 ok(!
delete_pf(
"msitest\\sourcedir.txt",
TRUE),
"file not removed\n");
14379 skip(
"process is limited\n");
14399 skip(
"Not enough rights to perform tests\n");
14431 skip(
"process is limited\n");
14484 cmd =
"P=\"\"\"\"";
14524 cmd =
"P= \"one\" ";
14528 cmd =
"P=\"one\"\"";
14532 cmd =
"P=\"\"one\"";
14536 cmd =
"P=\"\"one\"\"";
14540 cmd =
"P=\"one two\"";
14544 cmd =
"P=\"\"\"one\"\" two\"";
14548 cmd =
"P=\"\"\"one\"\" two\" Q=three";
14552 cmd =
"P=\"\" Q=\"two\"";
14556 cmd =
"P=\"one\" Q=\"two\"";
14560 cmd =
"P=\"one=two\"";
14564 cmd =
"Q=\"\" P=\"one\"";
14568 cmd =
"P=\"\"\"one\"\"\" Q=\"two\"";
14572 cmd =
"P=\"one \"\"two\"\"\" Q=\"three\"";
14576 cmd =
"P=\"\"\"one\"\" two\" Q=\"three\"";
14593 skip(
"ROSTESTS-180: Skipping msi_winetest:msi because it hangs on WHS-Testbot. Set winetest_interactive to run it anyway.\n");
14600 if (pIsWow64Process)
14649 if (pMsiGetComponentPathExA)
static char CURR_DIR[MAX_PATH]
char * strcat(char *DstString, const char *SrcString)
int strcmp(const char *String1, const char *String2)
char * strstr(char *String1, char *String2)
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
ACPI_SIZE strlen(const char *String)
int strncmp(const char *String1, const char *String2, ACPI_SIZE Count)
char * strcpy(char *DstString, const char *SrcString)
static int run_query(HKEY root, WCHAR *path, WCHAR *key_name, WCHAR *value_name, BOOL value_empty, BOOL recurse)
void user(int argc, const char *argv[])
#define RegCloseKey(hKey)
static const CHAR suminfo[]
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 RegDeleteValueA(HKEY hKey, LPCSTR lpValueName)
LONG WINAPI RegSetValueA(HKEY hKeyOriginal, LPCSTR lpSubKey, DWORD dwType, LPCSTR lpData, DWORD cbData)
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 ReadFile(a, b, c, d, e)
#define INVALID_HANDLE_VALUE
#define GetCurrentProcess()
#define ERROR_NO_MORE_ITEMS
#define ERROR_INVALID_HANDLE
#define WideCharToMultiByte
#define MultiByteToWideChar
#define ERROR_ACCESS_DENIED
static const WCHAR version[]
BOOL WINAPI DeleteFileA(IN LPCSTR lpFileName)
BOOL WINAPI RemoveDirectoryA(IN LPCSTR lpPathName)
BOOL WINAPI CreateDirectoryA(IN LPCSTR lpPathName, IN LPSECURITY_ATTRIBUTES lpSecurityAttributes)
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
DWORD WINAPI GetCurrentDirectoryA(IN DWORD nBufferLength, OUT LPSTR lpBuffer)
BOOL WINAPI SetCurrentDirectoryA(IN LPCSTR lpPathName)
DWORD WINAPI GetTempPathA(IN DWORD nBufferLength, OUT LPSTR lpBuffer)
UINT WINAPI GetSystemDirectoryA(OUT LPSTR lpBuffer, IN UINT uSize)
UINT WINAPI MsiOpenDatabaseW(LPCWSTR szDBPath, LPCWSTR szPersist, MSIHANDLE *phDB)
UINT WINAPI MsiCloseHandle(MSIHANDLE handle)
UINT WINAPI MsiSetFeatureAttributesA(MSIHANDLE handle, LPCSTR feature, DWORD attrs)
UINT WINAPI MsiDoActionA(MSIHANDLE hInstall, LPCSTR szAction)
UINT WINAPI MsiGetFeatureInfoA(MSIHANDLE handle, const char *feature, DWORD *attrs, char *title, DWORD *title_len, char *help, DWORD *help_len)
UINT WINAPI MsiOpenProductA(LPCSTR szProduct, MSIHANDLE *phProduct)
UINT WINAPI MsiGetFileVersionA(LPCSTR szFilePath, LPSTR lpVersionBuf, LPDWORD pcchVersionBuf, LPSTR lpLangBuf, LPDWORD pcchLangBuf)
UINT WINAPI MsiProvideQualifiedComponentExA(const char *szComponent, const char *szQualifier, DWORD dwInstallMode, const char *szProduct, DWORD Unused1, DWORD Unused2, char *lpPathBuf, DWORD *pcchPathBuf)
UINT WINAPI MsiGetPatchInfoA(LPCSTR patch, LPCSTR attr, LPSTR buffer, LPDWORD buflen)
UINT WINAPI MsiConfigureFeatureW(LPCWSTR szProduct, LPCWSTR szFeature, INSTALLSTATE eInstallState)
UINT WINAPI MsiConfigureProductExA(LPCSTR szProduct, int iInstallLevel, INSTALLSTATE eInstallState, LPCSTR szCommandLine)
UINT WINAPI MsiSetExternalUIRecord(INSTALLUI_HANDLER_RECORD handler, DWORD filter, void *context, INSTALLUI_HANDLER_RECORD *prev)
INSTALLSTATE WINAPI MsiQueryProductStateA(LPCSTR szProduct)
UINT WINAPI MsiGetPatchInfoExA(LPCSTR szPatchCode, LPCSTR szProductCode, LPCSTR szUserSid, MSIINSTALLCONTEXT dwContext, LPCSTR szProperty, LPSTR lpValue, DWORD *pcchValue)
UINT WINAPI MsiInstallProductA(LPCSTR szPackagePath, LPCSTR szCommandLine)
UINT WINAPI MsiGetFileHashA(const char *szFilePath, DWORD dwOptions, MSIFILEHASHINFO *pHash)
INSTALLUI_HANDLERA WINAPI MsiSetExternalUIA(INSTALLUI_HANDLERA puiHandler, DWORD dwMessageFilter, void *pvContext)
INSTALLUI_HANDLERW WINAPI MsiSetExternalUIW(INSTALLUI_HANDLERW puiHandler, DWORD dwMessageFilter, void *pvContext)
INSTALLSTATE WINAPI MsiGetComponentPathExA(LPCSTR product, LPCSTR comp, LPCSTR usersid, MSIINSTALLCONTEXT ctx, LPSTR buf, LPDWORD buflen)
UINT WINAPI MsiGetPatchInfoW(LPCWSTR patch, LPCWSTR attr, LPWSTR buffer, LPDWORD buflen)
UINT WINAPI MsiGetProductInfoA(LPCSTR szProduct, LPCSTR szAttribute, LPSTR szBuffer, LPDWORD pcchValueBuf)
UINT WINAPI MsiConfigureFeatureA(LPCSTR szProduct, LPCSTR szFeature, INSTALLSTATE eInstallState)
UINT WINAPI MsiGetProductCodeA(LPCSTR szComponent, LPSTR szBuffer)
UINT WINAPI MsiQueryComponentStateA(LPCSTR szProductCode, LPCSTR szUserSid, MSIINSTALLCONTEXT dwContext, LPCSTR szComponent, INSTALLSTATE *pdwState)
INSTALLUILEVEL WINAPI MsiSetInternalUI(INSTALLUILEVEL dwUILevel, HWND *phWnd)
UINT WINAPI MsiProvideComponentA(const char *product, const char *feature, const char *component, DWORD mode, char *buf, DWORD *buflen)
INSTALLSTATE WINAPI MsiGetComponentPathA(LPCSTR product, LPCSTR comp, LPSTR buf, LPDWORD buflen)
HRESULT WINAPI MsiGetFileSignatureInformationA(const char *path, DWORD flags, PCCERT_CONTEXT *cert, BYTE *hash, DWORD *hashlen)
INSTALLSTATE WINAPI MsiQueryFeatureStateA(LPCSTR szProduct, LPCSTR szFeature)
INSTALLSTATE WINAPI MsiLocateComponentA(LPCSTR szComponent, LPSTR lpPathBuf, LPDWORD pcchBuf)
UINT WINAPI MsiConfigureProductA(LPCSTR szProduct, int iInstallLevel, INSTALLSTATE eInstallState)
UINT WINAPI MsiProvideComponentW(const WCHAR *product, const WCHAR *feature, const WCHAR *component, DWORD mode, WCHAR *buf, DWORD *buflen)
INSTALLSTATE WINAPI MsiQueryProductStateW(LPCWSTR szProduct)
INSTALLSTATE WINAPI MsiUseFeatureExA(const char *szProduct, const char *szFeature, DWORD dwInstallMode, DWORD dwReserved)
UINT WINAPI MsiGetProductInfoExA(LPCSTR szProductCode, LPCSTR szUserSid, MSIINSTALLCONTEXT dwContext, LPCSTR szProperty, LPSTR szValue, LPDWORD pcchValue)
USERINFOSTATE WINAPI MsiGetUserInfoA(LPCSTR szProduct, LPSTR lpUserNameBuf, LPDWORD pcchUserNameBuf, LPSTR lpOrgNameBuf, LPDWORD pcchOrgNameBuf, LPSTR lpSerialBuf, LPDWORD pcchSerialBuf)
UINT WINAPI MsiOpenPackageA(LPCSTR szPackage, MSIHANDLE *phPackage)
UINT WINAPI MsiOpenPackageExA(LPCSTR szPackage, DWORD dwOptions, MSIHANDLE *phPackage)
UINT WINAPI MsiOpenPackageExW(const WCHAR *szPackage, DWORD dwOptions, MSIHANDLE *phPackage)
UINT WINAPI MsiGetPropertyA(MSIHANDLE hinst, const char *name, char *buf, DWORD *sz)
UINT WINAPI MsiEnumComponentsA(DWORD index, char *lpguid)
UINT WINAPI MsiEnumFeaturesW(const WCHAR *szProduct, DWORD index, WCHAR *szFeature, WCHAR *szParent)
UINT WINAPI MsiEnumPatchesW(const WCHAR *szProduct, DWORD iPatchIndex, WCHAR *lpPatchBuf, WCHAR *lpTransformsBuf, DWORD *pcchTransformsBuf)
UINT WINAPI MsiEnumProductsA(DWORD index, char *lpguid)
UINT WINAPI MsiEnumClientsA(const char *szComponent, DWORD index, char *szProduct)
UINT WINAPI MsiEnumProductsExA(const char *product, const char *usersid, DWORD ctx, DWORD index, char installed_product[GUID_SIZE], MSIINSTALLCONTEXT *installed_ctx, char *sid, DWORD *sid_len)
UINT WINAPI MsiEnumPatchesExA(const char *szProductCode, const char *szUserSid, DWORD dwContext, DWORD dwFilter, DWORD dwIndex, char *szPatchCode, char *szTargetProductCode, MSIINSTALLCONTEXT *pdwTargetProductContext, char *szTargetUserSid, DWORD *pcchTargetUserSid)
UINT WINAPI MsiEnumComponentsExA(const char *user_sid, DWORD ctx, DWORD index, CHAR guid[39], MSIINSTALLCONTEXT *installed_ctx, char *sid, DWORD *sid_len)
UINT WINAPI MsiEnumPatchesA(const char *szProduct, DWORD iPatchIndex, char *lpPatchBuf, char *lpTransformsBuf, DWORD *pcchTransformsBuf)
UINT WINAPI MsiSourceListGetInfoA(LPCSTR szProduct, LPCSTR szUserSid, MSIINSTALLCONTEXT dwContext, DWORD dwOptions, LPCSTR szProperty, LPSTR szValue, LPDWORD pcchValue)
UINT WINAPI MsiSummaryInfoSetPropertyA(MSIHANDLE handle, UINT uiProperty, UINT uiDataType, INT iValue, FILETIME *pftValue, const char *szValue)
UINT WINAPI MsiGetSummaryInformationA(MSIHANDLE hDatabase, const char *szDatabase, UINT uiUpdateCount, MSIHANDLE *pHandle)
UINT WINAPI MsiSummaryInfoPersist(MSIHANDLE handle)
HRESULT WINAPI CoCreateGuid(GUID *pguid)
HRESULT WINAPI CLSIDFromString(LPCOLESTR idstr, LPCLSID id)
INT WINAPI StringFromGUID2(REFGUID id, LPOLESTR str, INT cmax)
HRESULT WINAPI StgOpenStorage(const OLECHAR *pwcsName, IStorage *pstgPriority, DWORD grfMode, SNB snbExclude, DWORD reserved, IStorage **ppstgOpen)
DWORD WINAPI GetFileVersionInfoSizeA(LPCSTR filename, LPDWORD handle)
BOOL WINAPI VerQueryValueA(LPCVOID pBlock, LPCSTR lpSubBlock, LPVOID *lplpBuffer, PUINT puLen)
BOOL WINAPI GetFileVersionInfoA(LPCSTR filename, DWORD handle, DWORD datasize, LPVOID data)
GLint GLint GLint GLint GLint x
GLuint GLuint GLsizei GLenum type
GLuint GLuint GLsizei count
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLdouble GLdouble GLdouble r
GLenum GLuint GLenum GLsizei const GLchar * buf
GLuint GLint GLboolean GLint GLenum access
GLuint64EXT GLuint GLuint GLenum GLenum GLuint GLuint GLenum GLuint GLuint key1
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)
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 memcpy(s1, s2, n)
#define ERROR_FILE_NOT_FOUND
#define sprintf(buf, format,...)
static void create_cab_file(void)
static BOOL is_process_limited(void)
static const WCHAR desc[]
static void create_file_data(LPCSTR name, LPCSTR data, DWORD size)
#define create_file(name, size)
static HINSTANCE hkernel32
static BOOL delete_pf(const CHAR *rel_path, BOOL is_file)
static BOOL pf_exists(const char *file)
BOOL get_system_dirs(void)
void delete_cab_files(void)
static const char file_dat[]
static const char lus_install_exec_seq_dat[]
static void test_MsiGetComponentPathEx(void)
static void compose_base85_guid(LPSTR component, LPSTR comp_base85, LPSTR squashed)
static void test_MsiGetComponentPath(void)
static void test_MsiGetFileSignatureInformation(void)
static void test_MsiEnumComponents(void)
static const char spf2_custom_action_dat[]
static const WCHAR msifileW[]
static void test_MsiGetFeatureInfo(void)
static const char lus_file_dat[]
static void test_MsiGetProductInfo(void)
static void delete_test_files(void)
static const char mcp_component_dat[]
static const char cl_install_exec_seq_dat[]
static char * get_user_sid(void)
static BOOL add_cabinet_storage(LPCSTR db, LPCSTR cabinet)
static const char spf_install_exec_seq_dat[]
static const char spf2_install_exec_seq_dat[]
static const char mcp_feature_dat[]
static const char table_enc85[]
static const char media_dat[]
static const char ci2_file_dat[]
static void test_MsiEnumPatches(void)
static const msi_table spf_tables[]
#define GET_PROC(dll, func)
static void test_MsiEnumClients(void)
static const char msifile[]
static const char ci2_property_dat[]
static void test_MsiEnumPatchesEx_usermanaged(LPCSTR usersid, LPCSTR expectedsid)
static void test_usefeature(void)
static void test_MsiGetPatchInfo(void)
static void test_MsiEnumPatchesEx_machine(void)
static const char ci2_feature_comp_dat[]
static const char property_dat[]
static const char sd_install_ui_seq_dat[]
static const msi_table mcp_tables[]
static void test_MsiEnumProductsEx(void)
static UINT set_summary_info(MSIHANDLE hdb, LPSTR prodcode)
static const char lus_feature_comp_dat[]
static void test_MsiSetFeatureAttributes(void)
static const msi_table spf2_tables[]
static void test_MsiQueryFeatureState(void)
static void test_MsiSetExternalUI(void)
static void test_MsiGetFileVersion(void)
static const char shortcut_dat[]
static void test_MsiGetFileHash(void)
static INT CALLBACK handler_w(LPVOID context, UINT type, LPCWSTR msg)
static void create_test_files(void)
static const char sd_install_exec_seq_dat[]
static void test_MsiGetUserInfo(void)
static void init_functionpointers(void)
static const char sd_component_dat[]
static const char spf_directory_dat[]
static const char ci2_component_dat[]
static const char spf_install_ui_seq_dat[]
static const char sd_file_dat[]
static void test_MsiEnumPatchesEx(void)
static const char spf_component_dat[]
static const char sd_feature_dat[]
static void test_MsiOpenProduct(void)
static const msi_table lus0_tables[]
static void test_MsiQueryComponentState(void)
static const char sd_custom_action_dat[]
static const msi_table tables[]
static void test_null(void)
static void test_MsiGetProductCode(void)
static const char lus0_media_dat[]
static const char feature_dat[]
static PINSTALLUI_HANDLER_RECORD
static void test_MsiProvideComponent(void)
static const char sd_feature_comp_dat[]
static INT CALLBACK handler_record(LPVOID context, UINT type, MSIHANDLE record)
static void test_MsiQueryProductState(void)
static void test_MsiConfigureProductEx(void)
static const char ci_component_dat[]
static const char lus_component_dat[]
static void test_MsiGetPatchInfoEx(void)
static const msi_table ci2_tables[]
static void test_MsiGetProductInfoEx(void)
static void test_MsiEnumPatchesEx_userunmanaged(LPCSTR usersid, LPCSTR expectedsid)
static void test_setpropertyfolder(void)
static const char install_exec_seq_dat[]
static const msi_table sd_tables[]
static void test_MsiSetInternalUI(void)
static const char mcp_feature_comp_dat[]
static void test_MsiEnumProducts(void)
static DWORD *static LPDWORD
static const char directory_dat[]
static DWORD *static MSIINSTALLCONTEXT
static const struct @1677 hash_data[]
static const char lus_feature_dat[]
static const msi_table lus2_tables[]
static const char ci_install_exec_seq_dat[]
static const msi_table ci_tables[]
static void get_version_info(LPSTR path, LPSTR *vercheck, LPDWORD verchecksz, LPSTR *langcheck, LPDWORD langchecksz)
static void test_getcomponentpath(void)
static const msi_table lus1_tables[]
static void test_command_line_parsing(void)
static void test_MsiEnumComponentsEx(void)
static const char component_dat[]
static void test_concurrentinstall(void)
static const char mcp_file_dat[]
static const char lus1_media_dat[]
static void test_sourcedir_props(void)
static const char feature_comp_dat[]
static void test_MsiProvideQualifiedComponentEx(void)
static const msi_table cl_tables[]
static void create_test_guid(LPSTR prodcode, LPSTR squashed)
static const char ci_custom_action_dat[]
static const char lus2_media_dat[]
static INT CALLBACK handler_a(LPVOID context, UINT type, LPCSTR msg)
static void test_lastusedsource(void)
static void encode_base85_guid(GUID *guid, LPWSTR str)
static const char spf_custom_action_dat[]
static const char cl_custom_action_dat[]
static MSIHANDLE create_package_db(void)
#define create_database(name, tables, num_tables)
INTERNETFEATURELIST feature
#define INSTALLPROPERTY_HELPLINKA
@ MSIPATCHSTATE_SUPERSEDED
@ MSIPATCHSTATE_OBSOLETED
enum tagMSIINSTALLCONTEXT MSIINSTALLCONTEXT
#define INSTALLPROPERTY_PATCHSTATEA
#define INSTALLPROPERTY_LOCALPACKAGEA
#define INSTALLPROPERTY_ASSIGNMENTTYPEA
#define INSTALLPROPERTY_INSTALLSOURCEA
#define INSTALLPROPERTY_HELPTELEPHONEA
#define INSTALLPROPERTY_PRODUCTICONA
#define INSTALLPROPERTY_REGCOMPANYA
#define INSTALLPROPERTY_VERSIONSTRINGA
#define INSTALLPROPERTY_INSTALLEDPRODUCTNAMEA
#define INSTALLPROPERTY_VERSIONMAJORA
#define INSTALLPROPERTY_REGOWNERA
#define INSTALLPROPERTY_URLUPDATEINFOA
struct _MSIFILEHASHINFO MSIFILEHASHINFO
enum tagUSERINFOSTATE USERINFOSTATE
INT(CALLBACK * INSTALLUI_HANDLERW)(LPVOID, UINT, LPCWSTR)
#define INSTALLPROPERTY_TRANSFORMSA
#define INSTALLPROPERTY_VERSIONA
#define INSTALLPROPERTY_INSTALLLOCATIONA
#define INSTALLPROPERTY_LASTUSEDSOURCEA
#define INSTALLPROPERTY_INSTANCETYPEA
#define INSTALLPROPERTY_PRODUCTNAMEA
#define INSTALLPROPERTY_AUTHORIZED_LUA_APPA
#define INSTALLPROPERTY_MOREINFOURLA
@ INSTALLFEATUREATTRIBUTE_FAVORSOURCE
@ INSTALLFEATUREATTRIBUTE_FAVORLOCAL
#define INSTALLPROPERTY_URLINFOABOUTA
#define INSTALLPROPERTY_PRODUCTSTATEA
INT(CALLBACK * INSTALLUI_HANDLERA)(LPVOID, UINT, LPCSTR)
#define INSTALLPROPERTY_PRODUCTIDA
@ INSTALLMODE_NODETECTION
static const WCHAR INSTALLPROPERTY_LOCALPACKAGEW[]
#define INSTALLPROPERTY_UNINSTALLABLEA
@ INSTALLSTATE_INVALIDARG
@ INSTALLSTATE_ADVERTISED
@ MSIINSTALLCONTEXT_MACHINE
@ MSIINSTALLCONTEXT_USERUNMANAGED
@ MSIINSTALLCONTEXT_USERMANAGED
@ USERINFOSTATE_INVALIDARG
#define INSTALLPROPERTY_INSTALLDATEA
#define INSTALLPROPERTY_PUBLISHERA
INT(CALLBACK * INSTALLUI_HANDLER_RECORD)(LPVOID, UINT, MSIHANDLE)
enum tagINSTALLUILEVEL INSTALLUILEVEL
#define INSTALLPROPERTY_VERSIONMINORA
#define INSTALLPROPERTY_PACKAGECODEA
#define INSTALLPROPERTY_PACKAGENAMEA
@ INSTALLUILEVEL_NOCHANGE
#define INSTALLPROPERTY_LANGUAGEA
#define INSTALLPROPERTY_DISPLAYNAMEA
BOOL squash_guid(LPCWSTR in, LPWSTR out) DECLSPEC_HIDDEN
#define SQUASHED_GUID_SIZE
UINT WINAPI MsiDatabaseCommit(MSIHANDLE hdb)
#define STGM_SHARE_EXCLUSIVE
#define delete_key(r, p, s)
const char * winetest_platform
static const WCHAR lang[]
static const WCHAR props[]
DWORD WINAPI GetLastError(void)
#define ERROR_INVALID_COMMAND_LINE
#define ERROR_UNKNOWN_PRODUCT
#define ERROR_INSTALL_FAILURE
#define CRYPT_E_FILE_ERROR
#define ERROR_PATH_NOT_FOUND
#define ERROR_UNKNOWN_PATCH
#define ERROR_INSTALL_PACKAGE_REJECTED
#define ERROR_BAD_PATHNAME
#define ERROR_UNKNOWN_COMPONENT
#define ERROR_UNKNOWN_FEATURE
#define ERROR_INSTALL_SOURCE_ABSENT
#define ERROR_FILE_INVALID
#define HRESULT_FROM_WIN32(x)
#define ERROR_FUNCTION_FAILED
#define ERROR_UNKNOWN_PROPERTY
#define ERROR_BAD_CONFIGURATION
#define HKEY_LOCAL_MACHINE
#define HKEY_CURRENT_USER