From f0e48ecd4663368a577a780220f843ec10b7b402 Mon Sep 17 00:00:00 2001 From: Bob Arnson <bob@firegiant.com> Date: Sat, 29 Jun 2024 21:19:11 -0400 Subject: For fields, "" != null. Fixes https://github.com/wixtoolset/issues/issues/8558 --- src/wix/WixToolset.Core/Compiler.cs | 4 +-- .../MsiQueryFixture.cs | 33 ++++++++++++++++++++++ .../TestData/AppSearch/DirectorySearchInModule.wxs | 9 ++++++ 3 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 src/wix/test/WixToolsetTest.CoreIntegration/TestData/AppSearch/DirectorySearchInModule.wxs diff --git a/src/wix/WixToolset.Core/Compiler.cs b/src/wix/WixToolset.Core/Compiler.cs index d13f1a68..84f31344 100644 --- a/src/wix/WixToolset.Core/Compiler.cs +++ b/src/wix/WixToolset.Core/Compiler.cs @@ -1948,10 +1948,10 @@ namespace WixToolset.Core signature = this.ParseComponentSearchElement(child); break; case "DirectorySearch": - signature = this.ParseDirectorySearchElement(child, String.Empty); + signature = this.ParseDirectorySearchElement(child, null); break; case "DirectorySearchRef": - signature = this.ParseDirectorySearchRefElement(child, String.Empty); + signature = this.ParseDirectorySearchRefElement(child, null); break; case "IniFileSearch": signature = this.ParseIniFileSearchElement(child); diff --git a/src/wix/test/WixToolsetTest.CoreIntegration/MsiQueryFixture.cs b/src/wix/test/WixToolsetTest.CoreIntegration/MsiQueryFixture.cs index a8b9c3e8..3194ed7a 100644 --- a/src/wix/test/WixToolsetTest.CoreIntegration/MsiQueryFixture.cs +++ b/src/wix/test/WixToolsetTest.CoreIntegration/MsiQueryFixture.cs @@ -115,6 +115,39 @@ namespace WixToolsetTest.CoreIntegration } } + [Fact] + public void PopulatesAppSearchTablesFromDirectorySearchInMergeModule() + { + var folder = TestData.Get(@"TestData"); + + using (var fs = new DisposableFileSystem()) + { + var baseFolder = fs.GetFolder(); + var intermediateFolder = Path.Combine(baseFolder, "obj"); + var msmPath = Path.Combine(baseFolder, @"bin\test.msm"); + + var result = WixRunner.Execute(new[] + { + "build", + Path.Combine(folder, "AppSearch", "DirectorySearchInModule.wxs"), + "-bindpath", Path.Combine(folder, "SingleFile", "data"), + "-intermediateFolder", intermediateFolder, + "-o", msmPath, + "-sw1079", + }); + + result.AssertSuccess(); + + Assert.True(File.Exists(msmPath)); + var results = Query.QueryDatabase(msmPath, new[] { "AppSearch", "DrLocator", "IniLocator" }); + WixAssert.CompareLineByLine(new[] + { + "AppSearch:SYSTEM32FOLDER.7361203A_597E_4DA2_9024_27246B8446B2\tWindowsDrLocator.7361203A_597E_4DA2_9024_27246B8446B2", + "DrLocator:WindowsDrLocator.7361203A_597E_4DA2_9024_27246B8446B2\t\t[WindowsFolder.7361203A_597E_4DA2_9024_27246B8446B2]System32\t", + }, results); + } + } + [Fact] public void PopulatesAppSearchTablesFromRegistrySearch() { diff --git a/src/wix/test/WixToolsetTest.CoreIntegration/TestData/AppSearch/DirectorySearchInModule.wxs b/src/wix/test/WixToolsetTest.CoreIntegration/TestData/AppSearch/DirectorySearchInModule.wxs new file mode 100644 index 00000000..9f4cb47e --- /dev/null +++ b/src/wix/test/WixToolsetTest.CoreIntegration/TestData/AppSearch/DirectorySearchInModule.wxs @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> + <Module Id="DirectorySearchModule" Language="1033" Version="1.0.0.0" + Guid="{7361203A-597E-4DA2-9024-27246B8446B2}"> + <Property Id="SYSTEM32FOLDER"> + <DirectorySearch Id="WindowsDrLocator" Path="[WindowsFolder]System32" /> + </Property> + </Module> +</Wix> -- cgit v1.2.3-55-g6feb