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