diff options
3 files changed, 30 insertions, 0 deletions
diff --git a/src/WixToolset.Core/ExtensibilityServices/PreprocessHelper.cs b/src/WixToolset.Core/ExtensibilityServices/PreprocessHelper.cs index df301196..041c7d5d 100644 --- a/src/WixToolset.Core/ExtensibilityServices/PreprocessHelper.cs +++ b/src/WixToolset.Core/ExtensibilityServices/PreprocessHelper.cs | |||
@@ -386,6 +386,14 @@ namespace WixToolset.Core.ExtensibilityServices | |||
386 | } | 386 | } |
387 | } | 387 | } |
388 | 388 | ||
389 | // Environment variables may contain parens so if it looks | ||
390 | // like a function, check to see if the environment variable | ||
391 | // prefix was explicitly provided. | ||
392 | if (isFunction && remainder.StartsWith("(env.", StringComparison.Ordinal)) | ||
393 | { | ||
394 | isFunction = false; | ||
395 | } | ||
396 | |||
389 | // move the currentPosition to the closing paren | 397 | // move the currentPosition to the closing paren |
390 | currentPosition += closingParenPosition; | 398 | currentPosition += closingParenPosition; |
391 | 399 | ||
diff --git a/src/test/WixToolsetTest.CoreIntegration/PreprocessorFixture.cs b/src/test/WixToolsetTest.CoreIntegration/PreprocessorFixture.cs index a6504cb9..aad3ed73 100644 --- a/src/test/WixToolsetTest.CoreIntegration/PreprocessorFixture.cs +++ b/src/test/WixToolsetTest.CoreIntegration/PreprocessorFixture.cs | |||
@@ -40,6 +40,24 @@ namespace WixToolsetTest.CoreIntegration | |||
40 | } | 40 | } |
41 | 41 | ||
42 | [Fact] | 42 | [Fact] |
43 | /// <remarks> | ||
44 | /// This test will fail on 32-bit operating systems because it depends on "CommonProgramFiles(x86)" | ||
45 | /// which is only defined on 64-bit Windows. | ||
46 | /// </remarks> | ||
47 | public void SupportParensInEnvironmentVariables() | ||
48 | { | ||
49 | var folder = TestData.Get(@"TestData", "Preprocessor"); | ||
50 | |||
51 | var serviceProvider = WixToolsetServiceProviderFactory.CreateServiceProvider(); | ||
52 | var context = serviceProvider.GetService<IPreprocessContext>(); | ||
53 | context.SourcePath = Path.Combine(folder, "EnvParens.wxs"); | ||
54 | |||
55 | var preprocessor = serviceProvider.GetService<IPreprocessor>(); | ||
56 | var result = preprocessor.Preprocess(context); | ||
57 | Assert.NotNull(result.Document); | ||
58 | } | ||
59 | |||
60 | [Fact] | ||
43 | public void VariableRedefinitionIsAWarning() | 61 | public void VariableRedefinitionIsAWarning() |
44 | { | 62 | { |
45 | var folder = TestData.Get(@"TestData\Variables"); | 63 | var folder = TestData.Get(@"TestData\Variables"); |
diff --git a/src/test/WixToolsetTest.CoreIntegration/TestData/Preprocessor/EnvParens.wxs b/src/test/WixToolsetTest.CoreIntegration/TestData/Preprocessor/EnvParens.wxs new file mode 100644 index 00000000..68d115c5 --- /dev/null +++ b/src/test/WixToolsetTest.CoreIntegration/TestData/Preprocessor/EnvParens.wxs | |||
@@ -0,0 +1,4 @@ | |||
1 | <?xml version="1.0" encoding="utf-8" ?> | ||
2 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> | ||
3 | <?define Test = "$(env.CommonProgramFiles(x86))" ?> | ||
4 | </Wix> | ||