diff options
Diffstat (limited to 'src')
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> | ||
