diff options
Diffstat (limited to 'src')
6 files changed, 53 insertions, 12 deletions
diff --git a/src/WixToolset.Core.WindowsInstaller/Bind/CreateOutputFromIRCommand.cs b/src/WixToolset.Core.WindowsInstaller/Bind/CreateOutputFromIRCommand.cs index 4b02b3aa..6f33080d 100644 --- a/src/WixToolset.Core.WindowsInstaller/Bind/CreateOutputFromIRCommand.cs +++ b/src/WixToolset.Core.WindowsInstaller/Bind/CreateOutputFromIRCommand.cs | |||
@@ -232,9 +232,9 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
232 | attributes |= tuple.NeverOverwrite ? WindowsInstallerConstants.MsidbComponentAttributesNeverOverwrite : 0; | 232 | attributes |= tuple.NeverOverwrite ? WindowsInstallerConstants.MsidbComponentAttributesNeverOverwrite : 0; |
233 | attributes |= tuple.Permanent ? WindowsInstallerConstants.MsidbComponentAttributesPermanent : 0; | 233 | attributes |= tuple.Permanent ? WindowsInstallerConstants.MsidbComponentAttributesPermanent : 0; |
234 | attributes |= tuple.SharedDllRefCount ? WindowsInstallerConstants.MsidbComponentAttributesSharedDllRefCount : 0; | 234 | attributes |= tuple.SharedDllRefCount ? WindowsInstallerConstants.MsidbComponentAttributesSharedDllRefCount : 0; |
235 | attributes |= tuple.Shared ? WindowsInstallerConstants.MsidbComponentAttributesShared : 0; | ||
235 | attributes |= tuple.Transitive ? WindowsInstallerConstants.MsidbComponentAttributesTransitive : 0; | 236 | attributes |= tuple.Transitive ? WindowsInstallerConstants.MsidbComponentAttributesTransitive : 0; |
236 | attributes |= tuple.UninstallWhenSuperseded ? WindowsInstallerConstants.MsidbComponentAttributes64bit : 0; | 237 | attributes |= tuple.UninstallWhenSuperseded ? WindowsInstallerConstants.MsidbComponentAttributesUninstallOnSupersedence : 0; |
237 | |||
238 | attributes |= tuple.Win64 ? WindowsInstallerConstants.MsidbComponentAttributes64bit : 0; | 238 | attributes |= tuple.Win64 ? WindowsInstallerConstants.MsidbComponentAttributes64bit : 0; |
239 | 239 | ||
240 | var table = output.EnsureTable(this.TableDefinitions["Component"]); | 240 | var table = output.EnsureTable(this.TableDefinitions["Component"]); |
diff --git a/src/WixToolset.Core/Compiler.cs b/src/WixToolset.Core/Compiler.cs index 48e22f6d..25cc095b 100644 --- a/src/WixToolset.Core/Compiler.cs +++ b/src/WixToolset.Core/Compiler.cs | |||
@@ -2469,6 +2469,7 @@ namespace WixToolset.Core | |||
2469 | NeverOverwrite = neverOverwrite, | 2469 | NeverOverwrite = neverOverwrite, |
2470 | Permanent = permanent, | 2470 | Permanent = permanent, |
2471 | SharedDllRefCount = sharedDllRefCount, | 2471 | SharedDllRefCount = sharedDllRefCount, |
2472 | Shared = shared, | ||
2472 | Transitive = transitive, | 2473 | Transitive = transitive, |
2473 | UninstallWhenSuperseded = uninstallWhenSuperseded, | 2474 | UninstallWhenSuperseded = uninstallWhenSuperseded, |
2474 | Win64 = win64, | 2475 | Win64 = win64, |
diff --git a/src/test/WixToolsetTest.CoreIntegration/MsiFixture.cs b/src/test/WixToolsetTest.CoreIntegration/MsiFixture.cs index 3e66ad0a..0aabc5a9 100644 --- a/src/test/WixToolsetTest.CoreIntegration/MsiFixture.cs +++ b/src/test/WixToolsetTest.CoreIntegration/MsiFixture.cs | |||
@@ -43,7 +43,7 @@ namespace WixToolsetTest.CoreIntegration | |||
43 | var intermediate = Intermediate.Load(Path.Combine(intermediateFolder, @"test.wir")); | 43 | var intermediate = Intermediate.Load(Path.Combine(intermediateFolder, @"test.wir")); |
44 | var section = intermediate.Sections.Single(); | 44 | var section = intermediate.Sections.Single(); |
45 | 45 | ||
46 | var wixFile = section.Tuples.OfType<WixFileTuple>().Single(); | 46 | var wixFile = section.Tuples.OfType<WixFileTuple>().First(); |
47 | Assert.Equal(Path.Combine(folder, @"data\test.txt"), wixFile[WixFileTupleFields.Source].AsPath().Path); | 47 | Assert.Equal(Path.Combine(folder, @"data\test.txt"), wixFile[WixFileTupleFields.Source].AsPath().Path); |
48 | Assert.Equal(@"test.txt", wixFile[WixFileTupleFields.Source].PreviousValue.AsPath().Path); | 48 | Assert.Equal(@"test.txt", wixFile[WixFileTupleFields.Source].PreviousValue.AsPath().Path); |
49 | } | 49 | } |
@@ -540,6 +540,43 @@ namespace WixToolsetTest.CoreIntegration | |||
540 | } | 540 | } |
541 | 541 | ||
542 | [Fact] | 542 | [Fact] |
543 | public void CanBuildSharedComponent() | ||
544 | { | ||
545 | var folder = TestData.Get(@"TestData\SingleFile"); | ||
546 | |||
547 | using (var fs = new DisposableFileSystem()) | ||
548 | { | ||
549 | var baseFolder = fs.GetFolder(); | ||
550 | var intermediateFolder = Path.Combine(baseFolder, "obj"); | ||
551 | |||
552 | var result = WixRunner.Execute(new[] | ||
553 | { | ||
554 | "build", | ||
555 | Path.Combine(folder, "Package.wxs"), | ||
556 | Path.Combine(folder, "PackageComponents.wxs"), | ||
557 | "-loc", Path.Combine(folder, "Package.en-us.wxl"), | ||
558 | "-bindpath", Path.Combine(folder, "data"), | ||
559 | "-intermediateFolder", intermediateFolder, | ||
560 | "-arch", "x64", | ||
561 | "-o", Path.Combine(baseFolder, @"bin\test.msi") | ||
562 | }); | ||
563 | |||
564 | result.AssertSuccess(); | ||
565 | |||
566 | var intermediate = Intermediate.Load(Path.Combine(intermediateFolder, @"test.wir")); | ||
567 | var section = intermediate.Sections.Single(); | ||
568 | |||
569 | // Only one component is shared. | ||
570 | var sharedComponentTuples = section.Tuples.OfType<ComponentTuple>(); | ||
571 | Assert.Equal(1, sharedComponentTuples.Sum(t => t.Shared ? 1 : 0)); | ||
572 | |||
573 | // And it is this one. | ||
574 | var sharedComponentTuple = sharedComponentTuples.Single(t => t.Id.Id == "Shared.dll"); | ||
575 | Assert.True(sharedComponentTuple.Shared); | ||
576 | } | ||
577 | } | ||
578 | |||
579 | [Fact] | ||
543 | public void CanBuildSetProperty() | 580 | public void CanBuildSetProperty() |
544 | { | 581 | { |
545 | var folder = TestData.Get(@"TestData\SetProperty"); | 582 | var folder = TestData.Get(@"TestData\SetProperty"); |
diff --git a/src/test/WixToolsetTest.CoreIntegration/TestData/SingleFile/PackageComponents.wxs b/src/test/WixToolsetTest.CoreIntegration/TestData/SingleFile/PackageComponents.wxs index e26c4509..b8e9f59c 100644 --- a/src/test/WixToolsetTest.CoreIntegration/TestData/SingleFile/PackageComponents.wxs +++ b/src/test/WixToolsetTest.CoreIntegration/TestData/SingleFile/PackageComponents.wxs | |||
@@ -1,10 +1,13 @@ | |||
1 | <?xml version="1.0" encoding="utf-8"?> | 1 | <?xml version="1.0" encoding="utf-8"?> |
2 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> | 2 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> |
3 | <Fragment> | 3 | <Fragment> |
4 | <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER"> | 4 | <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER"> |
5 | <Component> | 5 | <Component> |
6 | <File Source="test.txt" /> | 6 | <File Source="test.txt" /> |
7 | </Component> | 7 | </Component> |
8 | </ComponentGroup> | 8 | <Component Id="Shared.dll" Shared="yes"> |
9 | </Fragment> | 9 | <File Name="Shared.dll" Source="test.txt" /> |
10 | </Component> | ||
11 | </ComponentGroup> | ||
12 | </Fragment> | ||
10 | </Wix> | 13 | </Wix> |
diff --git a/src/test/WixToolsetTest.CoreIntegration/WixiplFixture.cs b/src/test/WixToolsetTest.CoreIntegration/WixiplFixture.cs index c52fa68f..391b7021 100644 --- a/src/test/WixToolsetTest.CoreIntegration/WixiplFixture.cs +++ b/src/test/WixToolsetTest.CoreIntegration/WixiplFixture.cs | |||
@@ -50,7 +50,7 @@ namespace WixToolsetTest.CoreIntegration | |||
50 | var intermediate = Intermediate.Load(Path.Combine(baseFolder, @"obj\test.wir")); | 50 | var intermediate = Intermediate.Load(Path.Combine(baseFolder, @"obj\test.wir")); |
51 | var section = intermediate.Sections.Single(); | 51 | var section = intermediate.Sections.Single(); |
52 | 52 | ||
53 | var wixFile = section.Tuples.OfType<WixFileTuple>().Single(); | 53 | var wixFile = section.Tuples.OfType<WixFileTuple>().First(); |
54 | Assert.Equal(Path.Combine(folder, @"data\test.txt"), wixFile[WixFileTupleFields.Source].AsPath().Path); | 54 | Assert.Equal(Path.Combine(folder, @"data\test.txt"), wixFile[WixFileTupleFields.Source].AsPath().Path); |
55 | Assert.Equal(@"test.txt", wixFile[WixFileTupleFields.Source].PreviousValue.AsPath().Path); | 55 | Assert.Equal(@"test.txt", wixFile[WixFileTupleFields.Source].PreviousValue.AsPath().Path); |
56 | } | 56 | } |
diff --git a/src/test/WixToolsetTest.CoreIntegration/WixlibFixture.cs b/src/test/WixToolsetTest.CoreIntegration/WixlibFixture.cs index 532f158d..07044a1f 100644 --- a/src/test/WixToolsetTest.CoreIntegration/WixlibFixture.cs +++ b/src/test/WixToolsetTest.CoreIntegration/WixlibFixture.cs | |||
@@ -50,7 +50,7 @@ namespace WixToolsetTest.CoreIntegration | |||
50 | var intermediate = Intermediate.Load(Path.Combine(baseFolder, @"obj\test.wir")); | 50 | var intermediate = Intermediate.Load(Path.Combine(baseFolder, @"obj\test.wir")); |
51 | var section = intermediate.Sections.Single(); | 51 | var section = intermediate.Sections.Single(); |
52 | 52 | ||
53 | var wixFile = section.Tuples.OfType<WixFileTuple>().Single(); | 53 | var wixFile = section.Tuples.OfType<WixFileTuple>().First(); |
54 | Assert.Equal(Path.Combine(folder, @"data\test.txt"), wixFile[WixFileTupleFields.Source].AsPath().Path); | 54 | Assert.Equal(Path.Combine(folder, @"data\test.txt"), wixFile[WixFileTupleFields.Source].AsPath().Path); |
55 | Assert.Equal(@"test.txt", wixFile[WixFileTupleFields.Source].PreviousValue.AsPath().Path); | 55 | Assert.Equal(@"test.txt", wixFile[WixFileTupleFields.Source].PreviousValue.AsPath().Path); |
56 | } | 56 | } |