From d7d4243b78ca816bd6beb33b499a3b0c85b5a53d Mon Sep 17 00:00:00 2001 From: Bob Arnson Date: Thu, 22 Sep 2022 21:26:45 -0400 Subject: Add WixUI/@InstallDirectory to simplify authoring. Fixes https://github.com/wixtoolset/issues/issues/6926. --- .../WixToolsetTest.UI/TestData/WixUI_InstallDir/Package.wxs | 4 ++-- src/ext/UI/test/WixToolsetTest.UI/UIExtensionFixture.cs | 6 +++++- src/ext/UI/wixext/UICompiler.cs | 12 ++++++++++++ 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/ext/UI/test/WixToolsetTest.UI/TestData/WixUI_InstallDir/Package.wxs b/src/ext/UI/test/WixToolsetTest.UI/TestData/WixUI_InstallDir/Package.wxs index b6f2344a..68e1177d 100644 --- a/src/ext/UI/test/WixToolsetTest.UI/TestData/WixUI_InstallDir/Package.wxs +++ b/src/ext/UI/test/WixToolsetTest.UI/TestData/WixUI_InstallDir/Package.wxs @@ -1,4 +1,4 @@ - + @@ -12,7 +12,7 @@ - + diff --git a/src/ext/UI/test/WixToolsetTest.UI/UIExtensionFixture.cs b/src/ext/UI/test/WixToolsetTest.UI/UIExtensionFixture.cs index f93f232c..9c0e2ed6 100644 --- a/src/ext/UI/test/WixToolsetTest.UI/UIExtensionFixture.cs +++ b/src/ext/UI/test/WixToolsetTest.UI/UIExtensionFixture.cs @@ -138,7 +138,7 @@ namespace WixToolsetTest.UI var bindFolder = TestData.Get(@"TestData\data"); var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); - var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction"); + var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction", "Property"); Assert.Single(results, result => result.StartsWith("Dialog:InstallDirDlg\t")); WixAssert.CompareLineByLine(new[] { @@ -155,6 +155,10 @@ namespace WixToolsetTest.UI "CustomAction:WixUIPrintEula\t65\tWixUiCa_X86\tPrintEula\t", "CustomAction:WixUIValidatePath\t65\tWixUiCa_X86\tValidatePath\t", }, results.Where(r => r.StartsWith("CustomAction:")).ToArray()); + WixAssert.CompareLineByLine(new[] + { + "Property:WIXUI_INSTALLDIR\tINSTALLFOLDER", + }, results.Where(r => r.StartsWith("Property:WIXUI")).ToArray()); } [Fact] diff --git a/src/ext/UI/wixext/UICompiler.cs b/src/ext/UI/wixext/UICompiler.cs index 1d845237..44ab4cdc 100644 --- a/src/ext/UI/wixext/UICompiler.cs +++ b/src/ext/UI/wixext/UICompiler.cs @@ -55,6 +55,7 @@ namespace WixToolset.UI { var sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(element); string id = null; + string installDirectory = null; foreach (var attrib in element.Attributes()) { @@ -65,6 +66,9 @@ namespace WixToolset.UI case "Id": id = this.ParseHelper.GetAttributeIdentifierValue(sourceLineNumbers, attrib); break; + case "InstallDirectory": + installDirectory = this.ParseHelper.GetAttributeIdentifierValue(sourceLineNumbers, attrib); + break; default: this.ParseHelper.UnexpectedAttribute(element, attrib); break; @@ -111,6 +115,14 @@ namespace WixToolset.UI IgnoreResult = true, ExecutionType = CustomActionExecutionType.Immediate, }); + + if (installDirectory != null) + { + section.AddSymbol(new PropertySymbol(sourceLineNumbers, new Identifier(AccessModifier.Global, "WIXUI_INSTALLDIR")) + { + Value = installDirectory + }); + } } this.ParseHelper.ParseForExtensionElements(this.Context.Extensions, intermediate, section, element); -- cgit v1.2.3-55-g6feb