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