aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/WixToolset.Core/Bind/ExtractEmbeddedFiles.cs7
-rw-r--r--src/WixToolset.Core/CommandLine/BuildCommand.cs4
-rw-r--r--src/WixToolset.Core/LinkContext.cs4
-rw-r--r--src/WixToolset.Core/Linker.cs52
-rw-r--r--src/test/TestData/Example.Extension/Data/example.txt1
-rw-r--r--src/test/TestData/Example.Extension/Data/example.wirbin0 -> 534 bytes
-rw-r--r--src/test/TestData/Example.Extension/Data/example.wxs8
-rw-r--r--src/test/TestData/Example.Extension/Example.Extension.csproj (renamed from src/test/Example.Extension/Example.Extension.csproj)4
-rw-r--r--src/test/TestData/Example.Extension/ExampleCompilerExtension.cs (renamed from src/test/Example.Extension/ExampleCompilerExtension.cs)0
-rw-r--r--src/test/TestData/Example.Extension/ExampleExtensionData.cs (renamed from src/test/Example.Extension/ExampleExtensionData.cs)2
-rw-r--r--src/test/TestData/Example.Extension/ExampleExtensionFactory.cs (renamed from src/test/Example.Extension/ExampleExtensionFactory.cs)0
-rw-r--r--src/test/TestData/Example.Extension/ExamplePreprocessorExtensionAndCommandLine.cs (renamed from src/test/Example.Extension/ExamplePreprocessorExtensionAndCommandLine.cs)0
-rw-r--r--src/test/TestData/Example.Extension/ExampleTuple.cs (renamed from src/test/Example.Extension/ExampleTuple.cs)0
-rw-r--r--src/test/TestData/Example.Extension/TupleDefinitions.cs (renamed from src/test/Example.Extension/TupleDefinitions.cs)0
-rw-r--r--src/test/WixToolsetTest.CoreIntegration/ExtensionFixture.cs6
-rw-r--r--src/test/WixToolsetTest.CoreIntegration/TestData/ExampleExtension/Package.wxs2
-rw-r--r--src/test/WixToolsetTest.CoreIntegration/WixToolsetTest.CoreIntegration.csproj2
17 files changed, 40 insertions, 52 deletions
diff --git a/src/WixToolset.Core/Bind/ExtractEmbeddedFiles.cs b/src/WixToolset.Core/Bind/ExtractEmbeddedFiles.cs
index 28fc4817..c6e21973 100644
--- a/src/WixToolset.Core/Bind/ExtractEmbeddedFiles.cs
+++ b/src/WixToolset.Core/Bind/ExtractEmbeddedFiles.cs
@@ -28,19 +28,16 @@ namespace WixToolset.Core.Bind
28 /// <returns>The extract path for the embedded file.</returns> 28 /// <returns>The extract path for the embedded file.</returns>
29 public string AddEmbeddedFileIndex(Uri uri, int embeddedFileIndex, string tempPath) 29 public string AddEmbeddedFileIndex(Uri uri, int embeddedFileIndex, string tempPath)
30 { 30 {
31 string extractPath;
32 SortedList<int, string> extracts;
33
34 // If the uri to the file that contains the embedded file does not already have embedded files 31 // If the uri to the file that contains the embedded file does not already have embedded files
35 // being extracted, create the dictionary to track that. 32 // being extracted, create the dictionary to track that.
36 if (!filesWithEmbeddedFiles.TryGetValue(uri, out extracts)) 33 if (!filesWithEmbeddedFiles.TryGetValue(uri, out var extracts))
37 { 34 {
38 extracts = new SortedList<int, string>(); 35 extracts = new SortedList<int, string>();
39 filesWithEmbeddedFiles.Add(uri, extracts); 36 filesWithEmbeddedFiles.Add(uri, extracts);
40 } 37 }
41 38
42 // If the embedded file is not already tracked in the dictionary of extracts, add it. 39 // If the embedded file is not already tracked in the dictionary of extracts, add it.
43 if (!extracts.TryGetValue(embeddedFileIndex, out extractPath)) 40 if (!extracts.TryGetValue(embeddedFileIndex, out var extractPath))
44 { 41 {
45 string localFileNameWithoutExtension = Path.GetFileNameWithoutExtension(uri.LocalPath); 42 string localFileNameWithoutExtension = Path.GetFileNameWithoutExtension(uri.LocalPath);
46 string unique = this.HashUri(uri.AbsoluteUri); 43 string unique = this.HashUri(uri.AbsoluteUri);
diff --git a/src/WixToolset.Core/CommandLine/BuildCommand.cs b/src/WixToolset.Core/CommandLine/BuildCommand.cs
index 79bacd22..7a63b869 100644
--- a/src/WixToolset.Core/CommandLine/BuildCommand.cs
+++ b/src/WixToolset.Core/CommandLine/BuildCommand.cs
@@ -168,8 +168,10 @@ namespace WixToolset.Core
168 var context = this.ServiceProvider.GetService<ILinkContext>(); 168 var context = this.ServiceProvider.GetService<ILinkContext>();
169 context.Messaging = Messaging.Instance; 169 context.Messaging = Messaging.Instance;
170 context.Extensions = this.ExtensionManager.Create<ILinkerExtension>(); 170 context.Extensions = this.ExtensionManager.Create<ILinkerExtension>();
171 context.Intermediates = intermediates.Union(libraries).ToList(); 171 context.ExtensionData = this.ExtensionManager.Create<IExtensionData>();
172 context.ExpectedOutputType = this.OutputType; 172 context.ExpectedOutputType = this.OutputType;
173 context.Intermediates = intermediates.Union(libraries).ToList();
174 context.TupleDefinitionCreator = creator;
173 175
174 var linker = new Linker(); 176 var linker = new Linker();
175 var output = linker.Link(context); 177 var output = linker.Link(context);
diff --git a/src/WixToolset.Core/LinkContext.cs b/src/WixToolset.Core/LinkContext.cs
index c3631f72..1384cf98 100644
--- a/src/WixToolset.Core/LinkContext.cs
+++ b/src/WixToolset.Core/LinkContext.cs
@@ -21,8 +21,12 @@ namespace WixToolset.Core
21 21
22 public IEnumerable<ILinkerExtension> Extensions { get; set; } 22 public IEnumerable<ILinkerExtension> Extensions { get; set; }
23 23
24 public IEnumerable<IExtensionData> ExtensionData { get; set; }
25
24 public OutputType ExpectedOutputType { get; set; } 26 public OutputType ExpectedOutputType { get; set; }
25 27
26 public IEnumerable<Intermediate> Intermediates { get; set; } 28 public IEnumerable<Intermediate> Intermediates { get; set; }
29
30 public ITupleDefinitionCreator TupleDefinitionCreator { get; set; }
27 } 31 }
28} 32}
diff --git a/src/WixToolset.Core/Linker.cs b/src/WixToolset.Core/Linker.cs
index 7faf69ba..c893a01d 100644
--- a/src/WixToolset.Core/Linker.cs
+++ b/src/WixToolset.Core/Linker.cs
@@ -56,32 +56,6 @@ namespace WixToolset.Core
56 //internal IBindVariableResolver WixVariableResolver { get; set; } 56 //internal IBindVariableResolver WixVariableResolver { get; set; }
57 57
58 /// <summary> 58 /// <summary>
59 /// Adds an extension.
60 /// </summary>
61 /// <param name="extension">The extension to add.</param>
62 //public void AddExtensionData(IExtensionData extension)
63 //{
64 // if (null != extension.TableDefinitions)
65 // {
66 // foreach (TableDefinition tableDefinition in extension.TableDefinitions)
67 // {
68 // if (!this.tableDefinitions.Contains(tableDefinition.Name))
69 // {
70 // this.tableDefinitions.Add(tableDefinition);
71 // }
72 // else
73 // {
74 // throw new WixException(WixErrors.DuplicateExtensionTable(extension.GetType().ToString(), tableDefinition.Name));
75 // }
76 // }
77 // }
78
79 // // keep track of extension data so the libraries can be loaded from these later once all the table definitions
80 // // are loaded; this will allow extensions to have cross table definition dependencies
81 // this.extensionData.Add(extension);
82 //}
83
84 /// <summary>
85 /// Links a collection of sections into an output. 59 /// Links a collection of sections into an output.
86 /// </summary> 60 /// </summary>
87 /// <param name="inputs">The collection of sections to link together.</param> 61 /// <param name="inputs">The collection of sections to link together.</param>
@@ -91,10 +65,19 @@ namespace WixToolset.Core
91 { 65 {
92 this.Context = context ?? throw new ArgumentNullException(nameof(context)); 66 this.Context = context ?? throw new ArgumentNullException(nameof(context));
93 67
94 //IEnumerable<Section> inputs, OutputType expectedOutputType
95
96 var sections = this.Context.Intermediates.SelectMany(i => i.Sections).ToList(); 68 var sections = this.Context.Intermediates.SelectMany(i => i.Sections).ToList();
97 69
70 // Add sections from the extensions with data.
71 foreach (var data in context.ExtensionData)
72 {
73 var library = data.GetLibrary(context.TupleDefinitionCreator);
74
75 if (library != null)
76 {
77 sections.AddRange(library.Sections);
78 }
79 }
80
98#if MOVE_TO_BACKEND 81#if MOVE_TO_BACKEND
99 bool containsModuleSubstitution = false; 82 bool containsModuleSubstitution = false;
100 bool containsModuleConfiguration = false; 83 bool containsModuleConfiguration = false;
@@ -144,19 +127,6 @@ namespace WixToolset.Core
144 } 127 }
145#endif 128#endif
146 129
147#if TODO
148 // Add sections from the extensions with data.
149 foreach (IExtensionData data in this.extensionData)
150 {
151 Library library = data.GetLibrary(this.tableDefinitions);
152
153 if (null != library)
154 {
155 sections.AddRange(library.Sections);
156 }
157 }
158#endif
159
160 // First find the entry section and while processing all sections load all the symbols from all of the sections. 130 // First find the entry section and while processing all sections load all the symbols from all of the sections.
161 // sections.FindEntrySectionAndLoadSymbols(false, this, expectedOutputType, out entrySection, out allSymbols); 131 // sections.FindEntrySectionAndLoadSymbols(false, this, expectedOutputType, out entrySection, out allSymbols);
162 var find = new FindEntrySectionAndLoadSymbolsCommand(sections); 132 var find = new FindEntrySectionAndLoadSymbolsCommand(sections);
diff --git a/src/test/TestData/Example.Extension/Data/example.txt b/src/test/TestData/Example.Extension/Data/example.txt
new file mode 100644
index 00000000..1b4ffe8a
--- /dev/null
+++ b/src/test/TestData/Example.Extension/Data/example.txt
@@ -0,0 +1 @@
This is example.txt. \ No newline at end of file
diff --git a/src/test/TestData/Example.Extension/Data/example.wir b/src/test/TestData/Example.Extension/Data/example.wir
new file mode 100644
index 00000000..674f63fc
--- /dev/null
+++ b/src/test/TestData/Example.Extension/Data/example.wir
Binary files differ
diff --git a/src/test/TestData/Example.Extension/Data/example.wxs b/src/test/TestData/Example.Extension/Data/example.wxs
new file mode 100644
index 00000000..53531e99
--- /dev/null
+++ b/src/test/TestData/Example.Extension/Data/example.wxs
@@ -0,0 +1,8 @@
1<?xml version='1.0'?>
2<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
3 <Fragment>
4 <Property Id="PropertyFromExampleWir" Value="FromWir" />
5
6 <Binary Id="BinFromWir" SourceFile="example.txt" />
7 </Fragment>
8</Wix>
diff --git a/src/test/Example.Extension/Example.Extension.csproj b/src/test/TestData/Example.Extension/Example.Extension.csproj
index 80c64b25..d04ce553 100644
--- a/src/test/Example.Extension/Example.Extension.csproj
+++ b/src/test/TestData/Example.Extension/Example.Extension.csproj
@@ -8,6 +8,10 @@
8 </PropertyGroup> 8 </PropertyGroup>
9 9
10 <ItemGroup> 10 <ItemGroup>
11 <EmbeddedResource Include="Data\Example.wir" />
12 </ItemGroup>
13
14 <ItemGroup>
11 <ProjectReference Include="$(WixToolsetRootFolder)\Data\src\WixToolset.Data\WixToolset.Data.csproj" Condition=" '$(Configuration)' == 'Debug' And Exists('$(WixToolsetRootFolder)\Data\src\WixToolset.Data\WixToolset.Data.csproj') " /> 15 <ProjectReference Include="$(WixToolsetRootFolder)\Data\src\WixToolset.Data\WixToolset.Data.csproj" Condition=" '$(Configuration)' == 'Debug' And Exists('$(WixToolsetRootFolder)\Data\src\WixToolset.Data\WixToolset.Data.csproj') " />
12 <PackageReference Include="WixToolset.Data" Version="4.0.*" Condition=" '$(Configuration)' == 'Release' Or !Exists('$(WixToolsetRootFolder)\Data\src\WixToolset.Data\WixToolset.Data.csproj') " /> 16 <PackageReference Include="WixToolset.Data" Version="4.0.*" Condition=" '$(Configuration)' == 'Release' Or !Exists('$(WixToolsetRootFolder)\Data\src\WixToolset.Data\WixToolset.Data.csproj') " />
13 17
diff --git a/src/test/Example.Extension/ExampleCompilerExtension.cs b/src/test/TestData/Example.Extension/ExampleCompilerExtension.cs
index 5b20e48f..5b20e48f 100644
--- a/src/test/Example.Extension/ExampleCompilerExtension.cs
+++ b/src/test/TestData/Example.Extension/ExampleCompilerExtension.cs
diff --git a/src/test/Example.Extension/ExampleExtensionData.cs b/src/test/TestData/Example.Extension/ExampleExtensionData.cs
index c3cb0473..6b179ea6 100644
--- a/src/test/Example.Extension/ExampleExtensionData.cs
+++ b/src/test/TestData/Example.Extension/ExampleExtensionData.cs
@@ -11,7 +11,7 @@ namespace Example.Extension
11 11
12 public Intermediate GetLibrary(ITupleDefinitionCreator tupleDefinitions) 12 public Intermediate GetLibrary(ITupleDefinitionCreator tupleDefinitions)
13 { 13 {
14 return null; 14 return Intermediate.Load(typeof(ExampleExtensionData).Assembly, "Example.Extension.Data.Example.wir", tupleDefinitions);
15 } 15 }
16 16
17 public bool TryGetTupleDefinitionByName(string name, out IntermediateTupleDefinition tupleDefinition) 17 public bool TryGetTupleDefinitionByName(string name, out IntermediateTupleDefinition tupleDefinition)
diff --git a/src/test/Example.Extension/ExampleExtensionFactory.cs b/src/test/TestData/Example.Extension/ExampleExtensionFactory.cs
index b91d06e9..b91d06e9 100644
--- a/src/test/Example.Extension/ExampleExtensionFactory.cs
+++ b/src/test/TestData/Example.Extension/ExampleExtensionFactory.cs
diff --git a/src/test/Example.Extension/ExamplePreprocessorExtensionAndCommandLine.cs b/src/test/TestData/Example.Extension/ExamplePreprocessorExtensionAndCommandLine.cs
index 53394ea3..53394ea3 100644
--- a/src/test/Example.Extension/ExamplePreprocessorExtensionAndCommandLine.cs
+++ b/src/test/TestData/Example.Extension/ExamplePreprocessorExtensionAndCommandLine.cs
diff --git a/src/test/Example.Extension/ExampleTuple.cs b/src/test/TestData/Example.Extension/ExampleTuple.cs
index f280a5c8..f280a5c8 100644
--- a/src/test/Example.Extension/ExampleTuple.cs
+++ b/src/test/TestData/Example.Extension/ExampleTuple.cs
diff --git a/src/test/Example.Extension/TupleDefinitions.cs b/src/test/TestData/Example.Extension/TupleDefinitions.cs
index 2c320fbc..2c320fbc 100644
--- a/src/test/Example.Extension/TupleDefinitions.cs
+++ b/src/test/TestData/Example.Extension/TupleDefinitions.cs
diff --git a/src/test/WixToolsetTest.CoreIntegration/ExtensionFixture.cs b/src/test/WixToolsetTest.CoreIntegration/ExtensionFixture.cs
index 6acf3472..bd4b70da 100644
--- a/src/test/WixToolsetTest.CoreIntegration/ExtensionFixture.cs
+++ b/src/test/WixToolsetTest.CoreIntegration/ExtensionFixture.cs
@@ -44,13 +44,13 @@ namespace WixToolsetTest.CoreIntegration
44 Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\MsiPackage\example.txt"))); 44 Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\MsiPackage\example.txt")));
45 45
46 var intermediate = Intermediate.Load(Path.Combine(intermediateFolder, @"bin\extest.wir")); 46 var intermediate = Intermediate.Load(Path.Combine(intermediateFolder, @"bin\extest.wir"));
47 Assert.Single(intermediate.Sections); 47 var section = intermediate.Sections.Single();
48 48
49 var wixFile = intermediate.Sections.SelectMany(s => s.Tuples).OfType<WixFileTuple>().Single(); 49 var wixFile = section.Tuples.OfType<WixFileTuple>().Single();
50 Assert.Equal(Path.Combine(folder, @"data\example.txt"), wixFile[WixFileTupleFields.Source].AsPath().Path); 50 Assert.Equal(Path.Combine(folder, @"data\example.txt"), wixFile[WixFileTupleFields.Source].AsPath().Path);
51 Assert.Equal(@"example.txt", wixFile[WixFileTupleFields.Source].PreviousValue.AsPath().Path); 51 Assert.Equal(@"example.txt", wixFile[WixFileTupleFields.Source].PreviousValue.AsPath().Path);
52 52
53 var example = intermediate.Sections.SelectMany(s => s.Tuples).Where(t => t.Definition.Type == TupleDefinitionType.MustBeFromAnExtension).Single(); 53 var example = section.Tuples.Where(t => t.Definition.Type == TupleDefinitionType.MustBeFromAnExtension).Single();
54 Assert.Equal("Foo", example.Id.Id); 54 Assert.Equal("Foo", example.Id.Id);
55 Assert.Equal("Foo", example[0].AsString()); 55 Assert.Equal("Foo", example[0].AsString());
56 Assert.Equal("Bar", example[1].AsString()); 56 Assert.Equal("Bar", example[1].AsString());
diff --git a/src/test/WixToolsetTest.CoreIntegration/TestData/ExampleExtension/Package.wxs b/src/test/WixToolsetTest.CoreIntegration/TestData/ExampleExtension/Package.wxs
index 9fd42214..bff5f609 100644
--- a/src/test/WixToolsetTest.CoreIntegration/TestData/ExampleExtension/Package.wxs
+++ b/src/test/WixToolsetTest.CoreIntegration/TestData/ExampleExtension/Package.wxs
@@ -8,6 +8,8 @@
8 8
9 <Property Id="ExampleProperty" Value="$(ex.Test)" /> 9 <Property Id="ExampleProperty" Value="$(ex.Test)" />
10 10
11 <PropertyRef Id="PropertyFromExampleWir" />
12
11 <Feature Id="ProductFeature" Title="!(loc.FeatureTitle)"> 13 <Feature Id="ProductFeature" Title="!(loc.FeatureTitle)">
12 <ComponentGroupRef Id="ProductComponents" /> 14 <ComponentGroupRef Id="ProductComponents" />
13 </Feature> 15 </Feature>
diff --git a/src/test/WixToolsetTest.CoreIntegration/WixToolsetTest.CoreIntegration.csproj b/src/test/WixToolsetTest.CoreIntegration/WixToolsetTest.CoreIntegration.csproj
index ed0d5f5e..af520116 100644
--- a/src/test/WixToolsetTest.CoreIntegration/WixToolsetTest.CoreIntegration.csproj
+++ b/src/test/WixToolsetTest.CoreIntegration/WixToolsetTest.CoreIntegration.csproj
@@ -31,7 +31,7 @@
31 31
32 <ItemGroup> 32 <ItemGroup>
33 <ProjectReference Include="..\..\wix\wix.csproj" /> 33 <ProjectReference Include="..\..\wix\wix.csproj" />
34 <ProjectReference Include="..\Example.Extension\Example.Extension.csproj" /> 34 <ProjectReference Include="..\TestData\Example.Extension\Example.Extension.csproj" />
35 </ItemGroup> 35 </ItemGroup>
36 36
37 <ItemGroup> 37 <ItemGroup>