aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/api/wix/WixToolset.Data/Symbols/SymbolDefinitions.cs1
-rw-r--r--src/wix/WixToolset.Core.WindowsInstaller/Bind/CreateWindowsInstallerDataFromIRCommand.cs11
-rw-r--r--src/wix/WixToolset.Core/ExtensibilityServices/ParseHelper.cs17
-rw-r--r--src/wix/test/Example.Extension/ExampleExtensionData.cs2
-rw-r--r--src/wix/test/WixToolsetTest.CoreIntegration/MsiFixture.cs8
-rw-r--r--src/wix/test/WixToolsetTest.CoreIntegration/MsiQueryFixture.cs38
-rw-r--r--src/wix/test/WixToolsetTest.CoreIntegration/TestData/EnsureTable/EnsureExtensionTable.wxs (renamed from src/wix/test/WixToolsetTest.CoreIntegration/TestData/EnsureTable/EnsureTable.wxs)0
-rw-r--r--src/wix/test/WixToolsetTest.CoreIntegration/TestData/EnsureTable/EnsureModuleSignature.wxs10
8 files changed, 60 insertions, 27 deletions
diff --git a/src/api/wix/WixToolset.Data/Symbols/SymbolDefinitions.cs b/src/api/wix/WixToolset.Data/Symbols/SymbolDefinitions.cs
index ad7646a7..21ca1b6d 100644
--- a/src/api/wix/WixToolset.Data/Symbols/SymbolDefinitions.cs
+++ b/src/api/wix/WixToolset.Data/Symbols/SymbolDefinitions.cs
@@ -57,6 +57,7 @@ namespace WixToolset.Data
57 ModuleExclusion, 57 ModuleExclusion,
58 ModuleIgnoreTable, 58 ModuleIgnoreTable,
59 WixModule, 59 WixModule,
60 ModuleSignature,
60 ModuleSubstitution, 61 ModuleSubstitution,
61 MoveFile, 62 MoveFile,
62 Assembly, 63 Assembly,
diff --git a/src/wix/WixToolset.Core.WindowsInstaller/Bind/CreateWindowsInstallerDataFromIRCommand.cs b/src/wix/WixToolset.Core.WindowsInstaller/Bind/CreateWindowsInstallerDataFromIRCommand.cs
index b1805e69..a4f6200e 100644
--- a/src/wix/WixToolset.Core.WindowsInstaller/Bind/CreateWindowsInstallerDataFromIRCommand.cs
+++ b/src/wix/WixToolset.Core.WindowsInstaller/Bind/CreateWindowsInstallerDataFromIRCommand.cs
@@ -1224,8 +1224,15 @@ namespace WixToolset.Core.WindowsInstaller.Bind
1224 1224
1225 private void AddWixEnsureTableSymbol(WixEnsureTableSymbol symbol) 1225 private void AddWixEnsureTableSymbol(WixEnsureTableSymbol symbol)
1226 { 1226 {
1227 var tableDefinition = this.TableDefinitions[symbol.Table]; 1227 try
1228 this.Data.EnsureTable(tableDefinition); 1228 {
1229 var tableDefinition = this.TableDefinitions[symbol.Table];
1230 this.Data.EnsureTable(tableDefinition);
1231 }
1232 catch (WixMissingTableDefinitionException e)
1233 {
1234 this.Messaging.Write(e.Error);
1235 }
1229 } 1236 }
1230 1237
1231 private void AddWixPackageSymbol(WixPackageSymbol symbol) 1238 private void AddWixPackageSymbol(WixPackageSymbol symbol)
diff --git a/src/wix/WixToolset.Core/ExtensibilityServices/ParseHelper.cs b/src/wix/WixToolset.Core/ExtensibilityServices/ParseHelper.cs
index 2d5c5b2e..654b56dc 100644
--- a/src/wix/WixToolset.Core/ExtensibilityServices/ParseHelper.cs
+++ b/src/wix/WixToolset.Core/ExtensibilityServices/ParseHelper.cs
@@ -306,9 +306,6 @@ namespace WixToolset.Core.ExtensibilityServices
306 { 306 {
307 Table = tableDefinition.Name, 307 Table = tableDefinition.Name,
308 }); 308 });
309
310 // TODO: Check if the given table definition is a custom table. For now we have to assume that it isn't.
311 //this.CreateSimpleReference(section, sourceLineNumbers, SymbolDefinitions.WixCustomTable, tableDefinition.Name);
312 } 309 }
313 310
314 public void EnsureTable(IntermediateSection section, SourceLineNumber sourceLineNumbers, string tableName) 311 public void EnsureTable(IntermediateSection section, SourceLineNumber sourceLineNumbers, string tableName)
@@ -317,20 +314,6 @@ namespace WixToolset.Core.ExtensibilityServices
317 { 314 {
318 Table = tableName, 315 Table = tableName,
319 }); 316 });
320
321 if (this.Creator == null)
322 {
323 this.CreateSymbolDefinitionCreator();
324 }
325
326 // TODO: The tableName may not be the same as the symbolName. For now, we have to assume that it is.
327 // We don't add custom table definitions to the tableDefinitions collection,
328 // so if it's not in there, it better be a custom table. If the Id is just wrong,
329 // instead of a custom table, we get an unresolved reference at link time.
330 if (!this.Creator.TryGetSymbolDefinitionByName(tableName, out var _))
331 {
332 this.CreateSimpleReference(section, sourceLineNumbers, SymbolDefinitions.WixCustomTable, tableName);
333 }
334 } 317 }
335 318
336 public string GetAttributeGuidValue(SourceLineNumber sourceLineNumbers, XAttribute attribute, bool generatable = false, bool canBeEmpty = false) 319 public string GetAttributeGuidValue(SourceLineNumber sourceLineNumbers, XAttribute attribute, bool generatable = false, bool canBeEmpty = false)
diff --git a/src/wix/test/Example.Extension/ExampleExtensionData.cs b/src/wix/test/Example.Extension/ExampleExtensionData.cs
index 91d60eb9..e8ae0cca 100644
--- a/src/wix/test/Example.Extension/ExampleExtensionData.cs
+++ b/src/wix/test/Example.Extension/ExampleExtensionData.cs
@@ -20,4 +20,4 @@ namespace Example.Extension
20 return symbolDefinition != null; 20 return symbolDefinition != null;
21 } 21 }
22 } 22 }
23} \ No newline at end of file 23}
diff --git a/src/wix/test/WixToolsetTest.CoreIntegration/MsiFixture.cs b/src/wix/test/WixToolsetTest.CoreIntegration/MsiFixture.cs
index 67a5f132..cb1ecb04 100644
--- a/src/wix/test/WixToolsetTest.CoreIntegration/MsiFixture.cs
+++ b/src/wix/test/WixToolsetTest.CoreIntegration/MsiFixture.cs
@@ -846,8 +846,8 @@ namespace WixToolsetTest.CoreIntegration
846 } 846 }
847 } 847 }
848 848
849 [Fact(Skip = "Test demonstrates failure")] 849 [Fact]
850 public void FailsBuildAtLinkTimeForMissingEnsureTable() 850 public void FailsBuildAtBindTimeForMissingEnsureTable()
851 { 851 {
852 var folder = TestData.Get(@"TestData"); 852 var folder = TestData.Get(@"TestData");
853 var extensionPath = Path.GetFullPath(new Uri(typeof(ExampleExtensionFactory).Assembly.CodeBase).LocalPath); 853 var extensionPath = Path.GetFullPath(new Uri(typeof(ExampleExtensionFactory).Assembly.CodeBase).LocalPath);
@@ -873,7 +873,7 @@ namespace WixToolsetTest.CoreIntegration
873 first => 873 first =>
874 { 874 {
875 Assert.Equal(MessageLevel.Error, first.Level); 875 Assert.Equal(MessageLevel.Error, first.Level);
876 Assert.Equal("The identifier 'WixCustomTable:TableDefinitionNotExposedByExtension' could not be found. Ensure you have typed the reference correctly and that all the necessary inputs are provided to the linker.", first.ToString()); 876 Assert.Equal("Cannot find the table definitions for the 'TableDefinitionNotExposedByExtension' table. This is likely due to a typing error or missing extension. Please ensure all the necessary extensions are supplied on the command line with the -ext parameter.", first.ToString());
877 }); 877 });
878 878
879 Assert.False(File.Exists(msiPath)); 879 Assert.False(File.Exists(msiPath));
@@ -884,7 +884,7 @@ namespace WixToolsetTest.CoreIntegration
884 { 884 {
885 return table.Rows.Select(r => JoinFields(r.Fields)).ToArray(); 885 return table.Rows.Select(r => JoinFields(r.Fields)).ToArray();
886 886
887 string JoinFields(Field[] fields) 887 static string JoinFields(Field[] fields)
888 { 888 {
889 return String.Join('\t', fields.Select(f => f.ToString())); 889 return String.Join('\t', fields.Select(f => f.ToString()));
890 } 890 }
diff --git a/src/wix/test/WixToolsetTest.CoreIntegration/MsiQueryFixture.cs b/src/wix/test/WixToolsetTest.CoreIntegration/MsiQueryFixture.cs
index f361a274..e94114bb 100644
--- a/src/wix/test/WixToolsetTest.CoreIntegration/MsiQueryFixture.cs
+++ b/src/wix/test/WixToolsetTest.CoreIntegration/MsiQueryFixture.cs
@@ -334,8 +334,40 @@ namespace WixToolsetTest.CoreIntegration
334 } 334 }
335 } 335 }
336 336
337 [Fact(Skip = "Test demonstrates failure")] 337 [Fact]
338 public void PopulatesExampleTableBecauseOfEnsureTable() 338 public void CanBuildMsiWithEmptyStandardTableBecauseOfEnsureTable()
339 {
340 var folder = TestData.Get(@"TestData");
341 var extensionPath = Path.GetFullPath(new Uri(typeof(ExampleExtensionFactory).Assembly.CodeBase).LocalPath);
342
343 using (var fs = new DisposableFileSystem())
344 {
345 var baseFolder = fs.GetFolder();
346 var intermediateFolder = Path.Combine(baseFolder, "obj");
347 var msiPath = Path.Combine(baseFolder, @"bin\test.msi");
348
349 var result = WixRunner.Execute(new[]
350 {
351 "build",
352 Path.Combine(folder, "EnsureTable", "EnsureModuleSignature.wxs"),
353 Path.Combine(folder, "ProductWithComponentGroupRef", "MinimalComponentGroup.wxs"),
354 Path.Combine(folder, "ProductWithComponentGroupRef", "Product.wxs"),
355 "-ext", extensionPath,
356 "-bindpath", Path.Combine(folder, "SingleFile", "data"),
357 "-intermediateFolder", intermediateFolder,
358 "-o", msiPath
359 });
360
361 result.AssertSuccess();
362
363 Assert.True(File.Exists(msiPath));
364 var results = Query.QueryDatabaseByTable(msiPath, new[] { "ModuleSignature" });
365 WixAssert.StringCollectionEmpty(results["ModuleSignature"]);
366 }
367 }
368
369 [Fact]
370 public void CanBuildMsiWithEmptyTableFromExtensionBecauseOfEnsureTable()
339 { 371 {
340 var folder = TestData.Get(@"TestData"); 372 var folder = TestData.Get(@"TestData");
341 var extensionPath = Path.GetFullPath(new Uri(typeof(ExampleExtensionFactory).Assembly.CodeBase).LocalPath); 373 var extensionPath = Path.GetFullPath(new Uri(typeof(ExampleExtensionFactory).Assembly.CodeBase).LocalPath);
@@ -349,7 +381,7 @@ namespace WixToolsetTest.CoreIntegration
349 var result = WixRunner.Execute(new[] 381 var result = WixRunner.Execute(new[]
350 { 382 {
351 "build", 383 "build",
352 Path.Combine(folder, "EnsureTable", "EnsureTable.wxs"), 384 Path.Combine(folder, "EnsureTable", "EnsureExtensionTable.wxs"),
353 Path.Combine(folder, "ProductWithComponentGroupRef", "MinimalComponentGroup.wxs"), 385 Path.Combine(folder, "ProductWithComponentGroupRef", "MinimalComponentGroup.wxs"),
354 Path.Combine(folder, "ProductWithComponentGroupRef", "Product.wxs"), 386 Path.Combine(folder, "ProductWithComponentGroupRef", "Product.wxs"),
355 "-ext", extensionPath, 387 "-ext", extensionPath,
diff --git a/src/wix/test/WixToolsetTest.CoreIntegration/TestData/EnsureTable/EnsureTable.wxs b/src/wix/test/WixToolsetTest.CoreIntegration/TestData/EnsureTable/EnsureExtensionTable.wxs
index 01767abb..01767abb 100644
--- a/src/wix/test/WixToolsetTest.CoreIntegration/TestData/EnsureTable/EnsureTable.wxs
+++ b/src/wix/test/WixToolsetTest.CoreIntegration/TestData/EnsureTable/EnsureExtensionTable.wxs
diff --git a/src/wix/test/WixToolsetTest.CoreIntegration/TestData/EnsureTable/EnsureModuleSignature.wxs b/src/wix/test/WixToolsetTest.CoreIntegration/TestData/EnsureTable/EnsureModuleSignature.wxs
new file mode 100644
index 00000000..a7bc1ff2
--- /dev/null
+++ b/src/wix/test/WixToolsetTest.CoreIntegration/TestData/EnsureTable/EnsureModuleSignature.wxs
@@ -0,0 +1,10 @@
1<?xml version="1.0" encoding="utf-8"?>
2<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
3 <Fragment>
4 <ComponentGroup Id="ProductComponents">
5 <ComponentGroupRef Id="MinimalComponentGroup" />
6 </ComponentGroup>
7
8 <EnsureTable Id="ModuleSignature" />
9 </Fragment>
10</Wix>