38static const char msifile[] =
"winetest-package.msi";
64 DWORD dwMaxSubkeyLen, dwMaxValueLen;
81 dwMaxLen =
max(dwMaxSubkeyLen, dwMaxValueLen);
117 if (lpszName != szNameBuf)
free(lpszName);
163 ok(
hr ==
S_OK,
"Expected S_OK, got %#lx\n",
hr);
166 ok(
size == 39,
"Expected 39, got %#lx\n",
hr);
195 prod =
"3D0DAE300FACA1300AD792060BCDAA92";
197 "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\"
198 "Installer\\UserData\\S-1-5-18\\Components\\%s", squashed);
200 "SOFTWARE\\Classes\\Installer\\"
201 "Products\\3D0DAE300FACA1300AD792060BCDAA92");
205 prod =
"7D2F387510109040002000060BECB6AB";
207 "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\"
208 "Installer\\UserData\\%s\\Components\\%s", usersid, squashed);
210 "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\"
211 "Installer\\%s\\Installer\\Products\\"
212 "7D2F387510109040002000060BECB6AB", usersid);
216 prod =
"7D2F387510109040002000060BECB6AB";
218 "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\"
219 "Installer\\UserData\\%s\\Components\\%s", usersid, squashed);
221 "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\"
222 "Installer\\Managed\\%s\\Installer\\Products\\"
223 "7D2F387510109040002000060BECB6AB", usersid);
259 "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\"
260 "Installer\\UserData\\S-1-5-18\\Components\\%s", squashed);
262 "SOFTWARE\\Classes\\Installer\\"
263 "Products\\3D0DAE300FACA1300AD792060BCDAA92");
268 "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\"
269 "Installer\\UserData\\%s\\Components\\%s", usersid, squashed);
271 "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\"
272 "Installer\\%s\\Installer\\Products\\"
273 "7D2F387510109040002000060BECB6AB", usersid);
278 "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\"
279 "Installer\\UserData\\%s\\Components\\%s", usersid, squashed);
281 "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\"
282 "Installer\\Managed\\%s\\Installer\\Products\\"
283 "7D2F387510109040002000060BECB6AB", usersid);
318 "CREATE TABLE `Component` ( "
319 "`Component` CHAR(72) NOT NULL, "
320 "`ComponentId` CHAR(38), "
321 "`Directory_` CHAR(72) NOT NULL, "
322 "`Attributes` SHORT NOT NULL, "
323 "`Condition` CHAR(255), "
324 "`KeyPath` CHAR(72) "
325 "PRIMARY KEY `Component`)" );
333 "CREATE TABLE `Feature` ( "
334 "`Feature` CHAR(38) NOT NULL, "
335 "`Feature_Parent` CHAR(38), "
337 "`Description` CHAR(255), "
338 "`Display` SHORT NOT NULL, "
339 "`Level` SHORT NOT NULL, "
340 "`Directory_` CHAR(72), "
341 "`Attributes` SHORT NOT NULL "
342 "PRIMARY KEY `Feature`)" );
350 "CREATE TABLE `FeatureComponents` ( "
351 "`Feature_` CHAR(38) NOT NULL, "
352 "`Component_` CHAR(72) NOT NULL "
353 "PRIMARY KEY `Feature_`, `Component_` )" );
361 "CREATE TABLE `File` ("
362 "`File` CHAR(72) NOT NULL, "
363 "`Component_` CHAR(72) NOT NULL, "
364 "`FileName` CHAR(255) NOT NULL, "
365 "`FileSize` LONG NOT NULL, "
366 "`Version` CHAR(72), "
367 "`Language` CHAR(20), "
368 "`Attributes` SHORT, "
369 "`Sequence` SHORT NOT NULL "
370 "PRIMARY KEY `File`)" );
378 "CREATE TABLE `RemoveFile` ("
379 "`FileKey` CHAR(72) NOT NULL, "
380 "`Component_` CHAR(72) NOT NULL, "
381 "`FileName` CHAR(255) LOCALIZABLE, "
382 "`DirProperty` CHAR(72) NOT NULL, "
383 "`InstallMode` SHORT NOT NULL "
384 "PRIMARY KEY `FileKey`)" );
392 "CREATE TABLE `AppSearch` ("
393 "`Property` CHAR(72) NOT NULL, "
394 "`Signature_` CHAR(72) NOT NULL "
395 "PRIMARY KEY `Property`, `Signature_`)" );
403 "CREATE TABLE `RegLocator` ("
404 "`Signature_` CHAR(72) NOT NULL, "
405 "`Root` SHORT NOT NULL, "
406 "`Key` CHAR(255) NOT NULL, "
409 "PRIMARY KEY `Signature_`)" );
417 "CREATE TABLE `Signature` ("
418 "`Signature` CHAR(72) NOT NULL, "
419 "`FileName` CHAR(255) NOT NULL, "
420 "`MinVersion` CHAR(20), "
421 "`MaxVersion` CHAR(20), "
426 "`Languages` CHAR(255) "
427 "PRIMARY KEY `Signature`)" );
435 "CREATE TABLE `LaunchCondition` ("
436 "`Condition` CHAR(255) NOT NULL, "
437 "`Description` CHAR(255) NOT NULL "
438 "PRIMARY KEY `Condition`)" );
446 "CREATE TABLE `Property` ("
447 "`Property` CHAR(72) NOT NULL, "
449 "PRIMARY KEY `Property`)" );
457 "CREATE TABLE `InstallExecuteSequence` ("
458 "`Action` CHAR(72) NOT NULL, "
459 "`Condition` CHAR(255), "
461 "PRIMARY KEY `Action`)" );
462 ok(
r ==
ERROR_SUCCESS,
"Failed to create InstallExecuteSequence table: %u\n",
r);
469 "CREATE TABLE `InstallUISequence` ("
470 "`Action` CHAR(72) NOT NULL, "
471 "`Condition` CHAR(255), "
473 "PRIMARY KEY `Action`)" );
481 "CREATE TABLE `Media` ("
482 "`DiskId` SHORT NOT NULL, "
483 "`LastSequence` SHORT NOT NULL, "
484 "`DiskPrompt` CHAR(64), "
485 "`Cabinet` CHAR(255), "
486 "`VolumeLabel` CHAR(32), "
488 "PRIMARY KEY `DiskId`)" );
496 "CREATE TABLE `CCPSearch` ("
497 "`Signature_` CHAR(72) NOT NULL "
498 "PRIMARY KEY `Signature_`)" );
506 "CREATE TABLE `DrLocator` ("
507 "`Signature_` CHAR(72) NOT NULL, "
508 "`Parent` CHAR(72), "
511 "PRIMARY KEY `Signature_`, `Parent`, `Path`)" );
519 "CREATE TABLE `CompLocator` ("
520 "`Signature_` CHAR(72) NOT NULL, "
521 "`ComponentId` CHAR(38) NOT NULL, "
523 "PRIMARY KEY `Signature_`)" );
531 "CREATE TABLE `IniLocator` ("
532 "`Signature_` CHAR(72) NOT NULL, "
533 "`FileName` CHAR(255) NOT NULL, "
534 "`Section` CHAR(96)NOT NULL, "
535 "`Key` CHAR(128)NOT NULL, "
538 "PRIMARY KEY `Signature_`)" );
546 "CREATE TABLE `CustomAction` ("
547 "`Action` CHAR(72) NOT NULL, "
548 "`Type` SHORT NOT NULL, "
549 "`Source` CHAR(75), "
550 "`Target` CHAR(255) "
551 "PRIMARY KEY `Action`)" );
559 "CREATE TABLE `Dialog` ("
560 "`Dialog` CHAR(72) NOT NULL, "
561 "`HCentering` SHORT NOT NULL, "
562 "`VCentering` SHORT NOT NULL, "
563 "`Width` SHORT NOT NULL, "
564 "`Height` SHORT NOT NULL, "
565 "`Attributes` LONG, "
566 "`Title` CHAR(128) LOCALIZABLE, "
567 "`Control_First` CHAR(50) NOT NULL, "
568 "`Control_Default` CHAR(50), "
569 "`Control_Cancel` CHAR(50) "
570 "PRIMARY KEY `Dialog`)");
578 "CREATE TABLE `Control` ("
579 "`Dialog_` CHAR(72) NOT NULL, "
580 "`Control` CHAR(50) NOT NULL, "
581 "`Type` CHAR(20) NOT NULL, "
582 "`X` SHORT NOT NULL, "
583 "`Y` SHORT NOT NULL, "
584 "`Width` SHORT NOT NULL, "
585 "`Height` SHORT NOT NULL, "
586 "`Attributes` LONG, "
587 "`Property` CHAR(50), "
588 "`Text` CHAR(0) LOCALIZABLE, "
589 "`Control_Next` CHAR(50), "
590 "`Help` CHAR(255) LOCALIZABLE "
591 "PRIMARY KEY `Dialog_`, `Control`)");
599 "CREATE TABLE `ControlEvent` ("
600 "`Dialog_` CHAR(72) NOT NULL, "
601 "`Control_` CHAR(50) NOT NULL, "
602 "`Event` CHAR(50) NOT NULL, "
603 "`Argument` CHAR(255) NOT NULL, "
604 "`Condition` CHAR(255), "
606 "PRIMARY KEY `Dialog_`, `Control_`, `Event`, `Argument`, `Condition`)");
614 "CREATE TABLE `ActionText` ("
615 "`Action` CHAR(72) NOT NULL, "
616 "`Description` CHAR(64) LOCALIZABLE, "
617 "`Template` CHAR(128) LOCALIZABLE "
618 "PRIMARY KEY `Action`)");
626 "CREATE TABLE `Upgrade` ("
627 "`UpgradeCode` CHAR(38) NOT NULL, "
628 "`VersionMin` CHAR(20), "
629 "`VersionMax` CHAR(20), "
630 "`Language` CHAR(255), "
631 "`Attributes` SHORT, "
632 "`Remove` CHAR(255), "
633 "`ActionProperty` CHAR(72) NOT NULL "
634 "PRIMARY KEY `UpgradeCode`, `VersionMin`, `VersionMax`, `Language`)" );
653#define add_component_entry(hdb, values) add_entry(__FILE__, __LINE__, "Component", hdb, values, \
654 "INSERT INTO `Component` " \
655 "(`Component`, `ComponentId`, `Directory_`, " \
656 "`Attributes`, `Condition`, `KeyPath`) VALUES( %s )")
658#define add_directory_entry(hdb, values) add_entry(__FILE__, __LINE__, "Directory", hdb, values, \
659 "INSERT INTO `Directory` " \
660 "(`Directory`,`Directory_Parent`,`DefaultDir`) VALUES( %s )")
662#define add_feature_entry(hdb, values) add_entry(__FILE__, __LINE__, "Feature", hdb, values, \
663 "INSERT INTO `Feature` " \
664 "(`Feature`, `Feature_Parent`, `Title`, `Description`, " \
665 "`Display`, `Level`, `Directory_`, `Attributes`) VALUES( %s )")
667#define add_feature_components_entry(hdb, values) add_entry(__FILE__, __LINE__, "FeatureComponents", hdb, values, \
668 "INSERT INTO `FeatureComponents` " \
669 "(`Feature_`, `Component_`) VALUES( %s )")
671#define add_file_entry(hdb, values) add_entry(__FILE__, __LINE__, "File", hdb, values, \
672 "INSERT INTO `File` " \
673 "(`File`, `Component_`, `FileName`, `FileSize`, " \
674 "`Version`, `Language`, `Attributes`, `Sequence`) VALUES( %s )")
676#define add_appsearch_entry(hdb, values) add_entry(__FILE__, __LINE__, "AppSearch", hdb, values, \
677 "INSERT INTO `AppSearch` " \
678 "(`Property`, `Signature_`) VALUES( %s )")
680#define add_signature_entry(hdb, values) add_entry(__FILE__, __LINE__, "Signature", hdb, values, \
681 "INSERT INTO `Signature` " \
682 "(`Signature`, `FileName`, `MinVersion`, `MaxVersion`," \
683 " `MinSize`, `MaxSize`, `MinDate`, `MaxDate`, `Languages`) " \
686#define add_launchcondition_entry(hdb, values) add_entry(__FILE__, __LINE__, "LaunchCondition", hdb, values, \
687 "INSERT INTO `LaunchCondition` " \
688 "(`Condition`, `Description`) VALUES( %s )")
690#define add_property_entry(hdb, values) add_entry(__FILE__, __LINE__, "Property", hdb, values, \
691 "INSERT INTO `Property` (`Property`, `Value`) VALUES( %s )")
693#define update_ProductVersion_property(hdb, value) add_entry(__FILE__, __LINE__, "Property", hdb, value, \
694 "UPDATE `Property` SET `Value` = '%s' WHERE `Property` = 'ProductVersion'")
696#define update_ProductCode_property(hdb, value) add_entry(__FILE__, __LINE__, "Property", hdb, value, \
697 "UPDATE `Property` SET `Value` = '%s' WHERE `Property` = 'ProductCode'")
699#define add_install_execute_sequence_entry(hdb, values) add_entry(__FILE__, __LINE__, "InstallExecuteSequence", hdb, values, \
700 "INSERT INTO `InstallExecuteSequence` " \
701 "(`Action`, `Condition`, `Sequence`) VALUES( %s )")
703#define add_install_ui_sequence_entry(hdb, values) add_entry(__FILE__, __LINE__, "InstallUISequence", hdb, values, \
704 "INSERT INTO `InstallUISequence` " \
705 "(`Action`, `Condition`, `Sequence`) VALUES( %s )")
707#define add_media_entry(hdb, values) add_entry(__FILE__, __LINE__, "Media", hdb, values, \
708 "INSERT INTO `Media` " \
709 "(`DiskId`, `LastSequence`, `DiskPrompt`, " \
710 "`Cabinet`, `VolumeLabel`, `Source`) VALUES( %s )")
712#define add_ccpsearch_entry(hdb, values) add_entry(__FILE__, __LINE__, "CCPSearch", hdb, values, \
713 "INSERT INTO `CCPSearch` (`Signature_`) VALUES( %s )")
715#define add_drlocator_entry(hdb, values) add_entry(__FILE__, __LINE__, "DrLocator", hdb, values, \
716 "INSERT INTO `DrLocator` " \
717 "(`Signature_`, `Parent`, `Path`, `Depth`) VALUES( %s )")
719#define add_complocator_entry(hdb, values) add_entry(__FILE__, __LINE__, "CompLocator", hdb, values, \
720 "INSERT INTO `CompLocator` " \
721 "(`Signature_`, `ComponentId`, `Type`) VALUES( %s )")
723#define add_inilocator_entry(hdb, values) add_entry(__FILE__, __LINE__, "IniLocator", hdb, values, \
724 "INSERT INTO `IniLocator` " \
725 "(`Signature_`, `FileName`, `Section`, `Key`, `Field`, `Type`) " \
728#define add_custom_action_entry(hdb, values) add_entry(__FILE__, __LINE__, "CustomAction", hdb, values, \
729 "INSERT INTO `CustomAction` " \
730 "(`Action`, `Type`, `Source`, `Target`) VALUES( %s )")
732#define add_dialog_entry(hdb, values) add_entry(__FILE__, __LINE__, "Dialog", hdb, values, \
733 "INSERT INTO `Dialog` " \
734 "(`Dialog`, `HCentering`, `VCentering`, `Width`, `Height`, `Attributes`, `Control_First`) VALUES ( %s )")
736#define add_control_entry(hdb, values) add_entry(__FILE__, __LINE__, "Control", hdb, values, \
737 "INSERT INTO `Control` " \
738 "(`Dialog_`, `Control`, `Type`, `X`, `Y`, `Width`, `Height`, `Attributes`, `Text`) VALUES( %s )");
740#define add_controlevent_entry(hdb, values) add_entry(__FILE__, __LINE__, "ControlEvent", hdb, values, \
741 "INSERT INTO `ControlEvent` " \
742 "(`Dialog_`, `Control_`, `Event`, `Argument`, `Condition`, `Ordering`) VALUES( %s )");
744#define add_actiontext_entry(hdb, values) add_entry(__FILE__, __LINE__, "ActionText", hdb, values, \
745 "INSERT INTO `ActionText` " \
746 "(`Action`, `Description`, `Template`) VALUES( %s )");
748#define add_upgrade_entry(hdb, values) add_entry(__FILE__, __LINE__, "Upgrade", hdb, values, \
749 "INSERT INTO `Upgrade` " \
750 "(`UpgradeCode`, `VersionMin`, `VersionMax`, `Language`, `Attributes`, `Remove`, `ActionProperty`) VALUES( %s )");
755 const char insert[] =
756 "INSERT INTO `RegLocator` (`Signature_`, `Root`, `Key`, `Name`, `Type`) "
757 "VALUES( '%s', %u, '%s', '%s', %u )";
780 "Installation Database");
784 "Installation Database");
796 "{913B8D18-FBB6-4CAC-A239-C74C11E3FA74}");
835 "CREATE TABLE `Directory` ( "
836 "`Directory` CHAR(255) NOT NULL, "
837 "`Directory_Parent` CHAR(255), "
838 "`DefaultDir` CHAR(255) NOT NULL "
839 "PRIMARY KEY `Directory`)" );
851 sprintf(szPackage,
"#%lu", hdb);
887#define roundoffs(a, b, r) (((BYTE *)(b) - (BYTE *)(a) + ((r) - 1)) & ~((r) - 1))
888#define roundpos(a, b, r) (((BYTE *)(a)) + roundoffs(a, b, r))
951 skip(
"Not enough rights to perform tests\n");
973 skip(
"Not enough rights to perform tests\n");
1003 skip(
"Not enough rights to perform tests\n");
1064 ok(rec,
"MsiCreate record failed\n");
1085 ok ( hdb,
"failed to create package database\n" );
1090 add_component_entry( hdb,
"'RootComp', '{83e2694d-0864-4124-9323-6d37630912a1}', 'TARGETDIR', 8, '', 'RootFile'" );
1091 add_component_entry( hdb,
"'TestComp', '{A3FB59C8-C293-4F7E-B8C5-F0E1D8EEE4E5}', 'TestDir', 0, '', 'TestFile'" );
1104 add_file_entry( hdb,
"'RootFile', 'RootComp', 'rootfile.txt', 0, '', '1033', 8192, 1" );
1105 add_file_entry( hdb,
"'TestFile', 'TestComp', 'testfile.txt', 0, '', '1033', 8192, 1" );
1110 skip(
"Not enough rights to perform tests\n");
1145 sz =
sizeof tempdir - 1;
1158 "MsiSetTargetPath on file returned %d\n",
r );
1162 "MsiSetTargetPath on 'subdir' of file returned %d\n",
r );
1190 lstrcatA( tempdir,
"TestParent\\" );
1201 "Expected \"C:\\one\\two\\TestDir\\\", got \"%s\"\n",
buffer );
1206 "Expected C:\\one\\two\\TestDir\\testfile.txt, got %s\n",
buffer );
1252 skip(
"Not enough rights to perform tests\n");
1998 ok(!
r,
"'%s': got %u\n", prop,
r);
2022 skip(
"Not enough rights to perform tests\n");
2036 ok(!
r,
"got %u\n",
r);
2044 ok(!
r,
"got %u\n",
r);
2045 ok(sz == 0,
"got size %lu\n", sz);
2052 ok(sz == 0,
"got size %lu\n", sz);
2057 ok(!
r,
"got %u\n",
r);
2059 ok(sz == 0,
"got size %lu\n", sz);
2069 ok(!
r,
"got %u\n",
r);
2075 ok(!
r,
"got %u\n",
r);
2079 ok(!
r,
"got %u\n",
r);
2083 ok(!
r,
"got %u\n",
r);
2088 ok(!
r,
"got %u\n",
r);
2092 ok(!
r,
"got %u\n",
r);
2097 ok(!
r,
"got %u\n",
r);
2101 ok(!
r,
"got %u\n",
r);
2108 ok(!
r,
"got %u\n",
r);
2109 ok(sz == 3,
"got size %lu\n", sz);
2116 ok(sz == 3,
"got size %lu\n", sz);
2123 ok(sz == 3,
"got size %lu\n", sz);
2130 ok(sz == 3,
"got size %lu\n", sz);
2135 ok(!
r,
"got %u\n",
r);
2137 ok(sz == 3,
"got size %lu\n", sz);
2141 ok(!
r,
"got %u\n",
r);
2142 ok(sz == 3,
"got size %lu\n", sz);
2149 ok(sz == 3,
"got size %lu\n", sz);
2156 ok(sz == 3,
"got size %lu\n", sz);
2163 ok(sz == 3,
"got size %lu\n", sz);
2168 ok(!
r,
"got %u\n",
r);
2170 ok(sz == 3,
"got size %lu\n", sz);
2176 check_prop(hpkg,
"MetadataCompName",
"Photoshop.dll", 1, 0);
2210 ok(sz ==
len,
"wrong size %lu\n", sz);
2232 ok( hdb,
"failed to create package\n");
2237 skip(
"Not enough rights to perform tests\n");
2247 query =
"CREATE TABLE `_Property` ( "
2248 "`foo` INT NOT NULL, `bar` INT LOCALIZABLE PRIMARY KEY `foo`)";
2257 ok( hdb,
"failed to create package\n");
2259 query =
"CREATE TABLE `_Property` ( "
2260 "`foo` INT NOT NULL, `bar` INT LOCALIZABLE PRIMARY KEY `foo`)";
2264 query =
"ALTER `_Property` ADD `foo` INTEGER";
2268 query =
"ALTER TABLE `_Property` ADD `foo` INTEGER";
2272 query =
"ALTER TABLE `_Property` ADD `extra` INTEGER";
2276 sprintf(package,
"#%lu", hdb);
2286 ok (hdb,
"failed to create package database\n");
2307 ok(found,
"prop should be in the _Property table\n");
2311 query =
"SELECT * FROM `_Property` WHERE `Property` = 'dantes'";
2316 ok(found ==
FALSE,
"dantes should not be in the _Property table\n");
2328 ok(found ==
TRUE,
"dantes should be in the _Property table\n");
2338 ok( sz ==
sizeof(
"\0np") - 1,
"got %lu\n", sz );
2341 ok(found ==
TRUE,
"prop2 should be in the _Property table\n");
2430 skip(
"Not enough rights to perform tests\n");
2461 "Expected ERROR_INSTALL_PACKAGE_INVALID, got %d\n",
r);
2463 query =
"CREATE TABLE `Property` ( "
2464 "`Property` CHAR(72), `Value` CHAR(0) "
2465 "PRIMARY KEY `Property`)";
2469 query =
"CREATE TABLE `InstallExecuteSequence` ("
2470 "`Action` CHAR(72), `Condition` CHAR(0), `Sequence` INTEGER "
2471 "PRIMARY KEY `Action`)";
2479 "Expected ERROR_INSTALL_PACKAGE_INVALID, got %d\n",
r);
2498 "Expected ERROR_INSTALL_PACKAGE_INVALID, got %d\n",
r);
2503 "Expected ERROR_SUCCESS, got %d\n",
r);
2520 skip(
"Not enough rights to perform tests\n");
2530 ok(hrec,
"create record failed\n");
2546 ok( sz == 3,
"size wrong\n");
2554 ok( sz == 3,
"size wrong\n");
2564 ok( sz == 3,
"size wrong\n");
2572 ok( sz == 1,
"size wrong\n");
2581 ok( sz == 3,
"size wrong\n");
2591 ok( sz == 3,
"size wrong\n");
2613 ok ( hdb,
"failed to create package database\n");
2617 "'I am a really long directory'" );
2633 add_file_entry( hdb,
"'frontal_file', 'frontal', 'frontal.txt', 0, '', '1033', 8192, 1" );
2634 add_file_entry( hdb,
"'parietal_file', 'parietal', 'parietal.txt', 0, '', '1033', 8192, 1" );
2635 add_file_entry( hdb,
"'temporal_file', 'temporal', 'temporal.txt', 0, '', '1033', 8192, 1" );
2647 skip(
"Not enough rights to perform tests\n");
2674 ok( !
lstrcmpA(
buf,
"1: ringer " ),
"Expected '1: ringer ', got %s\n",
buf );
2680 ok( !
lstrcmpA(
buf,
"1: ringer " ),
"Expected '1: ringer ', got %s\n",
buf );
2695 ok( !
lstrcmpA(
buf,
"1: crazyval " ),
"Expected '1: crazyval ', got %s\n",
buf );
2786 ok( !
lstrcmpA(
buf,
"[Bracket Text]" ),
"Expected '[Bracket Text]', got %s\n",
buf);
2814 ok( !
memcmp(
buf,
"\0np",
sizeof(
"\0np") ),
"wrong value\n");
2815 ok(
size ==
sizeof(
"\0np") - 1,
"got %lu\n",
size );
2849 sprintf(
buf,
"%sI am a really long directory\\temporal.txt",
root );
2871 ok(
state == expected_state,
"%u: expected state %d got %d\n",
2874 ok(
action == expected_action,
"%u: expected action %d got %d\n",
2879 ok(
state == 0xdeadbee,
"%u: expected state 0xdeadbee got %d\n",
line,
state );
2897 ok(
state == expected_state,
"%u: expected state %d got %d\n",
2900 ok(
action == expected_action,
"%u: expected action %d got %d\n",
2905 ok(
state == 0xdeadbee,
"%u: expected state 0xdeadbee got %d\n",
2908 ok(
action == 0xdeadbee,
"%u: expected action 0xdeadbee got %d\n",
2915 static const char msifile2[] =
"winetest2-package.msi";
2916 static const char msifile3[] =
"winetest3-package.msi";
2917 static const char msifile4[] =
"winetest4-package.msi";
2919 static const WCHAR msifile3W[] =
L"winetest3-package.msi";
2920 static const WCHAR msifile4W[] =
L"winetest4-package.msi";
2922 DWORD cache_file_name_len;
2932 skip(
"process is limited\n");
2937 ok ( hdb,
"failed to create package database\n" );
2942 add_property_entry( hdb,
"'ProductCode', '{7262AC98-EEBD-4364-8CE3-D654F6A425B9}'" );
2947 add_property_entry( hdb,
"'UpgradeCode', '{3494EEEA-4221-4A66-802E-DED8916BC5C5}'" );
2973 add_component_entry( hdb,
"'alpha', '{467EC132-739D-4784-A37B-677AA43DBC94}', 'TARGETDIR', 0, '', 'alpha_file'" );
2976 add_component_entry( hdb,
"'beta', '{2C1F189C-24A6-4C34-B26B-994A6C026506}', 'TARGETDIR', 1, '', 'beta_file'" );
2979 add_component_entry( hdb,
"'gamma', '{C271E2A4-DE2E-4F70-86D1-6984AF7DE2CA}', 'TARGETDIR', 2, '', 'gamma_file'" );
2982 add_component_entry( hdb,
"'theta', '{4EB3129D-81A8-48D5-9801-75600FED3DD9}', 'TARGETDIR', 8, '', 'theta_file'" );
2988 add_component_entry( hdb,
"'delta', '{938FD4F2-C648-4259-A03C-7AA3B45643F3}', 'TARGETDIR', 0, '', 'delta_file'" );
2991 add_component_entry( hdb,
"'epsilon', '{D59713B6-C11D-47F2-A395-1E5321781190}', 'TARGETDIR', 1, '', 'epsilon_file'" );
2994 add_component_entry( hdb,
"'zeta', '{377D33AB-2FAA-42B9-A629-0C0DAE9B9C7A}', 'TARGETDIR', 2, '', 'zeta_file'" );
2997 add_component_entry( hdb,
"'iota', '{5D36F871-B5ED-4801-9E0F-C46B9E5C9669}', 'TARGETDIR', 8, '', 'iota_file'" );
3009 add_component_entry( hdb,
"'eta', '{DD89003F-0DD4-41B8-81C0-3411A7DA2695}', 'TARGETDIR', 1, '', 'eta_file'" );
3012 add_component_entry( hdb,
"'kappa', '{D6B93DC3-8DA5-4769-9888-42BFE156BB8B}', 'TARGETDIR', 1, '', 'kappa_file'" );
3018 add_component_entry( hdb,
"'lambda', '{6528C5E4-02A4-4636-A214-7A66A6C35B64}', 'TARGETDIR', 0, '', 'lambda_file'" );
3021 add_component_entry( hdb,
"'mu', '{97014BAB-6C56-4013-9A63-2BF913B42519}', 'TARGETDIR', 1, '', 'mu_file'" );
3024 add_component_entry( hdb,
"'nu', '{943DD0D8-5808-4954-8526-3B8493FEDDCD}', 'TARGETDIR', 2, '', 'nu_file'" );
3027 add_component_entry( hdb,
"'xi', '{D6CF9EF7-6FCF-4930-B34B-F938AEFF9BDB}', 'TARGETDIR', 8, '', 'xi_file'" );
3033 add_component_entry( hdb,
"'omicron', '{7B57521D-15DB-4141-9AA6-01D934A4433F}', 'TARGETDIR', 0, '', 'omicron_file'" );
3036 add_component_entry( hdb,
"'pi', '{FB85346B-378E-4492-8769-792305471C81}', 'TARGETDIR', 1, '', 'pi_file'" );
3039 add_component_entry( hdb,
"'rho', '{798F2047-7B0C-4783-8BB0-D703E554114B}', 'TARGETDIR', 2, '', 'rho_file'" );
3042 add_component_entry( hdb,
"'sigma', '{5CE9DDA8-B67B-4736-9D93-99D61C5B93E7}', 'TARGETDIR', 8, '', 'sigma_file'" );
3047 add_component_entry( hdb,
"'tau', '{07DEB510-677C-4A6F-A0A6-7CD8EFEA77ED}', 'TARGETDIR', 1, '', 'tau_file'" );
3052 add_component_entry( hdb,
"'phi', '{9F0594C5-35AD-43EA-94DD-8DF73FAA664D}', 'TARGETDIR', 1, '', 'phi_file'" );
3057 add_component_entry( hdb,
"'chi', '{E6B539AB-5DA9-4236-A2D2-E341A50B4C38}', 'TARGETDIR', 1, '', 'chi_file'" );
3062 add_component_entry( hdb,
"'psi', '{A06B23B5-746B-427A-8A6E-FD6AC8F46A95}', 'TARGETDIR', 1, '', 'psi_file'" );
3067 add_component_entry( hdb,
"'upsilon', '{557e0c04-ceba-4c58-86a9-4a73352e8cf6}', 'TARGETDIR', 1, '', 'upsilon_file'" );
3100 add_file_entry( hdb,
"'alpha_file', 'alpha', 'alpha.txt', 100, '', '1033', 8192, 1" );
3101 add_file_entry( hdb,
"'beta_file', 'beta', 'beta.txt', 0, '', '1033', 8192, 1" );
3102 add_file_entry( hdb,
"'gamma_file', 'gamma', 'gamma.txt', 0, '', '1033', 8192, 1" );
3103 add_file_entry( hdb,
"'theta_file', 'theta', 'theta.txt', 0, '', '1033', 8192, 1" );
3104 add_file_entry( hdb,
"'delta_file', 'delta', 'delta.txt', 0, '', '1033', 8192, 1" );
3105 add_file_entry( hdb,
"'epsilon_file', 'epsilon', 'epsilon.txt', 0, '', '1033', 8192, 1" );
3106 add_file_entry( hdb,
"'zeta_file', 'zeta', 'zeta.txt', 0, '', '1033', 8192, 1" );
3107 add_file_entry( hdb,
"'iota_file', 'iota', 'iota.txt', 0, '', '1033', 8192, 1" );
3110 add_file_entry( hdb,
"'eta_file', 'eta', 'eta.txt', 0, '', '1033', 16384, 1" );
3112 add_file_entry( hdb,
"'kappa_file', 'kappa', 'kappa.txt', 0, '', '1033', 8192, 1" );
3113 add_file_entry( hdb,
"'lambda_file', 'lambda', 'lambda.txt', 100, '', '1033', 8192, 1" );
3114 add_file_entry( hdb,
"'mu_file', 'mu', 'mu.txt', 100, '', '1033', 8192, 1" );
3115 add_file_entry( hdb,
"'nu_file', 'nu', 'nu.txt', 100, '', '1033', 8192, 1" );
3116 add_file_entry( hdb,
"'xi_file', 'xi', 'xi.txt', 100, '', '1033', 8192, 1" );
3117 add_file_entry( hdb,
"'omicron_file', 'omicron', 'omicron.txt', 100, '', '1033', 8192, 1" );
3118 add_file_entry( hdb,
"'pi_file', 'pi', 'pi.txt', 100, '', '1033', 8192, 1" );
3119 add_file_entry( hdb,
"'rho_file', 'rho', 'rho.txt', 100, '', '1033', 8192, 1" );
3120 add_file_entry( hdb,
"'sigma_file', 'sigma', 'sigma.txt', 100, '', '1033', 8192, 1" );
3121 add_file_entry( hdb,
"'tau_file', 'tau', 'tau.txt', 100, '', '1033', 8192, 1" );
3122 add_file_entry( hdb,
"'phi_file', 'phi', 'phi.txt', 100, '', '1033', 8192, 1" );
3123 add_file_entry( hdb,
"'chi_file', 'chi', 'chi.txt', 100, '', '1033', 8192, 1" );
3124 add_file_entry( hdb,
"'psi_file', 'psi', 'psi.txt', 100, '', '1033', 8192, 1" );
3125 add_file_entry( hdb,
"'upsilon_file', 'upsilon', 'upsilon.txt', 0, '', '1033', 16384, 1" );
3140 skip(
"Not enough rights to perform tests\n");
3324 add_property_entry( hdb,
"'ADDLOCAL', 'one,two,three,four,five,six,seven,eight,nine,ten,twelve'");
3398 add_property_entry( hdb,
"'ADDSOURCE', 'one,two,three,four,five,six,seven,eight,nine,ten'");
3474 add_property_entry( hdb,
"'ADDSOURCE', 'one,two,three,four,five,six,seven,eight,nine,ten'");
3553 cache_file_name_len =
sizeof(msi_cache_file);
3570 "'VBFeatureRequest', 38, NULL, 'Session.FeatureRequestState(\"three\") = 3'" );
3680 add_upgrade_entry( hdb,
"'{3494EEEA-4221-4A66-802E-DED8916BC5C5}', NULL, '1.1.3', NULL, 0, NULL, 'OLDERVERSIONBEINGUPGRADED'");
3719 ok ( hdb,
"failed to create package database\n" );
3745 add_file_entry( hdb,
"'hydrogen_file', 'hydrogen', 'hydrogen.txt', 0, '', '1033', 8192, 1" );
3746 add_file_entry( hdb,
"'helium_file', 'helium', 'helium.txt', 0, '', '1033', 8192, 1" );
3747 add_file_entry( hdb,
"'lithium_file', 'lithium', 'lithium.txt', 0, '', '1033', 8192, 1" );
3748 add_file_entry( hdb,
"'beryllium_file', 'beryllium', 'beryllium.txt', 0, '', '1033', 16384, 1" );
3749 add_file_entry( hdb,
"'boron_file', 'boron', 'boron.txt', 0, '', '1033', 16384, 1" );
3750 add_file_entry( hdb,
"'carbon_file', 'carbon', 'carbon.txt', 0, '', '1033', 16384, 1" );
3751 add_file_entry( hdb,
"'oxygen_file', 'oxygen', 'oxygen.txt', 0, '', '1033', 16384, 1" );
3758 skip(
"Not enough rights to perform tests\n");
3788 installed =
action = 0xdeadbeef;
3803 installed =
action = 0xdeadbeef;
3824 installed =
action = 0xdeadbeef;
3833 installed =
action = 0xdeadbeef;
3842 installed =
action = 0xdeadbeef;
3848 ok(
DeleteFileA(
"hydrogen.txt"),
"Expected hydrogen.txt to exist\n");
3849 ok(
DeleteFileA(
"lithium.txt"),
"Expected lithium.txt to exist\n");
3850 ok(
DeleteFileA(
"beryllium.txt"),
"Expected beryllium.txt to exist\n");
3851 ok(
DeleteFileA(
"carbon.txt"),
"Expected carbon.txt to exist\n");
3852 ok(
DeleteFileA(
"helium.txt"),
"Expected helium.txt to exist\n");
3853 ok(
DeleteFileA(
"boron.txt"),
"Expected boron.txt to exist\n");
3854 ok(
DeleteFileA(
"oxygen.txt"),
"Expected oxygen.txt to exist\n");
3868 const char reg_expand_value[] =
"%systemroot%\\system32\\notepad.exe";
3871 ok ( hdb,
"failed to create package database\n" );
3894 skip(
"insufficient rights\n");
3903 sizeof(
"c:\\windows\\system32\\notepad.exe"));
3912 sizeof(
"c:\\windows\\system32\\notepad.exe"));
3923 add_signature_entry( hdb,
"'NewSignature2', 'NOTEPAD.EXE|notepad.exe', '', '', '', '', '', '', ''" );
3924 add_signature_entry( hdb,
"'NewSignature3', 'NOTEPAD.EXE|notepad.exe', '', '', '', '', '', '', ''" );
3925 add_signature_entry( hdb,
"'NewSignature4', 'NOTEPAD.EXE|notepad.exe', '', '', '', '', '', '', ''" );
3926 add_signature_entry( hdb,
"'NewSignature5', 'NOTEPAD.EXE|notepad.exe', '', '', '', '', '', '', ''" );
3931 skip(
"Not enough rights to perform tests\n");
3945 size =
sizeof(prop);
3948 ok(
lstrlenA(prop) != 0,
"Expected non-zero length\n");
3950 size =
sizeof(prop);
3954 size =
sizeof(prop);
3957 ok(
lstrlenA(prop) != 0,
"Expected non-zero length\n");
3959 size =
sizeof(prop);
3962 ok(
lstrlenA(prop) != 0,
"Expected non-zero length\n");
3964 size =
sizeof(prop);
3967 ok(
lstrlenA(prop) != 0,
"Expected non-zero length\n");
3990 skip(
"process is limited\n");
3997 "{A8AE6692-96BA-4198-8399-145D7D1D0D0E}",
NULL,
FALSE);
4001 "{1D2CE6F3-E81C-4949-AB81-78D7DAD2AF2E}", usersid,
FALSE);
4005 "{19E0B999-85F5-4973-A61B-DBE4D66ECB1D}", usersid,
FALSE);
4009 "{F0CCA976-27A3-4808-9DDD-1A6FD50A0D5A}",
NULL,
TRUE);
4013 "{C0ECD96F-7898-4410-9667-194BD8C1B648}",
NULL,
TRUE);
4017 "{DB20F535-9C26-4127-9C2B-CC45A8B51DA1}",
NULL,
FALSE);
4021 "{91B7359B-07F2-4221-AA8D-DE102BB87A5F}",
NULL,
FALSE);
4025 "{4A2E1B5B-4034-4177-833B-8CC35F1B3EF1}",
NULL,
FALSE);
4029 "{A204DF48-7346-4635-BA2E-66247DBAC9DF}",
NULL,
FALSE);
4033 "{EC30CE73-4CF9-4908-BABD-1ED82E1515FD}",
NULL,
FALSE);
4036 ok(hdb,
"Expected a valid database handle\n");
4096 add_signature_entry(hdb,
"'NewSignature10', 'FileName8.dll', '1.1.1.1', '2.1.1.1', '', '', '', '', ''");
4097 add_signature_entry(hdb,
"'NewSignature11', 'FileName9.dll', '1.1.1.1', '2.1.1.1', '', '', '', '', ''");
4098 add_signature_entry(hdb,
"'NewSignature12', 'ignored', '1.1.1.1', '2.1.1.1', '', '', '', '', ''");
4103 skip(
"Not enough rights to perform tests\n");
4141 ok(!
lstrcmpA(prop,
""),
"Expected \"\", got \"%s\"\n", prop);
4164 ok(!
lstrcmpA(prop,
"october"),
"Expected \"october\", got \"%s\"\n", prop);
4169 ok(!
lstrcmpA(prop,
""),
"Expected \"\", got \"%s\"\n", prop);
4180 ok(!
lstrcmpA(prop,
""),
"Expected \"\", got \"%s\"\n", prop);
4247 skip(
"Not enough rights to perform tests\n");
4253 (
const BYTE *)
"regszdata", 10);
4260 (
const BYTE *)
"regszdata", 10);
4270 (
const BYTE *)
"regszdata", 10);
4281 (
const BYTE *)
"regszdata", 10);
4295 (
const BYTE *)
"%PATH%", 7);
4299 (
const BYTE *)
"my%NOVAR%", 10);
4303 (
const BYTE *)
"one\0two\0", 9);
4313 (
const BYTE *)
"#regszdata", 11);
4336 (
const BYTE *)
"", 1);
4369 ok(hdb,
"Expected a valid database handle\n");
4527 add_signature_entry(hdb,
"'NewSignature21', 'FileName3.dll', '1.1.1.1', '2.1.1.1', '', '', '', '', ''");
4528 add_signature_entry(hdb,
"'NewSignature22', 'FileName4.dll', '1.1.1.1', '2.1.1.1', '', '', '', '', ''");
4529 add_signature_entry(hdb,
"'NewSignature23', 'ignored', '1.1.1.1', '2.1.1.1', '', '', '', '', ''");
4534 sprintf(
path,
"'NewSignature26', '%s', '', '', '', '', '', '', ''",
ptr);
4553 "Expected \"regszdata\", got \"%s\"\n", prop);
4558 ok(!
lstrcmpA(prop,
"#42"),
"Expected \"#42\", got \"%s\"\n", prop);
4563 ok(!
lstrcmpA(prop,
"#-42"),
"Expected \"#-42\", got \"%s\"\n", prop);
4582 "Expected \"%s\", got \"%s\"\n", pathvar, pathdata);
4592 "my%NOVAR%"),
"Expected \"my%%NOVAR%%\", got \"%s\"\n", prop);
4599 ok(!
memcmp(prop,
"\0one\0two\0\0", 10),
4600 "Expected \"\\0one\\0two\\0\\0\"\n");
4613 "Expected \"##regszdata\", got \"%s\"\n", prop);
4624 ok(!
lstrcmpA(prop,
""),
"Expected \"\", got \"%s\"\n", prop);
4635 ok(!
lstrcmpA(prop,
""),
"Expected \"\", got \"%s\"\n", prop);
4646 ok(!
lstrcmpA(prop,
""),
"Expected \"\", got \"%s\"\n", prop);
4652 "Expected \"regszdata\", got \"%s\"\n", prop);
4658 "Expected \"regszdata\", got \"%s\"\n", prop);
4666 "Expected \"regszdata\", got \"%s\"\n", prop);
4673 "Expected \"defvalue\", got \"%s\"\n", prop);
4678 ok(!
lstrcmpA(prop,
""),
"Expected \"\", got \"%s\"\n", prop);
4683 ok(!
lstrcmpA(prop,
""),
"Expected \"\", got \"%s\"\n", prop);
4696 ok(!
lstrcmpA(prop,
""),
"Expected \"\", got \"%s\"\n", prop);
4727 ok(!
lstrcmpA(prop,
""),
"Expected \"\", got \"%s\"\n", prop);
4732 ok(!
lstrcmpA(prop,
""),
"Expected \"\", got \"%s\"\n", prop);
4737 ok(!
lstrcmpA(prop,
""),
"Expected \"\", got \"%s\"\n", prop);
4750 ok(!
lstrcmpA(prop,
""),
"Expected \"\", got \"%s\"\n", prop);
4848 ok(hdb,
"Expected a valid database handle\n");
4905 add_signature_entry(hdb,
"'NewSignature10', 'FileName2.dll', '1.1.1.1', '2.1.1.1', '', '', '', '', ''");
4906 add_signature_entry(hdb,
"'NewSignature11', 'FileName3.dll', '1.1.1.1', '2.1.1.1', '', '', '', '', ''");
4907 add_signature_entry(hdb,
"'NewSignature12', 'ignored', '1.1.1.1', '2.1.1.1', '', '', '', '', ''");
4912 skip(
"Not enough rights to perform tests\n");
4932 ok(!
lstrcmpA(prop,
"keydata"),
"Expected \"keydata\", got \"%s\"\n", prop);
4937 ok(!
lstrcmpA(prop,
"field2"),
"Expected \"field2\", got \"%s\"\n", prop);
4943 "Expected \"keydata,field2\", got \"%s\"\n", prop);
4954 ok(!
lstrcmpA(prop,
""),
"Expected \"\", got \"%s\"\n", prop);
4981 ok(!
lstrcmpA(prop,
""),
"Expected \"\", got \"%s\"\n", prop);
4994 ok(!
lstrcmpA(prop,
""),
"Expected \"\", got \"%s\"\n", prop);
5028 for (
i = 0;
i < 26; absolute[0] =
'\0',
i++)
5030 if (!(drives & (1 <<
i)))
5033 absolute[0] =
'A' +
i;
5042 if (absolute[3 +
size - 1] !=
'\\')
5075 ok(hdb,
"Expected a valid database handle\n");
5121 sprintf(
path,
"'NewSignature7', 'NewSignature1', 'one\\two\\three', 1");
5146 sprintf(
path,
"'NewSignature13', 'NewSignature12', '', 0");
5155 add_signature_entry(hdb,
"'NewSignature8', 'FileName3.dll', '1.1.1.1', '2.1.1.1', '', '', '', '', ''");
5156 add_signature_entry(hdb,
"'NewSignature9', 'FileName4.dll', '1.1.1.1', '2.1.1.1', '', '', '', '', ''");
5157 add_signature_entry(hdb,
"'NewSignature10', 'necessary', '1.1.1.1', '2.1.1.1', '', '', '', '', ''");
5162 skip(
"Not enough rights to perform tests\n");
5193 ok(!
lstrcmpA(prop,
""),
"Expected \"\", got \"%s\"\n", prop);
5204 ok(!
lstrcmpA(prop,
""),
"Expected \"\", got \"%s\"\n", prop);
5223 ok(!
lstrcmpA(prop,
""),
"Expected \"\", got \"%s\"\n", prop);
5228 ok(!
lstrcmpA(prop,
""),
"Expected \"\", got \"%s\"\n", prop);
5241 ok(!prop[0],
"Expected \"\", got \"%s\"\n", prop);
5265 ok ( hdb,
"failed to create package database\n" );
5349 add_file_entry( hdb,
"'leo_file', 'leo', 'leo.txt', 100, '', '1033', 8192, 1" );
5350 add_file_entry( hdb,
"'virgo_file', 'virgo', 'virgo.txt', 0, '', '1033', 8192, 1" );
5351 add_file_entry( hdb,
"'libra_file', 'libra', 'libra.txt', 0, '', '1033', 8192, 1" );
5352 add_file_entry( hdb,
"'cassiopeia_file', 'cassiopeia', 'cassiopeia.txt', 0, '', '1033', 8192, 1" );
5353 add_file_entry( hdb,
"'cepheus_file', 'cepheus', 'cepheus.txt', 0, '', '1033', 8192, 1" );
5354 add_file_entry( hdb,
"'andromeda_file', 'andromeda', 'andromeda.txt', 0, '', '1033', 8192, 1" );
5355 add_file_entry( hdb,
"'canis_file', 'canis', 'canis.txt', 0, '', '1033', 8192, 1" );
5356 add_file_entry( hdb,
"'monoceros_file', 'monoceros', 'monoceros.txt', 0, '', '1033', 8192, 1" );
5357 add_file_entry( hdb,
"'lepus_file', 'lepus', 'lepus.txt', 0, '', '1033', 8192, 1" );
5358 add_file_entry( hdb,
"'delphinus_file', 'delphinus', 'delphinus.txt', 0, '', '1033', 8192, 1" );
5359 add_file_entry( hdb,
"'hydrus_file', 'hydrus', 'hydrus.txt', 0, '', '1033', 8192, 1" );
5364 skip(
"Not enough rights to perform tests\n");
5414 ok(!
r,
"got %d\n",
r);
5417 ok(!
r,
"got %d\n",
r);
5467 ok( hdb,
"failed to create database\n");
5472 skip(
"Not enough rights to perform tests\n");
5550 trace(
"VersionDatabase = %s\n",
buf);
5626 trace(
"MsiTrueAdminUser = %s\n",
buf);
5632 trace(
"MsiRunningElevated = %s\n",
buf);
5699 check_prop(hpkg,
"System64Folder",
"", 0, 0);
5700 check_prop(hpkg,
"ProgramFiles64Dir",
"", 0, 0);
5701 check_prop(hpkg,
"CommonFiles64Dir",
"", 0, 0);
5722 ok( hdb,
"failed to create package database\n" );
5734 skip(
"Not enough rights to perform tests\n");
5770 ok(hdb,
"failed to create package database\n");
5787 skip(
"Not enough rights to perform tests\n");
5802 ok(!
lstrcmpA(prop,
"1"),
"Expected 1, got %s\n", prop);
5817 ok(hdb,
"failed to create package database\n");
5868 skip(
"Not enough rights to perform tests\n");
5894 "{E3619EED-305A-418C-B9C7-F7D7377F0934}",
NULL,
FALSE);
5896 "{D56B688D-542F-42Ef-90FD-B6DA76EE8119}",
NULL,
FALSE);
5898 "{A19E16C5-C75D-4699-8111-C4338C40C3CB}",
NULL,
FALSE);
5900 "{17762FA1-A7AE-4CC6-8827-62873C35361D}",
NULL,
FALSE);
5902 "{8E0DA02E-F6A7-4A8F-B25D-6F564C492308}",
NULL,
FALSE);
5904 "{243C22B1-8C51-4151-B9D1-1AE5265E079E}",
NULL,
FALSE);
5906 "{8B1034B7-BD5E-41ac-B52C-0105D3DFD74D}",
NULL,
FALSE);
5908 "{0B499649-197A-48EF-93D2-AF1C17ED6E90}",
NULL,
FALSE);
5923 "Expected %s or empty string, got %s\n",
expected, prop);
5928 ok(!
lstrcmpA(prop,
""),
"Expected , got %s\n", prop);
5933 ok(!
lstrcmpA(prop,
""),
"Expected , got %s\n", prop);
5938 ok(!
lstrcmpA(prop,
""),
"Expected , got %s\n", prop);
5947 "Expected %s or empty string, got %s\n",
expected, prop);
5952 ok(!
lstrcmpA(prop,
""),
"Expected , got %s\n", prop);
5957 ok(!
lstrcmpA(prop,
""),
"Expected , got %s\n", prop);
5962 ok(!
lstrcmpA(prop,
""),
"Expected , got %s\n", prop);
5967 ok(!
lstrcmpA(prop,
""),
"Expected , got %s\n", prop);
5972 ok(!
lstrcmpA(prop,
""),
"Expected , got %s\n", prop);
5977 ok(!
lstrcmpA(prop,
""),
"Expected , got %s\n", prop);
5982 ok(!
lstrcmpA(prop,
""),
"Expected , got %s\n", prop);
5991 "Expected %s or empty string, got %s\n",
expected, prop);
6001 "Expected %s or empty string, got %s\n",
expected, prop);
6006 ok(!
lstrcmpA(prop,
""),
"Expected , got %s\n", prop);
6011 ok(!
lstrcmpA(prop,
""),
"Expected , got %s\n", prop);
6090 ok( hdb,
"failed to create database\n");
6104 skip(
"Not enough rights to perform tests\n");
6117 "Expected ERROR_INVALID_HANDLE, got %d\n",
r);
6119 "Expected path to be unchanged, got \"%s\"\n",
path);
6127 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
6129 "Expected path to be unchanged, got \"%s\"\n",
path);
6138 "Expected path to be unchanged, got \"%s\"\n",
path);
6147 "Expected path to be unchanged, got \"%s\"\n",
path);
6155 ok(
size == 0,
"Expected 0, got %lu\n",
size);
6162 ok(
size == 0,
"Expected 0, got %lu\n",
size);
6170 "Expected path to be unchanged, got \"%s\"\n",
path);
6179 "Expected path to be unchanged, got \"%s\"\n",
path);
6188 ok(
size == 0,
"Expected 0, got %lu\n",
size);
6195 ok(
size == 0,
"Expected 0, got %lu\n",
size);
6203 "Expected path to be unchanged, got \"%s\"\n",
path);
6212 "Expected path to be unchanged, got \"%s\"\n",
path);
6242 "Expected path to be unchanged, got \"%s\"\n",
path);
6301 "Expected path to be unchanged, got \"%s\"\n",
path);
6360 "Expected path to be unchanged, got \"%s\"\n",
path);
6419 "Expected path to be unchanged, got \"%s\"\n",
path);
6459 "Expected path to be unchanged, got \"%s\"\n",
path);
6472 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
6474 "Expected path to be unchanged, got \"%s\"\n",
path);
6482 "Expected path to be unchanged, got \"%s\"\n",
path);
6491 "Expected path with no backslash, got \"%s\"\n",
path);
6524 "Expected path to be unchanged, got \"%s\"\n",
path);
6545 "Expected path to be unchanged, got \"%s\"\n",
path);
6554 "Expected path to be unchanged, got \"%s\"\n",
path);
6563 "Expected path to be unchanged, got \"%s\"\n",
path);
6572 ok(
size == 0,
"Expected 0, got %lu\n",
size);
6579 ok(
size == 0,
"Expected 0, got %lu\n",
size);
6587 "Expected path to be unchanged, got \"%s\"\n",
path);
6596 "Expected path to be unchanged, got \"%s\"\n",
path);
6866 ok( hdb,
"failed to create database\n");
6897 skip(
"Not enough rights to perform tests\n");
7199 ok( hdb,
"failed to create database\n");
7203 sprintf(package,
"#%lu", hdb);
7207 skip(
"Not enough rights to perform tests\n");
7220 ok(
size == 0,
"Expected 0, got %lu\n",
size);
7228 ok(
size == 0,
"Expected 0, got %lu\n",
size);
7241 ok(
size == 0,
"Expected 0, got %lu\n",
size);
7249 ok(
size == 0,
"Expected 0, got %lu\n",
size);
7260 ok(
size == 0,
"Expected 0, got %lu\n",
size);
7268 ok(
size == 0,
"Expected 0, got %lu\n",
size);
7279 ok(
size == 0,
"Expected 0, got %lu\n",
size);
7287 ok(
size == 0,
"Expected 0, got %lu\n",
size);
7331 ok(
size == 0,
"Expected 0, got %lu\n",
size);
7336 sprintf(package,
"#%lu", hdb);
7350 ok(
size == 0,
"Expected 0, got %lu\n",
size);
7358 "Expected path to be unchanged, got \"%s\"\n",
path);
7369 ok(
size == 0,
"Expected 0, got %lu\n",
size);
7380 ok(
size == 0,
"Expected 0, got %lu\n",
size);
7388 "Expected path to be unchanged, got \"%s\"\n",
path);
7399 ok(
size == 0,
"Expected 0, got %lu\n",
size);
7413 ok(
size == 0,
"Expected 0, got %lu\n",
size);
7445 "Expected path to be unchanged, got \"%s\"\n",
path);
7473 "Expected path to be unchanged, got \"%s\"\n",
path);
7501 "Expected path to be unchanged, got \"%s\"\n",
path);
7529 "Expected path to be unchanged, got \"%s\"\n",
path);
7613 for (
i = 0;
i < 4;
i++)
7620 for (
j = 0;
j < 4;
j++)
7625 if (
j == 0) share = 0;
7636 "(%lu, handle, %d): Expected %d, got %d\n",
7649#define test_file_access(file, ares) _test_file_access(file, ares, __LINE__)
7687 MSIHANDLE hpkg = 0, hdb = 0, hsuminfo = 0;
7697 skip(
"Not enough rights to perform tests\n");
7708 ok(hdb != 0,
"Expected a valid database handle\n");
7735 "Expected \"_Property\", got \"%s\"\n",
buffer);
7752 "Expected \"_Property\", got \"%s\"\n",
buffer);
7763 "Expected MSICONDITION_FALSE, got %d\n",
condition);
7792 "Expected MSICONDITION_FALSE, got %d\n",
condition);
7821 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
7828 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
7835 "Expected ERROR_INSTALL_PACKAGE_INVALID, got %d\n",
r);
7888 "CREATE TABLE `Directory` ( "
7889 "`Directory` CHAR(255) NOT NULL, "
7890 "`Directory_Parent` CHAR(255), "
7891 "`DefaultDir` CHAR(255) NOT NULL "
7892 "PRIMARY KEY `Directory`)");
7905 lstrcpyA(keypath,
"Software\\Classes\\Installer\\Products\\");
7911 skip(
"Not enough rights to perform tests\n");
7917 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\");
7918 lstrcatA(keypath,
"Installer\\UserData\\S-1-5-18\\Products\\");
7924 skip(
"Not enough rights to perform tests\n");
7945 win_skip(
"broken result, skipping tests\n");
7949 ok(hprod != 0 && hprod != 0xdeadbeef,
"Expected a valid product handle\n");
7956 "Expected ERROR_INVALID_HANDLE, got %d\n",
r);
7958 "Expected val to be unchanged, got \"%s\"\n",
val);
7965 "Expected ERROR_INVALID_HANDLE, got %d\n",
r);
7967 "Expected val to be unchanged, got %s\n",
wine_dbgstr_w(valW));
7975 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
7977 "Expected val to be unchanged, got \"%s\"\n",
val);
7984 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
7986 "Expected val to be unchanged, got %s\n",
wine_dbgstr_w(valW));
7995 ok(
size == 0,
"Expected 0, got %lu\n",
size);
8002 ok(
size == 0,
"Expected 0, got %lu\n",
size);
8010 "Expected \"%s\", got \"%s\"\n", prodcode,
val);
8040 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
8042 "Expected val to be unchanged, got \"%s\"\n",
val);
8049 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
8051 "Expected val to be unchanged, got %s\n",
wine_dbgstr_w(valW));
8061 "Expected first 3 chars of \"%s\", got \"%s\"\n", prodcode,
val);
8080 "Expected first 37 chars of \"%s\", got \"%s\"\n", prodcode,
val);
8099 "Expected \"%s\", got \"%s\"\n", prodcode,
val);
8118 ok(
size == 0,
"Expected 0, got %lu\n",
size);
8125 ok(
size == 0,
"Expected 0, got %lu\n",
size);
8136 ok(
size == 0,
"Expected 0, got %lu\n",
size);
8143 ok(
size == 0,
"Expected 0, got %lu\n",
size);
8154 "Expected \"%s\", got \"%s\"\n", prodcode,
val);
8190 skip(
"Not enough rights to perform tests\n");
8199 "Expected ERROR_INVALID_HANDLE, got %d\n",
r);
8204 "Expected ERROR_INVALID_HANDLE, got %d\n",
r);
8209 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
8214 "Expected ERROR_INVALID_PARAMETER, got %d\n",
r);
8219 "Expected ERROR_FUNCTION_FAILED, got %d\n",
r);
8234 ok(
size == 3,
"Expected 3, got %lu\n",
size);
8245 ok(
size == 4,
"Expected 4, got %lu\n",
size);
8248 ok(hdb != 0,
"Expected a valid database handle\n");
8251 query =
"SELECT * FROM `_Property` WHERE `Property` = 'Prop'";
8254 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
8257 query =
"SELECT * FROM `Property` WHERE `Property` = 'Prop'";
8260 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
8273 ok(
size == 0,
"Expected 0, got %lu\n",
size);
8288 ok(
size == 0,
"Expected 0, got %lu\n",
size);
8352 char package[12],
drive[3];
8358 ok( hdb,
"failed to create database\n" );
8361 add_property_entry( hdb,
"'ProductCode', '{379B1C47-40C1-42FA-A9BB-BEBB6F1B0172}'" );
8369 add_file_entry( hdb,
"'a.txt', 'one', 'a.txt', 2048000000, '', '', 8192, 1" );
8370 add_file_entry( hdb,
"'b.txt', 'one', 'b.txt', 2048000000, '', '', 8192, 1" );
8371 add_file_entry( hdb,
"'c.txt', 'one', 'c.txt', 2048000000, '', '', 8192, 1" );
8372 add_file_entry( hdb,
"'d.txt', 'one', 'd.txt', 4097, '', '', 8192, 1" );
8373 add_file_entry( hdb,
"'e.txt', 'one', 'e.txt', 1, '', '', 8192, 1" );
8376 add_component_entry( hdb,
"'one', '{B2F86B9D-8447-4BC5-8883-750C45AA31CA}', 'TARGETDIR', 0, '', 'a.txt'" );
8377 add_component_entry( hdb,
"'two', '{62A09F6E-0B74-4829-BDB7-CAB66F42CCE8}', 'TARGETDIR', 0, '', ''" );
8396 sprintf( package,
"#%lu", hdb );
8400 skip(
"Not enough rights to perform tests\n");
8472 ok(
len == 2,
"expected len == 2, got %lu\n",
len );
8477 ok(
len == 2,
"expected len == 2, got %lu\n",
len );
8482 ok(
len == 2,
"expected len == 2, got %lu\n",
len );
8499 cost =
temp = 0xdead;
8502 ok(
len == 2,
"expected len == 2, got %lu\n",
len );
8503 ok(
drive[0],
"expected a drive\n" );
8504 ok( cost == 12000024,
"got %d\n", cost );
8505 ok( !
temp,
"expected temp == 0, got %d\n",
temp );
8509 cost =
temp = 0xdead;
8512 ok(
len == 2,
"expected len == 2, got %lu\n",
len );
8513 ok(
drive[0],
"expected a drive\n" );
8514 ok( !cost,
"expected cost == 0, got %d\n", cost );
8515 ok( !
temp,
"expected temp == 0, got %d\n",
temp );
8519 cost =
temp = 0xdead;
8522 ok(
len == 2,
"expected len == 2, got %lu\n",
len );
8523 ok(
drive[0],
"expected a drive\n" );
8524 ok( !cost,
"expected cost == 0, got %d\n", cost );
8540 ok( cost == 0xdead,
"got %d\n", cost );
8547 ok( !
r,
"got %u\n",
r);
8548 ok( cost == 12000024,
"got %d\n", cost );
8560 char buf[32], package[12];
8564 ok( hdb,
"failed to create database\n" );
8568 sprintf( package,
"#%lu", hdb );
8572 skip(
"Not enough rights to perform tests\n");
8619 ok(
r == 1,
"expected 1, got %u\n",
r);
8621 ok(
r == 12345,
"expected 12345, got %u\n",
r);
8640 skip(
"Not enough rights to perform tests\n");
8647 ok(hrecord,
"Expected a valid record\n");
8655 ok(
r == 0,
"expected 0, got %u\n",
r);
8665 ok(
r == 0,
"expected 0, got %u\n",
r);
8673 ok(
r == 0,
"expected 0, got %u\n",
r);
8680 ok(
r == 1,
"expected 1, got %u\n",
r);
8690 ok(
r == 0,
"expected 0, got %u\n",
r);
8752 ok_(
file,
line) (
FALSE,
"%s: in msg 0x%08x expecting field count %d got %d\n",
8762 ok_(
file,
line) (
FALSE,
"%s: in msg 0x%08x field %d: expected \"%s\", got \"%s\"\n",
8778 ok_(
file,
line) (
FALSE,
"%s: the msg 0x%08x was expected, but got msg 0x%08x instead\n",
8791 ok_(
file,
line) (
FALSE,
"%s: the msg sequence is not complete: expected %08x - actual %08x\n",
8796 if(
todo && !failcount)
8806#define ok_sequence(exp, contx, todo) \
8807 ok_sequence_((exp), (contx), (todo), __FILE__, __LINE__)
8841 {
INSTALLMESSAGE_COMMONDATA, 3, {
"",
"0",
"1033",
"1252"}, {1, 1, 1, 1}},
8843 {
INSTALLMESSAGE_COMMONDATA, 3, {
"",
"0",
"1033",
"1252"}, {0, 1, 1, 1}},
8844 {
INSTALLMESSAGE_COMMONDATA, 3, {
"",
"1",
"",
""}, {0, 1, 0, 0}},
8849 {
INSTALLMESSAGE_INFO, 3, {
"zero",
"one",
"two",
"three"}, {1, 1, 1, 1}},
8854 {
INSTALLMESSAGE_ACTIONSTART, 3, {
"",
"name",
"description",
"template"}, {0, 1, 1, 1}},
8859 {
INSTALLMESSAGE_ACTIONDATA, 3, {
"{{name: }}template",
"cherry",
"banana",
"guava"}, {1, 1, 1, 1}},
8864 {
INSTALLMESSAGE_USER, 3, {
"",
"1311",
"banana",
"guava"}, {0, 1, 1, 1}},
8869 {
INSTALLMESSAGE_INFO, 3, {
"DEBUG: Error [1]: Action not found: [2]",
"2726",
"banana",
"guava"}, {1, 1, 1, 1}},
8870 {
INSTALLMESSAGE_USER, 3, {
"internal error",
"2726",
"banana",
"guava"}, {1, 1, 1, 1}},
8875 {
INSTALLMESSAGE_USER, 3, {
"",
"2726",
"banana",
"guava"}, {0, 1, 1, 1}},
8880 {
INSTALLMESSAGE_ACTIONSTART, 3, {
"",
"CostInitialize",
"cost description",
"cost template"}, {0, 1, 1, 1}},
8887 {
INSTALLMESSAGE_ACTIONSTART, 3, {
"",
"custom",
"description",
"template"}, {0, 1, 1, 1}},
8894 {
INSTALLMESSAGE_ACTIONSTART, 3, {
"",
"custom",
"",
""}, {0, 1, 1, 1}},
8902 {
INSTALLMESSAGE_ACTIONSTART, 3, {
"",
"custom",
"",
""}, {0, 1, 1, 1}},
8907 {
INSTALLMESSAGE_ACTIONSTART, 3, {
"",
"custom",
"",
""}, {0, 1, 1, 1}},
8910 {
INSTALLMESSAGE_INFO, 2, {
"DEBUG: Error [1]: Action not found: [2]",
"2726",
"custom"}, {1, 1, 1}},
8917 {
INSTALLMESSAGE_ACTIONSTART, 3, {
"",
"dialog",
"",
""}, {0, 1, 1, 1}},
8926 {
INSTALLMESSAGE_ACTIONSTART, 3, {
"",
"error",
"",
""}, {0, 1, 1, 1}},
8933 {
INSTALLMESSAGE_ACTIONSTART, 3, {
"",
"dialog",
"",
""}, {0, 1, 1, 1}},
8941 {
INSTALLMESSAGE_ACTIONSTART, 3, {
"",
"dialog",
"",
""}, {0, 1, 1, 1}},
8959 msg.field_count = 0;
8979 msg.field_count = -1;
8984 for (
i = 0;
i <=
msg.field_count;
i++)
9020 ok(hdb,
"failed to create database\n");
9022 create_file_data(
"forcecodepage.idt",
"\r\n\r\n1252\t_ForceCodepage\r\n",
sizeof(
"\r\n\r\n1252\t_ForceCodepage\r\n") - 1);
9026 r =
run_query(hdb, 0,
"CREATE TABLE `Error` (`Error` SHORT NOT NULL, `Message` CHAR(0) PRIMARY KEY `Error`)");
9028 r =
run_query(hdb, 0,
"INSERT INTO `Error` (`Error`, `Message`) VALUES (5, 'internal error')");
9046 skip(
"Not enough rights to perform tests\n");
9055 ok(hrecord,
"failed to create record\n");
9062 ok(
r == 1,
"Expected 1, got %d\n",
r);
9069 ok(
r == 1,
"Expected 1, got %d\n",
r);
9077 ok(
r == 1,
"Expected 1, got %d\n",
r);
9084 ok(
r == 1,
"Expected 1, got %d\n",
r);
9091 ok(
r == 0,
"Expected 0, got %d\n",
r);
9097 ok(
r == 1,
"Expected 1, got %d\n",
r);
9116 ok(hdb,
"failed to create database\n");
9184 {
INSTALLMESSAGE_ACTIONSTART, 3, {
"",
"spawn",
"",
""}, {0, 1, 1, 1}},
9189 {
INSTALLMESSAGE_ACTIONSTART, 3, {
"",
"custom",
"",
""}, {0, 1, 1, 1}},
9200 {
INSTALLMESSAGE_ACTIONSTART, 3, {
"",
"spawn2",
"",
""}, {0, 1, 1, 1}},
9205 {
INSTALLMESSAGE_ACTIONSTART, 3, {
"",
"custom",
"",
""}, {0, 1, 1, 1}},
9223 skip(
"interactive ControlEvent tests\n");
9237 ok(hdb,
"failed to create database\n");
9239 create_file_data(
"forcecodepage.idt",
"\r\n\r\n1252\t_ForceCodepage\r\n",
sizeof(
"\r\n\r\n1252\t_ForceCodepage\r\n") - 1);
9250 add_control_entry(hdb,
"'spawn', 'button', 'PushButton', 10, 10, 66, 17, 3, 'Click me'");
9251 add_control_entry(hdb,
"'spawn2', 'button', 'PushButton', 10, 10, 66, 17, 3, 'Click me'");
9252 add_control_entry(hdb,
"'child1', 'exit', 'PushButton', 10, 10, 66, 17, 3, 'Click me'");
9253 add_control_entry(hdb,
"'child2', 'exit', 'PushButton', 10, 10, 66, 17, 3, 'Click me'");
9292 {
INSTALLMESSAGE_ACTIONSTART, 3, {
"",
"INSTALL",
"",
""}, {0, 1, 1, 1}},
9295 {
INSTALLMESSAGE_COMMONDATA, 3, {
"",
"0",
"1033",
"1252"}, {1, 1, 1, 1}},
9296 {
INSTALLMESSAGE_COMMONDATA, 3, {
"",
"0",
"1033",
"1252"}, {1, 1, 1, 1}},
9298 {
INSTALLMESSAGE_COMMONDATA, 3, {
"",
"0",
"1033",
"1252"}, {0, 1, 1, 1}},
9299 {
INSTALLMESSAGE_COMMONDATA, 3, {
"",
"1",
"",
""}, {0, 1, 0, 0}},
9301 {
INSTALLMESSAGE_ACTIONSTART, 3, {
"",
"INSTALL",
"",
""}, {0, 1, 1, 1}},
9305 {
INSTALLMESSAGE_ACTIONSTART, 3, {
"",
"CostInitialize",
"",
""}, {0, 1, 0, 1}},
9309 {
INSTALLMESSAGE_ACTIONSTART, 3, {
"",
"FileCost",
"",
""}, {0, 1, 0, 1}},
9313 {
INSTALLMESSAGE_ACTIONSTART, 3, {
"",
"CostFinalize",
"",
""}, {0, 1, 0, 1}},
9318 {
INSTALLMESSAGE_INSTALLEND, 3, {
"",
"",
"{7262AC98-EEBD-4364-8CE3-D654F6A425B9}",
"1"}, {1, 1, 1, 1}, 1},
9329 {
INSTALLMESSAGE_ACTIONSTART, 3, {
"",
"INSTALL",
"",
""}, {0, 1, 1, 1}},
9332 {
INSTALLMESSAGE_ACTIONSTART, 3, {
"",
"AppSearch",
"",
""}, {0, 1, 0, 0}},
9341 {
INSTALLMESSAGE_ACTIONSTART, 3, {
"",
"ExecuteAction",
"",
""}, {0, 1, 1, 1}},
9344 {
INSTALLMESSAGE_COMMONDATA, 3, {
"",
"0",
"1033",
"1252"}, {1, 1, 1, 1}},
9345 {
INSTALLMESSAGE_COMMONDATA, 3, {
"",
"0",
"1033",
"1252"}, {1, 1, 1, 1}},
9346 {
INSTALLMESSAGE_COMMONDATA, 3, {
"",
"0",
"1033",
"1252"}, {0, 1, 1, 1}},
9347 {
INSTALLMESSAGE_COMMONDATA, 3, {
"",
"1",
"",
""}, {0, 1, 0, 0}},
9349 {
INSTALLMESSAGE_ACTIONSTART, 3, {
"",
"INSTALL",
"",
""}, {0, 1, 1, 1}},
9353 {
INSTALLMESSAGE_ACTIONSTART, 3, {
"",
"CostInitialize",
"",
""}, {0, 1, 0, 1}},
9357 {
INSTALLMESSAGE_ACTIONSTART, 3, {
"",
"FileCost",
"",
""}, {0, 1, 0, 1}},
9361 {
INSTALLMESSAGE_ACTIONSTART, 3, {
"",
"CostFinalize",
"",
""}, {0, 1, 0, 1}},
9366 {
INSTALLMESSAGE_INSTALLEND, 3, {
"",
"",
"{7262AC98-EEBD-4364-8CE3-D654F6A425B9}",
"1"}, {1, 1, 1, 1}, 1},
9377 {
INSTALLMESSAGE_ACTIONSTART, 3, {
"",
"ExecuteAction",
"",
""}, {0, 1, 1, 1}},
9380 {
INSTALLMESSAGE_COMMONDATA, 3, {
"",
"0",
"1033",
"1252"}, {1, 1, 1, 1}},
9381 {
INSTALLMESSAGE_COMMONDATA, 3, {
"",
"0",
"1033",
"1252"}, {1, 1, 1, 1}},
9382 {
INSTALLMESSAGE_COMMONDATA, 3, {
"",
"0",
"1033",
"1252"}, {0, 1, 1, 1}},
9383 {
INSTALLMESSAGE_COMMONDATA, 3, {
"",
"1",
"",
""}, {0, 1, 0, 0}},
9385 {
INSTALLMESSAGE_ACTIONSTART, 3, {
"",
"CostInitialize",
"",
""}, {0, 1, 0, 1}},
9400 {
INSTALLMESSAGE_COMMONDATA, 3, {
"",
"0",
"1033",
"1252"}, {1, 1, 1, 1}},
9401 {
INSTALLMESSAGE_COMMONDATA, 3, {
"",
"0",
"1033",
"1252"}, {1, 1, 1, 1}},
9403 {
INSTALLMESSAGE_COMMONDATA, 3, {
"",
"0",
"1033",
"1252"}, {0, 1, 1, 1}},
9404 {
INSTALLMESSAGE_COMMONDATA, 3, {
"",
"1",
"",
""}, {0, 1, 0, 0}},
9406 {
INSTALLMESSAGE_ACTIONSTART, 3, {
"",
"INSTALL",
"",
""}, {0, 1, 1, 1}},
9409 {
INSTALLMESSAGE_ACTIONSTART, 3, {
"",
"AppSearch",
"",
""}, {0, 1, 0, 0}},
9425 {
INSTALLMESSAGE_COMMONDATA, 3, {
"",
"0",
"1033",
"1252"}, {1, 1, 1, 1}},
9426 {
INSTALLMESSAGE_COMMONDATA, 3, {
"",
"0",
"1033",
"1252"}, {1, 1, 1, 1}},
9428 {
INSTALLMESSAGE_COMMONDATA, 3, {
"",
"0",
"1033",
"1252"}, {0, 1, 1, 1}},
9429 {
INSTALLMESSAGE_COMMONDATA, 3, {
"",
"1",
"",
""}, {0, 1, 0, 0}},
9431 {
INSTALLMESSAGE_ACTIONSTART, 3, {
"",
"CUSTOM",
"",
""}, {0, 1, 1, 1}},
9460 ok(hdb,
"failed to create database\n");
9462 create_file_data(
"forcecodepage.idt",
"\r\n\r\n1252\t_ForceCodepage\r\n",
sizeof(
"\r\n\r\n1252\t_ForceCodepage\r\n") -1 );
static char CURR_DIR[MAX_PATH]
static int run_query(HKEY root, WCHAR *path, WCHAR *key_name, WCHAR *value_name, BOOL value_empty, BOOL recurse)
void ls(int argc, const char *argv[])
void user(int argc, const char *argv[])
#define RegCloseKey(hKey)
BOOL WINAPI CopyFileA(IN LPCSTR lpExistingFileName, IN LPCSTR lpNewFileName, IN BOOL bFailIfExists)
static const WCHAR msifile2W[]
static const char * msifile2
static const CHAR suminfo[]
#define ERROR_NOT_ENOUGH_MEMORY
static LSTATUS(WINAPI *pRegDeleteTreeW)(HKEY
static const GUID * classes[]
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 RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
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 RegEnumKeyExW(_In_ HKEY hKey, _In_ DWORD dwIndex, _Out_ LPWSTR lpName, _Inout_ LPDWORD lpcbName, _Reserved_ LPDWORD lpReserved, _Out_opt_ LPWSTR lpClass, _Inout_opt_ LPDWORD lpcbClass, _Out_opt_ PFILETIME lpftLastWriteTime)
LONG WINAPI RegOpenKeyA(HKEY hKey, LPCSTR lpSubKey, PHKEY phkResult)
LONG WINAPI RegDeleteValueA(HKEY hKey, LPCSTR lpValueName)
LONG WINAPI RegSetValueA(HKEY hKeyOriginal, LPCSTR lpSubKey, DWORD dwType, LPCSTR lpData, DWORD cbData)
LONG WINAPI RegDeleteKeyExW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey, _In_ REGSAM samDesired, _In_ DWORD Reserved)
LONG WINAPI RegDeleteValueW(HKEY hKey, LPCWSTR lpValueName)
LONG WINAPI RegEnumValueW(_In_ HKEY hKey, _In_ DWORD index, _Out_ LPWSTR value, _Inout_ PDWORD val_count, _Reserved_ PDWORD reserved, _Out_opt_ PDWORD type, _Out_opt_ LPBYTE data, _Inout_opt_ PDWORD count)
LONG WINAPI RegQueryInfoKeyW(HKEY hKey, LPWSTR lpClass, LPDWORD lpcClass, LPDWORD lpReserved, LPDWORD lpcSubKeys, LPDWORD lpcMaxSubKeyLen, LPDWORD lpcMaxClassLen, LPDWORD lpcValues, LPDWORD lpcMaxValueNameLen, LPDWORD lpcMaxValueLen, LPDWORD lpcbSecurityDescriptor, PFILETIME lpftLastWriteTime)
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)
INT WINAPI StringFromGUID2(REFGUID guid, LPOLESTR str, INT cmax)
HRESULT WINAPI CoCreateGuid(GUID *guid)
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
HRESULT WINAPI CLSIDFromString(LPCOLESTR str, LPCLSID clsid)
#define ERROR_INVALID_PARAMETER
#define INVALID_HANDLE_VALUE
#define CreateFileA(a, b, c, d, e, f, g)
#define GetCurrentProcess()
#define ERROR_NO_MORE_ITEMS
#define ERROR_INVALID_HANDLE
#define FILE_ATTRIBUTE_NORMAL
#define WideCharToMultiByte
#define MultiByteToWideChar
#define ERROR_ACCESS_DENIED
#define ERROR_INVALID_NAME
static const WCHAR version[]
static void cleanup(void)
DWORD WINAPI ExpandEnvironmentStringsA(IN LPCSTR lpSrc, IN LPSTR lpDst, IN DWORD nSize)
BOOL WINAPI DECLSPEC_HOTPATCH SetEnvironmentVariableA(IN LPCSTR lpName, IN LPCSTR lpValue)
BOOL WINAPI DeleteFileA(IN LPCSTR lpFileName)
BOOL WINAPI RemoveDirectoryA(IN LPCSTR lpPathName)
BOOL WINAPI CreateDirectoryA(IN LPCSTR lpPathName, IN LPSECURITY_ATTRIBUTES lpSecurityAttributes)
UINT WINAPI GetDriveTypeA(IN LPCSTR lpRootPathName)
UINT WINAPI GetDriveTypeW(IN LPCWSTR lpRootPathName)
DWORD WINAPI GetFileAttributesA(LPCSTR lpFileName)
DWORD WINAPI GetCurrentDirectoryA(IN DWORD nBufferLength, OUT LPSTR lpBuffer)
UINT WINAPI GetSystemWow64DirectoryA(OUT LPSTR lpBuffer, IN UINT uSize)
UINT WINAPI GetWindowsDirectoryA(OUT LPSTR lpBuffer, IN UINT uSize)
DWORD WINAPI GetFullPathNameA(IN LPCSTR lpFileName, IN DWORD nBufferLength, OUT LPSTR lpBuffer, OUT LPSTR *lpFilePart)
BOOL WINAPI SetCurrentDirectoryA(IN LPCSTR lpPathName)
DWORD WINAPI GetTempPathA(IN DWORD nBufferLength, OUT LPSTR lpBuffer)
UINT WINAPI GetSystemDirectoryA(OUT LPSTR lpBuffer, IN UINT uSize)
VOID WINAPI GetNativeSystemInfo(IN LPSYSTEM_INFO lpSystemInfo)
BOOL WINAPI DECLSPEC_HOTPATCH WritePrivateProfileStringA(LPCSTR section, LPCSTR entry, LPCSTR string, LPCSTR filename)
BOOL WINAPI UpdateResourceA(HANDLE hUpdate, LPCSTR lpType, LPCSTR lpName, WORD wLanguage, LPVOID lpData, DWORD cbData)
HANDLE WINAPI BeginUpdateResourceA(LPCSTR pFileName, BOOL bDeleteExistingResources)
BOOL WINAPI EndUpdateResourceA(HANDLE hUpdate, BOOL fDiscard)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
int WINAPI lstrcmpA(LPCSTR str1, LPCSTR str2)
int WINAPI lstrcmpiA(LPCSTR str1, LPCSTR str2)
LANGID WINAPI GetUserDefaultLangID(void)
DWORD WINAPI GetFileVersionInfoSizeA(LPCSTR filename, LPDWORD handle)
DWORD WINAPI GetVersion(void)
BOOL WINAPI GetFileVersionInfoA(LPCSTR filename, DWORD handle, DWORD datasize, LPVOID data)
DWORD WINAPI DECLSPEC_HOTPATCH GetLogicalDrives(void)
UINT WINAPI MsiDatabaseImportA(MSIHANDLE handle, const char *szFolder, const char *szFilename)
UINT WINAPI MsiOpenDatabaseA(LPCSTR szDBPath, LPCSTR szPersist, MSIHANDLE *phDB)
UINT WINAPI MsiOpenDatabaseW(LPCWSTR szDBPath, LPCWSTR szPersist, MSIHANDLE *phDB)
UINT WINAPI MsiCloseHandle(MSIHANDLE handle)
UINT WINAPI MsiGetSourcePathA(MSIHANDLE hinst, const char *folder, char *buf, DWORD *sz)
UINT WINAPI MsiGetComponentStateA(MSIHANDLE hInstall, LPCSTR szComponent, INSTALLSTATE *piInstalled, INSTALLSTATE *piAction)
UINT WINAPI MsiGetTargetPathW(MSIHANDLE hinst, const WCHAR *folder, WCHAR *buf, DWORD *sz)
UINT WINAPI MsiDoActionA(MSIHANDLE hInstall, LPCSTR szAction)
UINT WINAPI MsiGetTargetPathA(MSIHANDLE hinst, const char *folder, char *buf, DWORD *sz)
UINT WINAPI MsiSetFeatureStateA(MSIHANDLE hInstall, LPCSTR szFeature, INSTALLSTATE iState)
UINT WINAPI MsiSetTargetPathA(MSIHANDLE hInstall, LPCSTR szFolder, LPCSTR szFolderPath)
UINT WINAPI MsiGetFeatureCostA(MSIHANDLE hInstall, LPCSTR szFeature, MSICOSTTREE iCostTree, INSTALLSTATE iState, LPINT piCost)
UINT WINAPI MsiGetFeatureStateA(MSIHANDLE hInstall, LPCSTR szFeature, INSTALLSTATE *piInstalled, INSTALLSTATE *piAction)
UINT WINAPI MsiSetComponentStateA(MSIHANDLE hInstall, LPCSTR szComponent, INSTALLSTATE iState)
UINT WINAPI MsiOpenProductA(LPCSTR szProduct, MSIHANDLE *phProduct)
UINT WINAPI MsiSetExternalUIRecord(INSTALLUI_HANDLER_RECORD handler, DWORD filter, void *context, INSTALLUI_HANDLER_RECORD *prev)
UINT WINAPI MsiInstallProductA(LPCSTR szPackagePath, LPCSTR szCommandLine)
INSTALLUI_HANDLERA WINAPI MsiSetExternalUIA(INSTALLUI_HANDLERA puiHandler, DWORD dwMessageFilter, void *pvContext)
UINT WINAPI MsiGetProductPropertyA(MSIHANDLE hProduct, const char *szProperty, char *szValue, DWORD *pccbValue)
UINT WINAPI MsiGetProductPropertyW(MSIHANDLE hProduct, const WCHAR *szProperty, WCHAR *szValue, DWORD *pccbValue)
UINT WINAPI MsiGetProductInfoA(LPCSTR szProduct, LPCSTR szAttribute, LPSTR szBuffer, LPDWORD pcchValueBuf)
UINT WINAPI MsiApplyMultiplePatchesA(LPCSTR szPatchPackages, LPCSTR szProductCode, LPCSTR szPropertiesList)
INSTALLUILEVEL WINAPI MsiSetInternalUI(INSTALLUILEVEL dwUILevel, HWND *phWnd)
INSTALLSTATE WINAPI MsiQueryFeatureStateA(LPCSTR szProduct, LPCSTR szFeature)
UINT WINAPI MsiApplyPatchA(LPCSTR szPatchPackage, LPCSTR szInstallPackage, INSTALLTYPE eInstallType, LPCSTR szCommandLine)
UINT WINAPI MsiEnumComponentCostsA(MSIHANDLE handle, const char *component, DWORD index, INSTALLSTATE state, char *drive, DWORD *buflen, int *cost, int *temp)
UINT WINAPI MsiOpenPackageA(LPCSTR szPackage, MSIHANDLE *phPackage)
UINT WINAPI MsiSetPropertyA(MSIHANDLE hInstall, LPCSTR szName, LPCSTR szValue)
MSIHANDLE WINAPI MsiGetActiveDatabase(MSIHANDLE hInstall)
UINT WINAPI MsiGetPropertyW(MSIHANDLE hinst, const WCHAR *name, WCHAR *buf, DWORD *sz)
UINT WINAPI MsiGetPropertyA(MSIHANDLE hinst, const char *name, char *buf, DWORD *sz)
INT WINAPI MsiProcessMessage(MSIHANDLE hInstall, INSTALLMESSAGE eMessageType, MSIHANDLE hRecord)
int WINAPI MsiRecordGetInteger(MSIHANDLE handle, UINT iField)
UINT WINAPI MsiRecordGetStringA(MSIHANDLE handle, UINT iField, char *szValue, DWORD *pcchValue)
MSIHANDLE WINAPI MsiCreateRecord(UINT cParams)
UINT WINAPI MsiRecordSetInteger(MSIHANDLE handle, UINT iField, int iVal)
UINT WINAPI MsiRecordSetStringA(MSIHANDLE handle, UINT iField, const char *szValue)
UINT WINAPI MsiRecordGetFieldCount(MSIHANDLE handle)
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)
int WINAPIV fprintf(FILE *file, const char *format,...)
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
_ACRTIMP __msvcrt_long __cdecl atol(const char *)
_ACRTIMP char *__cdecl strchr(const char *, int)
_ACRTIMP size_t __cdecl strlen(const char *)
_ACRTIMP int __cdecl strcmp(const char *, const char *)
_ACRTIMP int __cdecl strncmp(const char *, const char *, size_t)
_ACRTIMP char *__cdecl strrchr(const char *, int)
HRESULT WINAPI CoInitialize(LPVOID lpReserved)
static BOOL is_process_elevated(void)
UINT WINAPI GetTempFileNameA(IN LPCSTR lpPathName, IN LPCSTR lpPrefixString, IN UINT uUnique, OUT LPSTR lpTempFileName)
GLuint GLuint GLsizei GLenum type
GLdouble GLdouble GLdouble r
GLenum GLuint GLenum GLsizei const GLchar * buf
GLboolean GLenum GLenum GLvoid * values
GLuint GLsizei GLsizei * length
GLuint GLint GLboolean GLint GLenum access
const GLuint GLenum const GLvoid * binary
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
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 GLint GLint j
HLOCAL NTAPI LocalFree(HLOCAL hMem)
LPSTR WINAPI lstrcpyA(LPSTR lpString1, LPCSTR lpString2)
LPSTR WINAPI lstrcatA(LPSTR lpString1, LPCSTR lpString2)
int WINAPI lstrlenA(LPCSTR lpString)
#define todo_wine_if(is_todo)
#define memcpy(s1, s2, n)
#define ERROR_FILE_NOT_FOUND
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
static void create_file_data(LPCSTR name, LPCSTR data, DWORD size)
void restart_as_admin_elevated(void)
static INT CALLBACK externalui_message_callback(void *context, UINT message, MSIHANDLE hrecord)
#define add_install_ui_sequence_entry(hdb, values)
static void set_suminfo_prop(MSIHANDLE db, DWORD prop, DWORD val)
#define add_signature_entry(hdb, values)
static UINT package_from_db(MSIHANDLE hdb, MSIHANDLE *handle)
static UINT create_complocator_table(MSIHANDLE hdb)
static void check_prop(MSIHANDLE hpkg, const char *prop, const char *expect, int match_case, int todo_value)
static const struct externalui_message openpackage_nonexistent_sequence[]
static UINT create_appsearch_table(MSIHANDLE hdb)
static const struct externalui_message toplevel_install_ui_sequence[]
static void test_removefiles(void)
static UINT create_control_table(MSIHANDLE hdb)
static void test_property_table(void)
static void test_formatrecord_tables(void)
static UINT create_install_ui_sequence_table(MSIHANDLE hdb)
static void test_access(void)
#define add_install_execute_sequence_entry(hdb, values)
static void ok_sequence_(const struct externalui_message *expected, const char *context, BOOL todo, const char *file, int line)
static void test_doaction(void)
static const WCHAR msifileW[]
static void test_controlevent(void)
static BOOL squash_guid(LPCWSTR in, LPWSTR out)
static const struct externalui_message toplevel_msiinstallproduct_custom_sequence[]
static void delete_component_path(LPCSTR guid, MSIINSTALLCONTEXT context, LPSTR usersid)
#define add_control_entry(hdb, values)
static const struct externalui_message toplevel_install_sequence[]
static char * get_user_sid(void)
static UINT create_feature_table(MSIHANDLE hdb)
static const struct externalui_message doaction_custom_cancel_sequence[]
static UINT create_reglocator_table(MSIHANDLE hdb)
static void test_MsiApplyPatch(void)
static struct externalui_message * sequence
static const struct externalui_message doaction_costinitialize_sequence[]
#define add_component_entry(hdb, values)
static const struct externalui_message processmessage_actionstart_sequence[]
#define add_dialog_entry(hdb, values)
static UINT create_launchcondition_table(MSIHANDLE hdb)
static void test_msipackage(void)
static const struct access_res create[16]
static const struct externalui_message toplevel_msiinstallproduct_sequence[]
static void test_installprops(void)
static void test_component_states(UINT line, MSIHANDLE package, const char *component, UINT error, INSTALLSTATE expected_state, INSTALLSTATE expected_action, BOOL todo)
static const char msifile[]
static const struct externalui_message doaction_dialog_12345_sequence[]
static UINT create_upgrade_table(MSIHANDLE hdb)
static INT CALLBACK externalui_callback(void *context, UINT message_type, LPCSTR message)
static UINT create_feature_components_table(MSIHANDLE hdb)
static const struct externalui_message processmessage_error_format_sequence[]
#define add_actiontext_entry(hdb, values)
static int externalui_record_ran
static int externalui_ran
#define add_media_entry(hdb, values)
static void test_appsearch_reglocator(void)
static UINT try_query(MSIHANDLE hdb, LPCSTR szQuery)
#define update_ProductCode_property(hdb, value)
#define add_ccpsearch_entry(hdb, values)
static const struct externalui_message doaction_dialog_3_sequence[]
static UINT create_install_execute_sequence_table(MSIHANDLE hdb)
static UINT create_controlevent_table(MSIHANDLE hdb)
static UINT create_inilocator_table(MSIHANDLE hdb)
static void test_props(void)
static void test_complocator(void)
static UINT create_component_table(MSIHANDLE hdb)
static void test_MsiDatabaseCommit(void)
static void test_appsearch(void)
#define ok_sequence(exp, contx, todo)
static void test_MsiGetProductProperty(void)
#define add_complocator_entry(hdb, values)
#define add_inilocator_entry(hdb, values)
static void test_appsearch_drlocator(void)
static BOOL create_file_with_version(const CHAR *name, LONG ms, LONG ls)
static void test_MsiGetSourcePath(void)
#define add_file_entry(hdb, values)
static void test_feature_states(UINT line, MSIHANDLE package, const char *feature, UINT error, INSTALLSTATE expected_state, INSTALLSTATE expected_action, BOOL todo)
static INT CALLBACK externalui_record_callback(void *context, UINT message_type, MSIHANDLE hrecord)
static UINT create_actiontext_table(MSIHANDLE hdb)
static void set_component_path(LPCSTR filename, MSIINSTALLCONTEXT context, LPCSTR guid, LPSTR usersid, BOOL dir)
static void test_settargetpath(void)
struct _tagVS_VERSIONINFO VS_VERSIONINFO
static const struct externalui_message controlevent_spawn_sequence[]
static void test_gettargetpath_bad(void)
static const struct access_res create_close[16]
static const struct externalui_message processmessage_internal_error_sequence[]
static void flush_sequence(void)
static UINT create_drlocator_table(MSIHANDLE hdb)
static const struct externalui_message processmessage_error_sequence[]
static void test_sourcedir(void)
static void test_MsiApplyMultiplePatches(void)
static const INSTALLLOGMODE MSITEST_INSTALLLOGMODE
static BOOL is_root(const char *path)
static UINT add_reglocator_entry(MSIHANDLE hdb, const char *sig, UINT root, const char *path, const char *name, UINT type)
static void _test_file_access(LPCSTR file, const struct access_res *ares, DWORD line)
static void test_MsiSetProperty(void)
static void test_ccpsearch(void)
static MSIHANDLE create_package_db(void)
static void test_createpackage(void)
static void test_launchconditions(void)
static void query_file_path(MSIHANDLE hpkg, LPCSTR file, LPSTR buff)
static const struct externalui_message toplevel_executeaction_install_sequence[]
static BOOL find_prop_in_property(MSIHANDLE hdb, LPCSTR prop, LPCSTR val, int len)
static UINT create_remove_file_table(MSIHANDLE hdb)
static UINT create_custom_action_table(MSIHANDLE hdb)
static UINT do_query(MSIHANDLE hdb, const char *query, MSIHANDLE *phrec)
static void test_emptypackage(void)
static UINT try_query_param(MSIHANDLE hdb, LPCSTR szQuery, MSIHANDLE hrec)
#define add_property_entry(hdb, values)
#define add_feature_components_entry(hdb, values)
static void test_featureparents(void)
static void test_shortlongsource(void)
#define add_drlocator_entry(hdb, values)
static UINT create_property_table(MSIHANDLE hdb)
static void test_condition(void)
static void test_appsearch_inilocator(void)
static const struct access_res create_commit[16]
#define add_feature_entry(hdb, values)
static const struct externalui_message closehandle_sequence[]
static const struct externalui_message toplevel_executeaction_costinitialize_sequence[]
static const struct externalui_message empty_sequence[]
#define add_launchcondition_entry(hdb, values)
static void test_costs(void)
static void test_appsearch_complocator(void)
#define update_ProductVersion_property(hdb, value)
#define add_controlevent_entry(hdb, values)
static const struct externalui_message processmessage_info_sequence[]
static void set_summary_dword(MSIHANDLE hdb, DWORD pid, DWORD value)
static const struct externalui_message doaction_custom_fullui_sequence[]
static LSTATUS package_RegDeleteTreeW(HKEY hKey, LPCWSTR lpszSubKey, REGSAM access)
static const struct externalui_message doaction_dialog_error_sequence[]
static const struct externalui_message doaction_custom_sequence[]
static const struct externalui_message processmessage_actiondata_sequence[]
#define test_file_access(file, ares)
static const struct externalui_message doaction_dialog_nonexistent_sequence[]
static UINT set_summary_info(MSIHANDLE hdb)
#define add_directory_entry(hdb, values)
static INT CALLBACK externalui_message_string_callback(void *context, UINT message, LPCSTR string)
static UINT create_dialog_table(MSIHANDLE hdb)
static void set_summary_str(MSIHANDLE hdb, DWORD pid, LPCSTR value)
static void search_absolute_directory(LPSTR absolute, LPCSTR relative)
static void test_top_level_action(void)
static void delete_win_ini(LPCSTR file)
static int sequence_count
static void create_test_file(const CHAR *name)
static UINT create_signature_table(MSIHANDLE hdb)
static const struct externalui_message openpackage_sequence[]
static void test_externalui_message(void)
static const struct externalui_message controlevent_spawn2_sequence[]
static UINT create_media_table(MSIHANDLE hdb)
static void create_test_guid(LPSTR prodcode, LPSTR squashed)
static void test_externalui(void)
#define add_upgrade_entry(hdb, values)
#define roundpos(a, b, r)
#define add_appsearch_entry(hdb, values)
static void test_states(void)
static UINT add_entry(const char *file, int line, const char *type, MSIHANDLE hdb, const char *values, const char *insert)
static const struct externalui_message doaction_dialog_sequence[]
static UINT create_file_table(MSIHANDLE hdb)
static void test_formatrecord2(void)
#define add_custom_action_entry(hdb, values)
static UINT create_ccpsearch_table(MSIHANDLE hdb)
INTERNETFEATURELIST feature
#define INSTALLPROPERTY_LOCALPACKAGEA
enum tagMSIINSTALLCONTEXT MSIINSTALLCONTEXT
@ INSTALLLOGMODE_INSTALLSTART
@ INSTALLLOGMODE_FILESINUSE
@ INSTALLLOGMODE_ACTIONDATA
@ INSTALLLOGMODE_ACTIONSTART
@ INSTALLLOGMODE_FATALEXIT
@ INSTALLLOGMODE_RESOLVESOURCE
@ INSTALLLOGMODE_COMMONDATA
@ INSTALLLOGMODE_INITIALIZE
@ INSTALLLOGMODE_TERMINATE
@ INSTALLLOGMODE_RMFILESINUSE
@ INSTALLLOGMODE_OUTOFDISKSPACE
@ INSTALLLOGMODE_SHOWDIALOG
@ INSTALLLOGMODE_INSTALLEND
INT(CALLBACK * INSTALLUI_HANDLERA)(LPVOID, UINT, LPCSTR)
@ INSTALLMESSAGE_ACTIONSTART
@ INSTALLMESSAGE_TERMINATE
@ INSTALLMESSAGE_ACTIONDATA
@ INSTALLMESSAGE_COMMONDATA
@ INSTALLMESSAGE_INITIALIZE
@ INSTALLMESSAGE_INSTALLSTART
@ INSTALLMESSAGE_SHOWDIALOG
@ INSTALLMESSAGE_INSTALLEND
@ INSTALLSTATE_ADVERTISED
@ MSIINSTALLCONTEXT_MACHINE
@ MSIINSTALLCONTEXT_USERUNMANAGED
@ MSIINSTALLCONTEXT_USERMANAGED
INT(CALLBACK * INSTALLUI_HANDLER_RECORD)(LPVOID, UINT, MSIHANDLE)
enum tagINSTALLUILEVEL INSTALLUILEVEL
enum tagINSTALLLOGMODE INSTALLLOGMODE
@ INSTALLUILEVEL_SOURCERESONLY
@ msidbLocatorTypeRawValue
@ msidbLocatorTypeDirectory
@ msidbLocatorTypeFileName
@ msidbSumInfoSourceTypeSFN
@ msidbSumInfoSourceTypeCompressed
static const BOOL is_64bit
UINT WINAPI MsiViewClose(MSIHANDLE hView)
UINT WINAPI MsiViewExecute(MSIHANDLE hView, MSIHANDLE hRec)
UINT WINAPI MsiDatabaseCommit(MSIHANDLE hdb)
UINT WINAPI MsiDatabaseOpenViewA(MSIHANDLE hdb, const char *szQuery, MSIHANDLE *phView)
UINT WINAPI MsiViewFetch(MSIHANDLE hView, MSIHANDLE *record)
MSICONDITION WINAPI MsiDatabaseIsTablePersistentA(MSIHANDLE hDatabase, const char *szTableName)
MSICONDITION WINAPI MsiEvaluateConditionW(MSIHANDLE, LPCWSTR)
#define MSIDBOPEN_CREATEDIRECT
MSICONDITION WINAPI MsiEvaluateConditionA(MSIHANDLE, LPCSTR)
#define PROCESSOR_ARCHITECTURE_AMD64
#define PROCESSOR_ARCHITECTURE_INTEL
#define FILE_ATTRIBUTE_DIRECTORY
#define MAKEINTRESOURCE(i)
int WINAPI GetSystemMetrics(_In_ int)
static const char *static const char const char DWORD void DWORD *static const char const char DWORD void DWORD *static const char DWORD DWORD void * buff
WORD wProcessorArchitecture
#define INVALID_FILE_ATTRIBUTES
static const WCHAR props[]
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
DWORD WINAPI GetLastError(void)
_In_ ULONG_PTR _In_ ULONG _Out_ ULONG_PTR * pid
#define ERROR_UNKNOWN_PRODUCT
#define ERROR_INSTALL_FAILURE
#define ERROR_INSTALL_PACKAGE_INVALID
#define ERROR_INSTALL_USEREXIT
#define ERROR_SHARING_VIOLATION
#define ERROR_INVALID_HANDLE_STATE
#define ERROR_PATH_NOT_FOUND
#define ERROR_INSTALL_PACKAGE_REJECTED
#define ERROR_UNKNOWN_COMPONENT
#define ERROR_PRODUCT_VERSION
#define ERROR_UNKNOWN_FEATURE
#define ERROR_PATCH_PACKAGE_OPEN_FAILED
#define ERROR_BAD_QUERY_SYNTAX
#define ERROR_FUNCTION_FAILED
#define ERROR_FUNCTION_NOT_CALLED
#define PROCESSOR_ARCHITECTURE_ARM64
#define HKEY_LOCAL_MACHINE
#define HKEY_CURRENT_USER
#define HKEY_CLASSES_ROOT