From fb0a8b74b598331dcf037d97a3adf89f5fe5ba92 Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Tue, 6 Dec 2022 15:55:18 -0800 Subject: Correctly harvest registry files with multisz Fixes 7044 --- src/tools/test/WixToolsetTest.Heat/HeatFixture.cs | 111 ++++++++++++++++++--- .../TestData/RegFile/Expected.wxs | 51 ++++++++++ .../RegFile/ExpectedWithComponentGroup.wxs | 54 ++++++++++ .../WixToolsetTest.Heat/TestData/RegFile/input.reg | 41 ++++++++ .../TestData/RegFile/input.xslt | 23 +++++ 5 files changed, 268 insertions(+), 12 deletions(-) create mode 100644 src/tools/test/WixToolsetTest.Heat/TestData/RegFile/Expected.wxs create mode 100644 src/tools/test/WixToolsetTest.Heat/TestData/RegFile/ExpectedWithComponentGroup.wxs create mode 100644 src/tools/test/WixToolsetTest.Heat/TestData/RegFile/input.reg create mode 100644 src/tools/test/WixToolsetTest.Heat/TestData/RegFile/input.xslt (limited to 'src/tools/test') diff --git a/src/tools/test/WixToolsetTest.Heat/HeatFixture.cs b/src/tools/test/WixToolsetTest.Heat/HeatFixture.cs index 388d4dc0..d517e209 100644 --- a/src/tools/test/WixToolsetTest.Heat/HeatFixture.cs +++ b/src/tools/test/WixToolsetTest.Heat/HeatFixture.cs @@ -30,7 +30,6 @@ namespace WixToolsetTest.Heat var wxs = File.ReadAllLines(outputPath).Select(s => s.Replace("\"", "'")).ToArray(); WixAssert.CompareLineByLine(new[] { - "", "", " ", " ", @@ -50,7 +49,7 @@ namespace WixToolsetTest.Heat } [Fact] - public void CanHarvestSimpleDirectoryToInstallFolder() + public void CanHarvestSimpleDirectoryToComponentGroup() { var folder = TestData.Get("TestData", "SingleFile"); @@ -61,7 +60,7 @@ namespace WixToolsetTest.Heat var args = new[] { "dir", folder, - "-dr", "INSTALLFOLDER", + "-cg", "CG1", "-o", outputPath }; @@ -71,25 +70,65 @@ namespace WixToolsetTest.Heat var wxs = File.ReadAllLines(outputPath).Select(s => s.Replace("\"", "'")).ToArray(); WixAssert.CompareLineByLine(new[] { - "", "", " ", - " ", - " ", - " ", + " ", + " ", + " ", " ", " ", - " ", - " ", - " ", + " ", + " ", + " ", " ", - " ", + " ", " ", "", }, wxs); } } + [Fact] + public void CanHarvestSimpleDirectoryToInstallFolder() + { + var folder = TestData.Get("TestData", "SingleFile"); + + using (var fs = new DisposableFileSystem()) + { + var outputPath = Path.Combine(fs.GetFolder(), "out.wxs"); + + var args = new[] + { + "dir", folder, + "-dr", "INSTALLFOLDER", + "-indent", "2", + "-o", outputPath + }; + + var result = HeatRunner.Execute(args); + result.AssertSuccess(); + + var wxs = File.ReadAllLines(outputPath).Select(s => s.Replace("\"", "'")).ToArray(); + WixAssert.CompareLineByLine(new[] + { + "", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + "", + }, wxs); + } + } + [Fact] public void CanHarvestFile() { @@ -114,7 +153,6 @@ namespace WixToolsetTest.Heat var wxs = File.ReadAllLines(outputPath).Select(s => s.Replace("\"", "'")).ToArray(); WixAssert.CompareLineByLine(new[] { - "", "", " ", " ", @@ -132,5 +170,54 @@ namespace WixToolsetTest.Heat }, wxs); } } + + [Fact] + public void CanHarvestRegistry() + { + var folder = TestData.Get("TestData", "RegFile"); + + using (var fs = new DisposableFileSystem()) + { + var outputPath = Path.Combine(fs.GetFolder(), "out.wxs"); + + var args = new[] + { + "reg", Path.Combine(folder, "input.reg"), + "-o", outputPath + }; + + var result = HeatRunner.Execute(args); + result.AssertSuccess(); + + var actual = File.ReadAllLines(outputPath).Select(s => s.Replace("\"", "'")).ToArray(); + var expected = File.ReadAllLines(Path.Combine(folder, "Expected.wxs")).Select(s => s.Replace("\"", "'")).ToArray(); + WixAssert.CompareLineByLine(expected, actual); + } + } + + [Fact] + public void CanHarvestRegistryIntoComponentGroup() + { + var folder = TestData.Get("TestData", "RegFile"); + + using (var fs = new DisposableFileSystem()) + { + var outputPath = Path.Combine(fs.GetFolder(), "out.wxs"); + + var args = new[] + { + "reg", Path.Combine(folder, "input.reg"), + "-cg", "CG1", + "-o", outputPath + }; + + var result = HeatRunner.Execute(args); + result.AssertSuccess(); + + var actual = File.ReadAllLines(outputPath).Select(s => s.Replace("\"", "'")).ToArray(); + var expected = File.ReadAllLines(Path.Combine(folder, "ExpectedWithComponentGroup.wxs")).Select(s => s.Replace("\"", "'")).ToArray(); + WixAssert.CompareLineByLine(expected, actual); + } + } } } diff --git a/src/tools/test/WixToolsetTest.Heat/TestData/RegFile/Expected.wxs b/src/tools/test/WixToolsetTest.Heat/TestData/RegFile/Expected.wxs new file mode 100644 index 00000000..2bc48bca --- /dev/null +++ b/src/tools/test/WixToolsetTest.Heat/TestData/RegFile/Expected.wxs @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/tools/test/WixToolsetTest.Heat/TestData/RegFile/ExpectedWithComponentGroup.wxs b/src/tools/test/WixToolsetTest.Heat/TestData/RegFile/ExpectedWithComponentGroup.wxs new file mode 100644 index 00000000..bb94a265 --- /dev/null +++ b/src/tools/test/WixToolsetTest.Heat/TestData/RegFile/ExpectedWithComponentGroup.wxs @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/tools/test/WixToolsetTest.Heat/TestData/RegFile/input.reg b/src/tools/test/WixToolsetTest.Heat/TestData/RegFile/input.reg new file mode 100644 index 00000000..85ebe01e --- /dev/null +++ b/src/tools/test/WixToolsetTest.Heat/TestData/RegFile/input.reg @@ -0,0 +1,41 @@ +Windows Registry Editor Version 5.00 + +[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache Software Foundation\Procrun 2.0\service.jvm.web] + +[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache Software Foundation\Procrun 2.0\service.jvm.web\Parameters] + +[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache Software Foundation\Procrun 2.0\service.jvm.web\Parameters\Java] +"Options"=hex(7):2d,00,44,00,64,00,61,00,65,00,6d,00,6f,00,6e,00,2e,00,63,00,\ + 6c,00,6f,00,6a,00,75,00,72,00,65,00,2e,00,6e,00,73,00,3d,00,70,00,61,00,6e,\ + 00,74,00,68,00,65,00,72,00,2e,00,77,00,61,00,73,00,2e,00,77,00,65,00,62,00,\ + 2e,00,64,00,61,00,65,00,6d,00,6f,00,6e,00,00,00,00,00 +"Options9"=hex(7):2d,00,2d,00,61,00,64,00,64,00,2d,00,6d,00,6f,00,64,00,75,00,\ + 6c,00,65,00,73,00,3d,00,6a,00,61,00,76,00,61,00,2e,00,63,00,6f,00,72,00,62,\ + 00,61,00,00,00,00,00 +"Classpath"="%WAS_DEPS_CLASSPATH%\*;%ServiceBasePath%\Sensors\service.jvm.web-standalone.jar" +"JvmMx"=dword:00001000 + +[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache Software Foundation\Procrun 2.0\service.jvm.web\Parameters\Log] +"Prefix"="service.jvm.web" + +[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache Software Foundation\Procrun 2.0\service.jvm.web\Parameters\Start] +"Class"="service.was.webDaemon" +"Params"=hex(7):2d,00,2d,00,73,00,74,00,6f,00,72,00,65,00,2d,00,70,00,61,00,74,\ + 00,68,00,00,00,22,00,25,00,50,00,72,00,6f,00,67,00,72,00,61,00,6d,00,44,00,\ + 61,00,74,00,61,00,25,00,5c,00,73,00,6f,00,66,00,74,00,65,00,6b,00,5c,00,70,\ + 00,61,00,6e,00,74,00,68,00,65,00,72,00,5c,00,70,00,61,00,6e,00,74,00,68,00,\ + 65,00,72,00,2e,00,77,00,61,00,73,00,2e,00,77,00,65,00,62,00,5c,00,73,00,74,\ + 00,6f,00,72,00,65,00,2e,00,6a,00,6b,00,73,00,22,00,00,00,00,00 +"Method"="startWindows" +"Mode"="jvm" + +[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache Software Foundation\Procrun 2.0\service.jvm.web\Parameters\Stop] +"Class"="service.was.webDaemon" +"Method"="stopWindows" +"Mode"="jvm" +"Timeout"=dword:000009c4 + + + +[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\service.jvm.web\Parameters] + diff --git a/src/tools/test/WixToolsetTest.Heat/TestData/RegFile/input.xslt b/src/tools/test/WixToolsetTest.Heat/TestData/RegFile/input.xslt new file mode 100644 index 00000000..7a46243a --- /dev/null +++ b/src/tools/test/WixToolsetTest.Heat/TestData/RegFile/input.xslt @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + %WAS_DEPS_CLASSPATH%\*;[DIR_JVM]service.jvm.web-standalone.jar + + + + -- cgit v1.2.3-55-g6feb