@joebigelow / wix / commits / 581897da

Fix Control symbol dehydration to MSI output.

Bob Arnson committed Jul 26, 2020 at 23:06 UTC 581897da13bd8a20eea0c2079262caaa06cde676
4 files changed +43 -36
src/WixToolset.Core.WindowsInstaller/Bind/CreateOutputFromIRCommand.cs
+4 -3
@@ -349,9 +349,10 @@ namespace WixToolset.Core.WindowsInstaller.Bind
349 row[5] = symbol.Width;
350 row[6] = symbol.Height;
351 row[7] = attributes;
352 - row[8] = text;
353 - row[9] = symbol.NextControlRef;
354 - row[10] = symbol.Help;
352 + row[8] = symbol.Property;
353 + row[9] = text;
354 + row[10] = symbol.NextControlRef;
355 + row[11] = symbol.Help;
356 }
357
358 private void AddControlEventSymbol(ControlEventSymbol symbol)
src/WixToolset.Core/BindPath.cs
+2
@@ -2,11 +2,13 @@
2
3 namespace WixToolset.Core
4 {
5 + using System.Diagnostics;
6 using WixToolset.Extensibility.Data;
7
8 /// <summary>
9 /// Bind path representation.
10 /// </summary>
11 + [DebuggerDisplay("Name={Name,nq} Path={Path,nq}")]
12 internal class BindPath : IBindPath
13 {
14 public string Name { get; set; }
src/test/WixToolsetTest.CoreIntegration/MsiQueryFixture.cs
+36 -33
@@ -41,7 +41,7 @@ namespace WixToolsetTest.CoreIntegration
41
42 Assert.True(File.Exists(msiPath));
43 var results = Query.QueryDatabase(msiPath, new[] { "AppId" });
44 - Assert.Equal(new[]
44 + WixAssert.CompareLineByLine(new[]
45 {
46 "AppId:{D6040299-B15C-4C94-AE26-0C9B60D14C35}\t\t\t\t\t\t",
47 }, results);
@@ -74,7 +74,7 @@ namespace WixToolsetTest.CoreIntegration
74
75 Assert.True(File.Exists(msiPath));
76 var results = Query.QueryDatabase(msiPath, new[] { "AppSearch", "CompLocator" });
77 - Assert.Equal(new[]
77 + WixAssert.CompareLineByLine(new[]
78 {
79 "AppSearch:SAMPLECOMPFOUND\tSampleCompSearch",
80 "CompLocator:SampleCompSearch\t{4D9A0D20-D0CC-40DE-B580-EAD38B985217}\t1",
@@ -108,7 +108,7 @@ namespace WixToolsetTest.CoreIntegration
108
109 Assert.True(File.Exists(msiPath));
110 var results = Query.QueryDatabase(msiPath, new[] { "AppSearch", "DrLocator" });
111 - Assert.Equal(new[]
111 + WixAssert.CompareLineByLine(new[]
112 {
113 "AppSearch:SAMPLEDIRFOUND\tSampleDirSearch",
114 "DrLocator:SampleDirSearch\t\tC:\\SampleDir\t",
@@ -142,7 +142,7 @@ namespace WixToolsetTest.CoreIntegration
142
143 Assert.True(File.Exists(msiPath));
144 var results = Query.QueryDatabase(msiPath, new[] { "AppSearch", "DrLocator", "IniLocator" });
145 - Assert.Equal(new[]
145 + WixAssert.CompareLineByLine(new[]
146 {
147 "AppSearch:SAMPLEFILEFOUND\tSampleFileSearch",
148 "DrLocator:SampleFileSearch\tSampleIniFileSearch\t\t",
@@ -177,7 +177,7 @@ namespace WixToolsetTest.CoreIntegration
177
178 Assert.True(File.Exists(msiPath));
179 var results = Query.QueryDatabase(msiPath, new[] { "AppSearch", "RegLocator" });
180 - Assert.Equal(new[]
180 + WixAssert.CompareLineByLine(new[]
181 {
182 "AppSearch:SAMPLEREGFOUND\tSampleRegSearch",
183 "RegLocator:SampleRegSearch\t2\tSampleReg\t\t2",
@@ -213,7 +213,7 @@ namespace WixToolsetTest.CoreIntegration
213
214 Assert.True(File.Exists(msiPath));
215 var results = Query.QueryDatabase(msiPath, new[] { "Class" });
216 - Assert.Equal(new[]
216 + WixAssert.CompareLineByLine(new[]
217 {
218 "Class:{3FAED4CC-C473-4B8A-BE8B-303871377A4A}\tLocalServer32\tClassComp\t\tFakeClass3FAE\t\t\tSampleIcon\t0\t\t\tProductFeature\t",
219 }, results);
@@ -246,7 +246,7 @@ namespace WixToolsetTest.CoreIntegration
246
247 Assert.True(File.Exists(msiPath));
248 var results = Query.QueryDatabase(msiPath, new[] { "Class", "ProgId", "Registry" });
249 - Assert.Equal(new[]
249 + WixAssert.CompareLineByLine(new[]
250 {
251 "Class:{F12A6F69-117F-471F-AE73-F8E74218F498}\tLocalServer32\tProgIdComp\t73E7DF7E-EFAC-4E11-90E2-6EBAEB8DE58D\tFakeClassF12A\t\t\t\t\t\t\tProductFeature\t",
252 "ProgId:73E7DF7E-EFAC-4E11-90E2-6EBAEB8DE58D\t\t{F12A6F69-117F-471F-AE73-F8E74218F498}\tFakeClassF12A\t\t",
@@ -283,14 +283,17 @@ namespace WixToolsetTest.CoreIntegration
283
284 Assert.True(File.Exists(msiPath));
285
286 - var results = Query.QueryDatabase(msiPath, new[] { "CheckBox", "Control", "InstallUISequence" });
287 - Assert.Equal(new[]
286 + var results = Query.QueryDatabase(msiPath, new[] { "CheckBox", "Control", "ControlCondition", "InstallUISequence" });
287 + WixAssert.CompareLineByLine(new[]
288 {
289 "CheckBox:WIXUI_EXITDIALOGOPTIONALCHECKBOX\t1",
290 - "Control:FirstDialog\tHeader\tText\t0\t13\t90\t13\t3\tFirstDialogHeader\tTitle\t\t",
291 - "Control:FirstDialog\tTitle\tText\t0\t0\t90\t13\t3\tFirstDialogTitle\tHeader\t\t",
292 - "Control:SecondDialog\tOptionalCheckBox\tCheckBox\t0\t13\t100\t40\t2\t[WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT]\tTitle\t\t",
293 - "Control:SecondDialog\tTitle\tText\t0\t0\t90\t13\t3\tSecondDialogTitle\tOptionalCheckBox\t\t",
290 + "Control:FirstDialog\tHeader\tText\t0\t13\t90\t13\t3\t\tFirstDialogHeader\tTitle\t",
291 + "Control:FirstDialog\tTitle\tText\t0\t0\t90\t13\t3\t\tFirstDialogTitle\tHeader\t",
292 + "Control:SecondDialog\tOptionalCheckBox\tCheckBox\t0\t13\t100\t40\t2\tWIXUI_EXITDIALOGOPTIONALCHECKBOX\t[WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT]\tTitle\tOptional checkbox|Check this box for fun",
293 + "Control:SecondDialog\tTitle\tText\t0\t0\t90\t13\t3\t\tSecondDialogTitle\tOptionalCheckBox\t",
294 + "ControlCondition:FirstDialog\tHeader\tDisable\tInstalled",
295 + "ControlCondition:FirstDialog\tHeader\tHide\tInstalled",
296 + "ControlCondition:SecondDialog\tOptionalCheckBox\tShow\tWIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT AND NOT Installed",
297 "InstallUISequence:CostFinalize\t\t1000",
298 "InstallUISequence:CostInitialize\t\t800",
299 "InstallUISequence:ExecuteAction\t\t1300",
@@ -331,7 +334,7 @@ namespace WixToolsetTest.CoreIntegration
334
335 Assert.True(File.Exists(msiPath));
336 var results = Query.QueryDatabase(msiPath, new[] { "CreateFolder" });
334 - Assert.Equal(new[]
337 + WixAssert.CompareLineByLine(new[]
338 {
339 "CreateFolder:INSTALLFOLDER\tNullKeypathComponent",
340 }, results);
@@ -409,7 +412,7 @@ namespace WixToolsetTest.CoreIntegration
412
413 Assert.True(File.Exists(msiPath));
414 var results = Query.QueryDatabase(msiPath, new[] { "Environment" });
412 - Assert.Equal(new[]
415 + WixAssert.CompareLineByLine(new[]
416 {
417 "Environment:PATH\t=-*PATH\t[INSTALLFOLDER]; ;[~]\tWixEnvironmentTest",
418 "Environment:WixEnvironmentTest1\t=-WixEnvTest1\t\tWixEnvironmentTest",
@@ -478,7 +481,7 @@ namespace WixToolsetTest.CoreIntegration
481
482 Assert.True(File.Exists(msiPath));
483 var results = Query.QueryDatabase(msiPath, new[] { "Feature" });
481 - Assert.Equal(new[]
484 + WixAssert.CompareLineByLine(new[]
485 {
486 "Feature:ChildFeature\tParentFeature\tChildFeatureTitle\t\t2\t1\t\t0",
487 "Feature:ParentFeature\t\tParentFeatureTitle\t\t2\t1\t\t0",
@@ -513,7 +516,7 @@ namespace WixToolsetTest.CoreIntegration
516
517 Assert.True(File.Exists(msiPath));
518 var results = Query.QueryDatabase(msiPath, new[] { "Font" });
516 - Assert.Equal(new[]
519 + WixAssert.CompareLineByLine(new[]
520 {
521 "Font:test.txt\tFakeFont",
522 }, results);
@@ -546,7 +549,7 @@ namespace WixToolsetTest.CoreIntegration
549
550 Assert.True(File.Exists(msiPath));
551 var results = Query.QueryDatabase(msiPath, new[] { "Font" });
549 - Assert.Equal(new[]
552 + WixAssert.CompareLineByLine(new[]
553 {
554 "Font:TrueTypeFontFile\t",
555 }, results);
@@ -579,7 +582,7 @@ namespace WixToolsetTest.CoreIntegration
582
583 Assert.True(File.Exists(msiPath));
584 var results = Query.QueryDatabase(msiPath, new[] { "InstallExecuteSequence" });
582 - Assert.Equal(new[]
585 + WixAssert.CompareLineByLine(new[]
586 {
587 "InstallExecuteSequence:CostFinalize\t\t1000",
588 "InstallExecuteSequence:CostInitialize\t\t800",
@@ -630,7 +633,7 @@ namespace WixToolsetTest.CoreIntegration
633
634 Assert.True(File.Exists(msiPath));
635 var results = Query.QueryDatabase(msiPath, new[] { "LockPermissions" });
633 - Assert.Equal(new[]
636 + WixAssert.CompareLineByLine(new[]
637 {
638 "LockPermissions:INSTALLFOLDER\tCreateFolder\t\tAdministrator\t0",
639 }, results);
@@ -664,7 +667,7 @@ namespace WixToolsetTest.CoreIntegration
667
668 Assert.True(File.Exists(msiPath));
669 var results = Query.QueryDatabase(msiPath, new[] { "MsiAssembly", "MsiAssemblyName" });
667 - Assert.Equal(new[]
670 + WixAssert.CompareLineByLine(new[]
671 {
672 "MsiAssembly:test.txt\tProductFeature\ttest.dll.manifest\t\t1",
673 "MsiAssemblyName:test.txt\tname\tMyApplication.app",
@@ -699,7 +702,7 @@ namespace WixToolsetTest.CoreIntegration
702
703 Assert.True(File.Exists(msiPath));
704 var results = Query.QueryDatabase(msiPath, new[] { "MsiShortcutProperty", "Shortcut" });
702 - Assert.Equal(new[]
705 + WixAssert.CompareLineByLine(new[]
706 {
707 "MsiShortcutProperty:scp4GOCIx4Eskci4nBG1MV_vSUOZt4\tTheShortcut\tCustomShortcutKey\tCustomShortcutValue",
708 "Shortcut:TheShortcut\tINSTALLFOLDER\td\tShortcutComp\t[#filcV1yrx0x8wJWj4qMzcH21jwkPko]\t\t\t\t\t\t\t\t\t\t\t",
@@ -733,7 +736,7 @@ namespace WixToolsetTest.CoreIntegration
736
737 Assert.True(File.Exists(msiPath));
738 var results = Query.QueryDatabase(msiPath, new[] { "ReserveCost" });
736 - Assert.Equal(new[]
739 + WixAssert.CompareLineByLine(new[]
740 {
741 "ReserveCost:TestCost\tReserveCostComp\tINSTALLFOLDER\t100\t200",
742 }, results);
@@ -766,7 +769,7 @@ namespace WixToolsetTest.CoreIntegration
769
770 Assert.True(File.Exists(msiPath));
771 var results = Query.QueryDatabase(msiPath, new[] { "ServiceInstall", "ServiceControl" });
769 - Assert.Equal(new[]
772 + WixAssert.CompareLineByLine(new[]
773 {
774 "ServiceControl:SampleService\tSampleService\t161\t\t1\ttest.txt",
775 "ServiceInstall:SampleService\tSampleService\t\t16\t4\t0\t\t\t\t\t\ttest.txt\t",
@@ -800,7 +803,7 @@ namespace WixToolsetTest.CoreIntegration
803
804 Assert.True(File.Exists(msiPath));
805 var results = Query.QueryDatabase(msiPath, new[] { "TextStyle" });
803 - Assert.Equal(new[]
806 + WixAssert.CompareLineByLine(new[]
807 {
808 "TextStyle:FirstTextStyle\tArial\t2\t\t",
809 }, results);
@@ -834,7 +837,7 @@ namespace WixToolsetTest.CoreIntegration
837
838 Assert.True(File.Exists(msiPath));
839 var results = Query.QueryDatabase(msiPath, new[] { "TextStyle" });
837 - Assert.Equal(new[]
840 + WixAssert.CompareLineByLine(new[]
841 {
842 "TextStyle:CustomFont\tTahoma\t8\t\t",
843 }, results);
@@ -866,7 +869,7 @@ namespace WixToolsetTest.CoreIntegration
869
870 Assert.True(File.Exists(msiPath));
871 var results = Query.QueryDatabase(msiPath, new[] { "TypeLib" });
869 - Assert.Equal(new[]
872 + WixAssert.CompareLineByLine(new[]
873 {
874 "TypeLib:{765BE8EE-BD7F-491E-90D2-C5A972462B50}\t0\tTypeLibComp\t\t\t\tProductFeature\t",
875 }, results);
@@ -898,7 +901,7 @@ namespace WixToolsetTest.CoreIntegration
901
902 Assert.True(File.Exists(msiPath));
903 var results = Query.QueryDatabase(msiPath, new[] { "Upgrade" });
901 - Assert.Equal(new[]
904 + WixAssert.CompareLineByLine(new[]
905 {
906 "Upgrade:{01120000-00E0-0000-0000-0000000FF1CE}\t12.0.0\t13.0.0\t\t260\t\tBLAHBLAHBLAH",
907 }, results);
@@ -931,7 +934,7 @@ namespace WixToolsetTest.CoreIntegration
934
935 Assert.True(File.Exists(msiPath));
936 var results = Query.QueryDatabase(msiPath, new[] { "Upgrade" });
934 - Assert.Equal(new[]
937 + WixAssert.CompareLineByLine(new[]
938 {
939 "Upgrade:{12E4699F-E774-4D05-8A01-5BDD41BBA127}\t\t1.0.0.0\t1033\t1\t\tWIX_UPGRADE_DETECTED",
940 "Upgrade:{12E4699F-E774-4D05-8A01-5BDD41BBA127}\t1.0.0.0\t\t1033\t2\t\tWIX_DOWNGRADE_DETECTED",
@@ -940,12 +943,12 @@ namespace WixToolsetTest.CoreIntegration
943
944 var prefix = "Property:SecureCustomProperties\t";
945 var secureProperties = Query.QueryDatabase(msiPath, new[] { "Property" }).Where(p => p.StartsWith(prefix)).Single();
943 - Assert.Equal(new[]
946 + WixAssert.CompareLineByLine(new[]
947 {
948 "RELPRODFOUND",
949 "WIX_DOWNGRADE_DETECTED",
950 "WIX_UPGRADE_DETECTED",
948 - }, secureProperties.Substring(prefix.Length).Split(';').OrderBy(p => p));
951 + }, secureProperties.Substring(prefix.Length).Split(';').OrderBy(p => p).ToArray());
952 }
953 }
954
@@ -983,13 +986,13 @@ namespace WixToolsetTest.CoreIntegration
986 Assert.Null(data.Tables["File"]);
987
988 var results = Query.QueryDatabase(msiPath, new[] { "File" });
986 - Assert.Equal(new[]
989 + WixAssert.CompareLineByLine(new[]
990 {
991 "File:filyIq8rqcxxf903Hsn5K9L0SWV73g.243FB739_4D05_472F_9CFB_EF6B1017B6DE\tModuleComponent.243FB739_4D05_472F_9CFB_EF6B1017B6DE\ttest.txt\t17\t\t\t512\t0"
992 }, results);
993
994 var files = Query.GetCabinetFiles(cabPath);
992 - Assert.Equal(new[]
995 + WixAssert.CompareLineByLine(new[]
996 {
997 "filyIq8rqcxxf903Hsn5K9L0SWV73g.243FB739_4D05_472F_9CFB_EF6B1017B6DE"
998 }, files.Select(f => f.Name).ToArray());
src/test/WixToolsetTest.CoreIntegration/TestData/DialogsInInstallUISequence/PackageComponents.wxs
+1
@@ -10,6 +10,7 @@
10 <Dialog Id="SecondDialog" Width="100" Height="100">
11 <Control Id="Title" Type="Text" X="0" Y="0" Width="90" Height="13" TabSkip="no" Text="SecondDialogTitle" />
12 <Control Id="OptionalCheckBox" Type="CheckBox" X="0" Y="13" Width="100" Height="40" Hidden="yes" Property="WIXUI_EXITDIALOGOPTIONALCHECKBOX" CheckBoxValue="1" Text="[WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT]"
13 + ToolTip="Optional checkbox" Help="Check this box for fun"
14 ShowCondition="WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT AND NOT Installed" />
15 </Dialog>
16