From dd3ab394ec6e37c24827294605857730f8e7a1a5 Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Tue, 15 Nov 2022 23:38:46 -0800 Subject: Expose bind variables from build command and via MSBuild WixVariables property Also, resolves bind variables in path fields. Fixes 6995 and 7017 --- src/api/wix/WixToolset.Data/ErrorMessages.cs | 24 +++++++++++----------- .../Data/ILibraryContext.cs | 5 +++++ .../Data/IResolveContext.cs | 5 +++++ 3 files changed, 22 insertions(+), 12 deletions(-) (limited to 'src/api') diff --git a/src/api/wix/WixToolset.Data/ErrorMessages.cs b/src/api/wix/WixToolset.Data/ErrorMessages.cs index c447f89d..0c7511b9 100644 --- a/src/api/wix/WixToolset.Data/ErrorMessages.cs +++ b/src/api/wix/WixToolset.Data/ErrorMessages.cs @@ -598,9 +598,9 @@ namespace WixToolset.Data return Message(sourceLineNumbers, Ids.ExpectedVariable, "A required variable was missing in the expression '{0}'.", expression); } - public static Message ExpectedWixVariableValue(string variableId) + public static Message ExpectedBindVariableValue(string variableId) { - return Message(null, Ids.ExpectedWixVariableValue, "The WiX variable '{0}' was declared without a value. Please specify a value for the variable.", variableId); + return Message(null, Ids.ExpectedBindVariableValue, "The bind variable '{0}' was declared without a value. Please specify a value for the variable.", variableId); } public static Message FamilyNameTooLong(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, int length) @@ -1081,9 +1081,9 @@ namespace WixToolset.Data return Message(null, Ids.IllegalWarningIdAsError, "Illegal value '{0}' for the -wx command line option. Specify a particular warning number, like '-wx6' to display the warning with ID 6 as an error, or '-wx' alone to suppress all warnings.", warningId); } - public static Message IllegalWixVariablePrefix(SourceLineNumber sourceLineNumbers, string variableId) + public static Message IllegalBindVariablePrefix(SourceLineNumber sourceLineNumbers, string variableId) { - return Message(sourceLineNumbers, Ids.IllegalWixVariablePrefix, "The WiX variable $(wix.{0}) uses an illegal prefix '$'. Please use the '!' prefix instead.", variableId); + return Message(sourceLineNumbers, Ids.IllegalBindVariablePrefix, "The bind variable $(wix.{0}) uses an illegal prefix '$'. Please use the '!' prefix instead.", variableId); } public static Message IllegalYesNoAlwaysValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value) @@ -2231,14 +2231,14 @@ namespace WixToolset.Data return Message(null, Ids.WixFileNotFound, "The file '{0}' cannot be found.", file); } - public static Message WixVariableCollision(SourceLineNumber sourceLineNumbers, string variableId) + public static Message BindVariableCollision(SourceLineNumber sourceLineNumbers, string variableId) { - return Message(sourceLineNumbers, Ids.WixVariableCollision, "The WiX variable '{0}' is declared in more than one location. Please remove one of the declarations.", variableId); + return Message(sourceLineNumbers, Ids.BindVariableCollision, "The bind variable '{0}' is declared in more than one location. Please remove one of the declarations.", variableId); } - public static Message WixVariableUnknown(SourceLineNumber sourceLineNumbers, string variableId) + public static Message BindVariableUnknown(SourceLineNumber sourceLineNumbers, string variableId) { - return Message(sourceLineNumbers, Ids.WixVariableUnknown, "The WiX variable !(wix.{0}) is unknown. Please ensure the variable is declared on the command line for light.exe, via a WixVariable element, or inline using the syntax !(wix.{0}=some value which doesn't contain parenthesis).", variableId); + return Message(sourceLineNumbers, Ids.BindVariableUnknown, "The bind variable !(wix.{0}) is unknown. Please ensure the variable is declared on the command line for wix.exe, via a BindVariable element, or inline using the syntax !(wix.{0}=some value which doesn't contain parenthesis).", variableId); } public static Message NoSourceFiles() @@ -2474,10 +2474,10 @@ namespace WixToolset.Data VersionIndependentProgIdsCannotHaveIcons = 192, IllegalAttributeValueWithOtherAttribute = 193, InvalidMergeLanguage = 194, - WixVariableCollision = 195, - ExpectedWixVariableValue = 196, - WixVariableUnknown = 197, - IllegalWixVariablePrefix = 198, + BindVariableCollision = 195, + ExpectedBindVariableValue = 196, + BindVariableUnknown = 197, + IllegalBindVariablePrefix = 198, InvalidWixXmlNamespace = 199, UnhandledExtensionElement = 200, UnhandledExtensionAttribute = 201, diff --git a/src/api/wix/WixToolset.Extensibility/Data/ILibraryContext.cs b/src/api/wix/WixToolset.Extensibility/Data/ILibraryContext.cs index f3c4db6e..9fc767f6 100644 --- a/src/api/wix/WixToolset.Extensibility/Data/ILibraryContext.cs +++ b/src/api/wix/WixToolset.Extensibility/Data/ILibraryContext.cs @@ -27,6 +27,11 @@ namespace WixToolset.Extensibility.Data /// IReadOnlyCollection BindPaths { get; set; } + /// + /// Bind variables used when binding files. + /// + IDictionary BindVariables { get; set; } + /// /// Collection of extensions used during creation of library. /// diff --git a/src/api/wix/WixToolset.Extensibility/Data/IResolveContext.cs b/src/api/wix/WixToolset.Extensibility/Data/IResolveContext.cs index bec689ba..a2158e4f 100644 --- a/src/api/wix/WixToolset.Extensibility/Data/IResolveContext.cs +++ b/src/api/wix/WixToolset.Extensibility/Data/IResolveContext.cs @@ -22,6 +22,11 @@ namespace WixToolset.Extensibility.Data /// IReadOnlyCollection BindPaths { get; set; } + /// + /// Bind variables used during resolution. + /// + IDictionary BindVariables { get; set; } + /// /// Resolve extensions. /// -- cgit v1.2.3-55-g6feb