diff options
| author | Rob Mensching <rob@firegiant.com> | 2025-12-13 20:23:23 -0800 |
|---|---|---|
| committer | Rob Mensching <rob@firegiant.com> | 2025-12-14 07:58:11 -0800 |
| commit | 84689a9b15900ece2c3c40f000416b5bba2c2059 (patch) | |
| tree | 4696fe9879bc56b6c31d3e05dfdbd8a701946449 | |
| parent | 7760a8b0d241223e0210c52d17b950f64629d2a4 (diff) | |
| download | wix-84689a9b15900ece2c3c40f000416b5bba2c2059.tar.gz wix-84689a9b15900ece2c3c40f000416b5bba2c2059.tar.bz2 wix-84689a9b15900ece2c3c40f000416b5bba2c2059.zip | |
Fix handling of default items
Fixes 7455
8 files changed, 113 insertions, 5 deletions
diff --git a/src/wix/WixToolset.Sdk/tools/wix.props b/src/wix/WixToolset.Sdk/tools/wix.props index af26f694..a7239225 100644 --- a/src/wix/WixToolset.Sdk/tools/wix.props +++ b/src/wix/WixToolset.Sdk/tools/wix.props | |||
| @@ -25,6 +25,18 @@ | |||
| 25 | <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | 25 | <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> |
| 26 | </PropertyGroup> | 26 | </PropertyGroup> |
| 27 | 27 | ||
| 28 | <!-- Default items --> | ||
| 29 | <ItemGroup Condition=" '$(EnableDefaultItems)' == 'true' "> | ||
| 30 | <Compile Include="**/*.wxs" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder)" Condition=" '$(EnableDefaultCompileItems)' == 'true' " /> | ||
| 31 | <EmbeddedResource Include="**/*.wxl" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder)" Condition=" '$(EnableDefaultEmbeddedResourceItems)' == 'true' " /> | ||
| 32 | </ItemGroup> | ||
| 33 | <ItemGroup Condition=" '$(EnableDefaultItems)' == 'true' And '$(EnableDefaultNoneItems)' == 'true' "> | ||
| 34 | <None Include="**/*" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder)" /> | ||
| 35 | <None Remove="**/*.wxs" /> | ||
| 36 | <None Remove="**/*.wxl" /> | ||
| 37 | <None Remove="**/*.wxi" /> | ||
| 38 | </ItemGroup> | ||
| 39 | |||
| 28 | <PropertyGroup> | 40 | <PropertyGroup> |
| 29 | <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences> | 41 | <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences> |
| 30 | <DisableTransitiveProjectReferences>true</DisableTransitiveProjectReferences> | 42 | <DisableTransitiveProjectReferences>true</DisableTransitiveProjectReferences> |
diff --git a/src/wix/WixToolset.Sdk/tools/wix.targets b/src/wix/WixToolset.Sdk/tools/wix.targets index a9c54269..4de5835f 100644 --- a/src/wix/WixToolset.Sdk/tools/wix.targets +++ b/src/wix/WixToolset.Sdk/tools/wix.targets | |||
| @@ -31,11 +31,6 @@ | |||
| 31 | <WixTasksPath Condition=" '$(WixTasksPath)' == '' ">$(WixBinDir)WixToolset.BuildTasks.dll</WixTasksPath> | 31 | <WixTasksPath Condition=" '$(WixTasksPath)' == '' ">$(WixBinDir)WixToolset.BuildTasks.dll</WixTasksPath> |
| 32 | </PropertyGroup> | 32 | </PropertyGroup> |
| 33 | 33 | ||
| 34 | <ItemGroup Condition=" '$(EnableDefaultItems)' == 'true' "> | ||
| 35 | <Compile Include="**/*.wxs" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder)" Condition=" '$(EnableDefaultCompileItems)' == 'true' " /> | ||
| 36 | <EmbeddedResource Include="**/*.wxl" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder)" Condition=" '$(EnableDefaultEmbeddedResourceItems)' == 'true' " /> | ||
| 37 | </ItemGroup> | ||
| 38 | |||
| 39 | <ItemGroup> | 34 | <ItemGroup> |
| 40 | <AvailableItemName Include="BindPath;BindVariable;WixLibrary;WixExtension" /> | 35 | <AvailableItemName Include="BindPath;BindVariable;WixLibrary;WixExtension" /> |
| 41 | </ItemGroup> | 36 | </ItemGroup> |
diff --git a/src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs b/src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs index 25fd61d9..507a5843 100644 --- a/src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs +++ b/src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs | |||
| @@ -586,6 +586,68 @@ namespace WixToolsetTest.Sdk | |||
| 586 | [DataRow(BuildSystem.DotNetCoreSdk)] | 586 | [DataRow(BuildSystem.DotNetCoreSdk)] |
| 587 | [DataRow(BuildSystem.MSBuild)] | 587 | [DataRow(BuildSystem.MSBuild)] |
| 588 | [DataRow(BuildSystem.MSBuild64)] | 588 | [DataRow(BuildSystem.MSBuild64)] |
| 589 | public void CanBuildWixlibOnlyGoodFiles(BuildSystem buildSystem) | ||
| 590 | { | ||
| 591 | var sourceFolder = TestData.Get(@"TestData", "Wixlib", "WithBadFiles"); | ||
| 592 | |||
| 593 | using (var fs = new TestDataFolderFileSystem()) | ||
| 594 | { | ||
| 595 | fs.Initialize(sourceFolder); | ||
| 596 | var baseFolder = fs.BaseFolder; | ||
| 597 | var binFolder = Path.Combine(baseFolder, @"bin\"); | ||
| 598 | var projectPath = Path.Combine(baseFolder, "OnlyGoodFiles.wixproj"); | ||
| 599 | |||
| 600 | var result = MsbuildUtilities.BuildProject(buildSystem, projectPath, new[] | ||
| 601 | { | ||
| 602 | MsbuildUtilities.GetQuotedPropertySwitch(buildSystem, "WixMSBuildProps", MsbuildFixture.WixPropsPath), | ||
| 603 | }); | ||
| 604 | result.AssertSuccess(); | ||
| 605 | |||
| 606 | var wixBuildCommands = MsbuildUtilities.GetToolCommandLines(result, "wix", "build", buildSystem); | ||
| 607 | WixAssert.Single(wixBuildCommands); | ||
| 608 | |||
| 609 | var path = Directory.EnumerateFiles(binFolder, @"*.*", SearchOption.AllDirectories) | ||
| 610 | .Select(s => s.Substring(baseFolder.Length + 1)) | ||
| 611 | .Single(); | ||
| 612 | WixAssert.StringEqual(@"bin\Release\OnlyGoodFiles.wixlib", path); | ||
| 613 | } | ||
| 614 | } | ||
| 615 | |||
| 616 | [TestMethod] | ||
| 617 | [DataRow(BuildSystem.DotNetCoreSdk)] | ||
| 618 | [DataRow(BuildSystem.MSBuild)] | ||
| 619 | [DataRow(BuildSystem.MSBuild64)] | ||
| 620 | public void CanBuildWixlibSkippingBadFiles(BuildSystem buildSystem) | ||
| 621 | { | ||
| 622 | var sourceFolder = TestData.Get(@"TestData", "Wixlib", "WithBadFiles"); | ||
| 623 | |||
| 624 | using (var fs = new TestDataFolderFileSystem()) | ||
| 625 | { | ||
| 626 | fs.Initialize(sourceFolder); | ||
| 627 | var baseFolder = fs.BaseFolder; | ||
| 628 | var binFolder = Path.Combine(baseFolder, @"bin\"); | ||
| 629 | var projectPath = Path.Combine(baseFolder, "SkipBadFiles.wixproj"); | ||
| 630 | |||
| 631 | var result = MsbuildUtilities.BuildProject(buildSystem, projectPath, new[] | ||
| 632 | { | ||
| 633 | MsbuildUtilities.GetQuotedPropertySwitch(buildSystem, "WixMSBuildProps", MsbuildFixture.WixPropsPath), | ||
| 634 | }); | ||
| 635 | result.AssertSuccess(); | ||
| 636 | |||
| 637 | var wixBuildCommands = MsbuildUtilities.GetToolCommandLines(result, "wix", "build", buildSystem); | ||
| 638 | WixAssert.Single(wixBuildCommands); | ||
| 639 | |||
| 640 | var path = Directory.EnumerateFiles(binFolder, @"*.*", SearchOption.AllDirectories) | ||
| 641 | .Select(s => s.Substring(baseFolder.Length + 1)) | ||
| 642 | .Single(); | ||
| 643 | WixAssert.StringEqual(@"bin\Release\SkipBadFiles.wixlib", path); | ||
| 644 | } | ||
| 645 | } | ||
| 646 | |||
| 647 | [TestMethod] | ||
| 648 | [DataRow(BuildSystem.DotNetCoreSdk)] | ||
| 649 | [DataRow(BuildSystem.MSBuild)] | ||
| 650 | [DataRow(BuildSystem.MSBuild64)] | ||
| 589 | public void CanBuildPackageIncludingSimpleWixlib(BuildSystem buildSystem) | 651 | public void CanBuildPackageIncludingSimpleWixlib(BuildSystem buildSystem) |
| 590 | { | 652 | { |
| 591 | var sourceFolder = TestData.Get(@"TestData", "Wixlib"); | 653 | var sourceFolder = TestData.Get(@"TestData", "Wixlib"); |
diff --git a/src/wix/test/WixToolsetTest.Sdk/TestData/Wixlib/WithBadFiles/Bad.wxl b/src/wix/test/WixToolsetTest.Sdk/TestData/Wixlib/WithBadFiles/Bad.wxl new file mode 100644 index 00000000..0e616bd1 --- /dev/null +++ b/src/wix/test/WixToolsetTest.Sdk/TestData/Wixlib/WithBadFiles/Bad.wxl | |||
| @@ -0,0 +1 @@ | |||
| Not a proper XML file, will break the build. | |||
diff --git a/src/wix/test/WixToolsetTest.Sdk/TestData/Wixlib/WithBadFiles/Bad.wxs b/src/wix/test/WixToolsetTest.Sdk/TestData/Wixlib/WithBadFiles/Bad.wxs new file mode 100644 index 00000000..0e616bd1 --- /dev/null +++ b/src/wix/test/WixToolsetTest.Sdk/TestData/Wixlib/WithBadFiles/Bad.wxs | |||
| @@ -0,0 +1 @@ | |||
| Not a proper XML file, will break the build. | |||
diff --git a/src/wix/test/WixToolsetTest.Sdk/TestData/Wixlib/WithBadFiles/Library.wxs b/src/wix/test/WixToolsetTest.Sdk/TestData/Wixlib/WithBadFiles/Library.wxs new file mode 100644 index 00000000..bcf79a1f --- /dev/null +++ b/src/wix/test/WixToolsetTest.Sdk/TestData/Wixlib/WithBadFiles/Library.wxs | |||
| @@ -0,0 +1,7 @@ | |||
| 1 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> | ||
| 2 | <Fragment> | ||
| 3 | <StandardDirectory Id="ProgramFilesFolder"> | ||
| 4 | <Directory Id="WixLibFolder" /> | ||
| 5 | </StandardDirectory> | ||
| 6 | </Fragment> | ||
| 7 | </Wix> | ||
diff --git a/src/wix/test/WixToolsetTest.Sdk/TestData/Wixlib/WithBadFiles/OnlyGoodFiles.wixproj b/src/wix/test/WixToolsetTest.Sdk/TestData/Wixlib/WithBadFiles/OnlyGoodFiles.wixproj new file mode 100644 index 00000000..620c5314 --- /dev/null +++ b/src/wix/test/WixToolsetTest.Sdk/TestData/Wixlib/WithBadFiles/OnlyGoodFiles.wixproj | |||
| @@ -0,0 +1,15 @@ | |||
| 1 | <?xml version="1.0" encoding="utf-8"?> | ||
| 2 | <Project> | ||
| 3 | <Import Project="$(WixMSBuildProps)" /> | ||
| 4 | |||
| 5 | <PropertyGroup> | ||
| 6 | <OutputType>Library</OutputType> | ||
| 7 | <EnableDefaultItems>false</EnableDefaultItems> | ||
| 8 | </PropertyGroup> | ||
| 9 | |||
| 10 | <ItemGroup> | ||
| 11 | <Compile Include="Library.wxs" /> | ||
| 12 | </ItemGroup> | ||
| 13 | |||
| 14 | <Import Project="$(WixTargetsPath)" /> | ||
| 15 | </Project> | ||
diff --git a/src/wix/test/WixToolsetTest.Sdk/TestData/Wixlib/WithBadFiles/SkipBadFiles.wixproj b/src/wix/test/WixToolsetTest.Sdk/TestData/Wixlib/WithBadFiles/SkipBadFiles.wixproj new file mode 100644 index 00000000..c406ccd9 --- /dev/null +++ b/src/wix/test/WixToolsetTest.Sdk/TestData/Wixlib/WithBadFiles/SkipBadFiles.wixproj | |||
| @@ -0,0 +1,15 @@ | |||
| 1 | <?xml version="1.0" encoding="utf-8"?> | ||
| 2 | <Project> | ||
| 3 | <Import Project="$(WixMSBuildProps)" /> | ||
| 4 | |||
| 5 | <PropertyGroup> | ||
| 6 | <OutputType>Library</OutputType> | ||
| 7 | </PropertyGroup> | ||
| 8 | |||
| 9 | <ItemGroup> | ||
| 10 | <Compile Remove="Bad.wxs" /> | ||
| 11 | <EmbeddedResource Remove="Bad.wxl" /> | ||
| 12 | </ItemGroup> | ||
| 13 | |||
| 14 | <Import Project="$(WixTargetsPath)" /> | ||
| 15 | </Project> | ||
