aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/api/wix/WixToolset.Data/WindowsInstaller/WindowsInstallerTableDefinitions.cs2
-rw-r--r--src/wix/WixToolset.Core.WindowsInstaller/Bind/BindDatabaseCommand.cs7
-rw-r--r--src/wix/WixToolset.Core.WindowsInstaller/Bind/CreateWindowsInstallerDataFromIRCommand.cs1
-rw-r--r--src/wix/test/WixToolsetTest.CoreIntegration/ModuleFixture.cs58
-rw-r--r--src/wix/test/WixToolsetTest.CoreIntegration/TestData/Module/MergeModuleSubstitution.wxs17
-rw-r--r--src/wix/test/WixToolsetTest.CoreIntegration/TestData/Module/ModuleSubstitution.wxs11
6 files changed, 93 insertions, 3 deletions
diff --git a/src/api/wix/WixToolset.Data/WindowsInstaller/WindowsInstallerTableDefinitions.cs b/src/api/wix/WixToolset.Data/WindowsInstaller/WindowsInstallerTableDefinitions.cs
index b0fde6a7..9f0cdd96 100644
--- a/src/api/wix/WixToolset.Data/WindowsInstaller/WindowsInstallerTableDefinitions.cs
+++ b/src/api/wix/WixToolset.Data/WindowsInstaller/WindowsInstallerTableDefinitions.cs
@@ -1455,7 +1455,7 @@ namespace WixToolset.Data.WindowsInstaller
1455 SymbolDefinitions.ModuleConfiguration, 1455 SymbolDefinitions.ModuleConfiguration,
1456 new[] 1456 new[]
1457 { 1457 {
1458 new ColumnDefinition("Name", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Unique identifier for this row."), 1458 new ColumnDefinition("Name", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Unique identifier for this row.", modularizeType: ColumnModularizeType.None),
1459 new ColumnDefinition("Format", ColumnType.Number, 2, primaryKey: false, nullable: false, ColumnCategory.Unknown, minValue: 0, maxValue: 3, description: "Format of this item."), 1459 new ColumnDefinition("Format", ColumnType.Number, 2, primaryKey: false, nullable: false, ColumnCategory.Unknown, minValue: 0, maxValue: 3, description: "Format of this item."),
1460 new ColumnDefinition("Type", ColumnType.String, 72, primaryKey: false, nullable: true, ColumnCategory.Text, description: "Additional type information for this item."), 1460 new ColumnDefinition("Type", ColumnType.String, 72, primaryKey: false, nullable: true, ColumnCategory.Text, description: "Additional type information for this item."),
1461 new ColumnDefinition("ContextData", ColumnType.Localized, 0, primaryKey: false, nullable: true, ColumnCategory.Text, description: "Additional context information about this item."), 1461 new ColumnDefinition("ContextData", ColumnType.Localized, 0, primaryKey: false, nullable: true, ColumnCategory.Text, description: "Additional context information about this item."),
diff --git a/src/wix/WixToolset.Core.WindowsInstaller/Bind/BindDatabaseCommand.cs b/src/wix/WixToolset.Core.WindowsInstaller/Bind/BindDatabaseCommand.cs
index a1ec24f4..4db1bfbe 100644
--- a/src/wix/WixToolset.Core.WindowsInstaller/Bind/BindDatabaseCommand.cs
+++ b/src/wix/WixToolset.Core.WindowsInstaller/Bind/BindDatabaseCommand.cs
@@ -58,7 +58,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
58 58
59 private IWindowsInstallerBackendHelper WindowsInstallerBackendHelper { get; } 59 private IWindowsInstallerBackendHelper WindowsInstallerBackendHelper { get; }
60 60
61 private IFileSystem FileSystem { get; } 61 private IFileSystem FileSystem { get; }
62 62
63 private IPathResolver PathResolver { get; } 63 private IPathResolver PathResolver { get; }
64 64
@@ -477,7 +477,10 @@ namespace WixToolset.Core.WindowsInstaller.Bind
477 var command = new MergeModulesCommand(this.Messaging, this.WindowsInstallerBackendHelper, fileFacadesFromModule, section, suppressedTableNames, this.OutputPath, this.IntermediateFolder); 477 var command = new MergeModulesCommand(this.Messaging, this.WindowsInstallerBackendHelper, fileFacadesFromModule, section, suppressedTableNames, this.OutputPath, this.IntermediateFolder);
478 command.Execute(); 478 command.Execute();
479 479
480 trackedFiles.AddRange(command.TrackedFiles); 480 if (command.TrackedFiles != null)
481 {
482 trackedFiles.AddRange(command.TrackedFiles);
483 }
481 } 484 }
482 485
483 if (this.Messaging.EncounteredError) 486 if (this.Messaging.EncounteredError)
diff --git a/src/wix/WixToolset.Core.WindowsInstaller/Bind/CreateWindowsInstallerDataFromIRCommand.cs b/src/wix/WixToolset.Core.WindowsInstaller/Bind/CreateWindowsInstallerDataFromIRCommand.cs
index 18914745..234cad4a 100644
--- a/src/wix/WixToolset.Core.WindowsInstaller/Bind/CreateWindowsInstallerDataFromIRCommand.cs
+++ b/src/wix/WixToolset.Core.WindowsInstaller/Bind/CreateWindowsInstallerDataFromIRCommand.cs
@@ -148,6 +148,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
148 break; 148 break;
149 149
150 case SymbolDefinitionType.ModuleSubstitution: 150 case SymbolDefinitionType.ModuleSubstitution:
151 this.AddSymbolDefaultly(symbol);
151 this.EnsureModuleIgnoredTable(symbol, "ModuleSubstitution"); 152 this.EnsureModuleIgnoredTable(symbol, "ModuleSubstitution");
152 break; 153 break;
153 154
diff --git a/src/wix/test/WixToolsetTest.CoreIntegration/ModuleFixture.cs b/src/wix/test/WixToolsetTest.CoreIntegration/ModuleFixture.cs
index eadc70aa..3e42431e 100644
--- a/src/wix/test/WixToolsetTest.CoreIntegration/ModuleFixture.cs
+++ b/src/wix/test/WixToolsetTest.CoreIntegration/ModuleFixture.cs
@@ -14,6 +14,64 @@ namespace WixToolsetTest.CoreIntegration
14 public class ModuleFixture 14 public class ModuleFixture
15 { 15 {
16 [Fact] 16 [Fact]
17 public void CanBuildAndMergeModuleWithSubstitution()
18 {
19 var folder = TestData.Get(@"TestData", "Module");
20
21 using (var fs = new DisposableFileSystem())
22 {
23 var intermediateFolder = fs.GetFolder();
24 var msmIntermediatePath = Path.Combine(intermediateFolder, "msm");
25 var msmPath = Path.Combine(msmIntermediatePath, "test.msm");
26
27 var msiIntermediatePath = Path.Combine(intermediateFolder, "msi");
28 var msiPath = Path.Combine(msiIntermediatePath, "test.msi");
29
30 // Build the MSM.
31 var result = WixRunner.Execute(new[]
32 {
33 "build",
34 Path.Combine(folder, "ModuleSubstitution.wxs"),
35 "-intermediateFolder", msmIntermediatePath,
36 "-sw1079",
37 "-o", msmPath
38 });
39
40 result.AssertSuccess();
41
42 // Verify the MSM.
43 var rows = Query.QueryDatabase(msmPath, new[] { "CustomAction", "ModuleConfiguration", "ModuleSubstitution" });
44 WixAssert.CompareLineByLine(new[]
45 {
46 "CustomAction:setCONFIGTEST.DC68E039_E0C8_49FB_B5E6_37F9569188E5\t51\tmsmCONFIGTEST.DC68E039_E0C8_49FB_B5E6_37F9569188E5\t[msmCONFIGTEST.DC68E039_E0C8_49FB_B5E6_37F9569188E5]\t",
47 "ModuleConfiguration:CONFIGTEST\t0\t\t\t\t0\t\t\t\t",
48 "ModuleSubstitution:CustomAction\tsetCONFIGTEST.DC68E039_E0C8_49FB_B5E6_37F9569188E5\tTarget\t[=CONFIGTEST]"
49 }, rows);
50
51 // Merge the module into an MSI.
52 result = WixRunner.Execute(new[]
53 {
54 "build",
55 Path.Combine(folder, "MergeModuleSubstitution.wxs"),
56 "-bindpath", msmIntermediatePath,
57 "-intermediateFolder", msiIntermediatePath,
58 "-o", msiPath
59 });
60
61 result.AssertSuccess();
62
63 // Verify the MSI.
64 rows = Query.QueryDatabase(msiPath, new[] { "CustomAction", "ModuleConfiguration", "ModuleSubstitution" });
65 WixAssert.CompareLineByLine(new[]
66 {
67 "CustomAction:setCONFIGTEST.DC68E039_E0C8_49FB_B5E6_37F9569188E5\t51\tmsmCONFIGTEST.DC68E039_E0C8_49FB_B5E6_37F9569188E5\tTestingTesting123\t"
68 }, rows);
69
70 result.AssertSuccess();
71 }
72 }
73
74 [Fact]
17 public void CanSuppressModularization() 75 public void CanSuppressModularization()
18 { 76 {
19 var folder = TestData.Get(@"TestData\SuppressModularization"); 77 var folder = TestData.Get(@"TestData\SuppressModularization");
diff --git a/src/wix/test/WixToolsetTest.CoreIntegration/TestData/Module/MergeModuleSubstitution.wxs b/src/wix/test/WixToolsetTest.CoreIntegration/TestData/Module/MergeModuleSubstitution.wxs
new file mode 100644
index 00000000..0afd79b2
--- /dev/null
+++ b/src/wix/test/WixToolsetTest.CoreIntegration/TestData/Module/MergeModuleSubstitution.wxs
@@ -0,0 +1,17 @@
1<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
2 <Package Name="MergeModuleSubstitution" Language="1033" Version="1.0.0.0" Manufacturer="Example Corporation" UpgradeCode="047730a5-30fe-4a62-a520-da9381b8226a">
3 <MajorUpgrade DowngradeErrorMessage="Downgrade message" />
4
5 <Feature Id="Main">
6 <MergeRef Id="TestMsm" />
7 </Feature>
8
9 <StandardDirectory Id="ProgramFilesFolder">
10 <Directory Id="INSTALLFOLDER" Name="MsiPackage">
11 <Merge Id="TestMsm" Language="1033" SourceFile="test.msm">
12 <ConfigurationData Name="CONFIGTEST" Value="TestingTesting123" />
13 </Merge>
14 </Directory>
15 </StandardDirectory>
16 </Package>
17</Wix>
diff --git a/src/wix/test/WixToolsetTest.CoreIntegration/TestData/Module/ModuleSubstitution.wxs b/src/wix/test/WixToolsetTest.CoreIntegration/TestData/Module/ModuleSubstitution.wxs
new file mode 100644
index 00000000..0ada31b9
--- /dev/null
+++ b/src/wix/test/WixToolsetTest.CoreIntegration/TestData/Module/ModuleSubstitution.wxs
@@ -0,0 +1,11 @@
1<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
2 <Module Id="MergeModule.v4" Guid="dc68e039-e0c8-49fb-b5e6-37f9569188e5" Language="1033" Version="1.0.0.0">
3 <SummaryInformation Manufacturer="Manufacturer" />
4
5 <Configuration Name='CONFIGTEST' Format='Text'/>
6 <Substitution Table='CustomAction' Row='setCONFIGTEST' Column='Target' Value='[=CONFIGTEST]'/>
7
8 <Property Id="msmCONFIGTEST" Value="failure"/>
9 <CustomAction Id='setCONFIGTEST' Property='msmCONFIGTEST' Value='[msmCONFIGTEST]'/>
10 </Module>
11</Wix>