diff options
author | Bob Arnson <bob@firegiant.com> | 2025-05-03 23:09:31 -0400 |
---|---|---|
committer | Bob Arnson <bob@firegiant.com> | 2025-05-03 23:09:31 -0400 |
commit | 14cd8ca245e57d5ba986e111a9cfbb80abbc7ab2 (patch) | |
tree | 0c89cc4d5948b04bbda45ab774a3a4037adf2942 | |
parent | ffbfeb3c0b9cb8084bd366404c0cb06d42e8caaf (diff) | |
download | wix-bob/DirectoryRefTargetDir.tar.gz wix-bob/DirectoryRefTargetDir.tar.bz2 wix-bob/DirectoryRefTargetDir.zip |
Customize TARGETDIR DirectoryRef warning.bob/DirectoryRefTargetDir
Fixes https://github.com/wixtoolset/issues/issues/9012
4 files changed, 47 insertions, 1 deletions
diff --git a/src/wix/WixToolset.Core/Compiler.cs b/src/wix/WixToolset.Core/Compiler.cs index 2efca5eb..3519382d 100644 --- a/src/wix/WixToolset.Core/Compiler.cs +++ b/src/wix/WixToolset.Core/Compiler.cs | |||
@@ -3982,6 +3982,10 @@ namespace WixToolset.Core | |||
3982 | { | 3982 | { |
3983 | this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id")); | 3983 | this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id")); |
3984 | } | 3984 | } |
3985 | else if (id == "TARGETDIR") | ||
3986 | { | ||
3987 | this.Core.Write(CompilerWarnings.DirectoryRefStandardDirectoryDeprecated(sourceLineNumbers)); | ||
3988 | } | ||
3985 | else if (WindowsInstallerStandard.IsStandardDirectory(id)) | 3989 | else if (WindowsInstallerStandard.IsStandardDirectory(id)) |
3986 | { | 3990 | { |
3987 | this.Core.Write(CompilerWarnings.DirectoryRefStandardDirectoryDeprecated(sourceLineNumbers, id)); | 3991 | this.Core.Write(CompilerWarnings.DirectoryRefStandardDirectoryDeprecated(sourceLineNumbers, id)); |
diff --git a/src/wix/WixToolset.Core/CompilerWarnings.cs b/src/wix/WixToolset.Core/CompilerWarnings.cs index f4ac6afe..97d20ba6 100644 --- a/src/wix/WixToolset.Core/CompilerWarnings.cs +++ b/src/wix/WixToolset.Core/CompilerWarnings.cs | |||
@@ -11,6 +11,11 @@ namespace WixToolset.Core | |||
11 | return Message(sourceLineNumbers, Ids.DirectoryRefStandardDirectoryDeprecated, "Using DirectoryRef to reference the standard directory '{0}' is deprecated. Use the StandardDirectory element instead.", directoryId); | 11 | return Message(sourceLineNumbers, Ids.DirectoryRefStandardDirectoryDeprecated, "Using DirectoryRef to reference the standard directory '{0}' is deprecated. Use the StandardDirectory element instead.", directoryId); |
12 | } | 12 | } |
13 | 13 | ||
14 | public static Message DirectoryRefStandardDirectoryDeprecated(SourceLineNumber sourceLineNumbers) | ||
15 | { | ||
16 | return Message(sourceLineNumbers, Ids.DirectoryRefStandardDirectoryDeprecated, "Using DirectoryRef to reference the standard directory 'TARGETDIR' is deprecated. WiX automatically supplies a root 'TARGETDIR' directory, so you can just omit a DirectoryRef to 'TARGETDIR'. You can also use the StandardDirectory element instead."); | ||
17 | } | ||
18 | |||
14 | public static Message DefiningStandardDirectoryDeprecated(SourceLineNumber sourceLineNumbers, string directoryId) | 19 | public static Message DefiningStandardDirectoryDeprecated(SourceLineNumber sourceLineNumbers, string directoryId) |
15 | { | 20 | { |
16 | return Message(sourceLineNumbers, Ids.DefiningStandardDirectoryDeprecated, "It is no longer necessary to define the standard directory '{0}'. Use the StandardDirectory element instead.", directoryId); | 21 | return Message(sourceLineNumbers, Ids.DefiningStandardDirectoryDeprecated, "It is no longer necessary to define the standard directory '{0}'. Use the StandardDirectory element instead.", directoryId); |
diff --git a/src/wix/test/WixToolsetTest.CoreIntegration/DirectoryFixture.cs b/src/wix/test/WixToolsetTest.CoreIntegration/DirectoryFixture.cs index 4781a115..c132eb80 100644 --- a/src/wix/test/WixToolsetTest.CoreIntegration/DirectoryFixture.cs +++ b/src/wix/test/WixToolsetTest.CoreIntegration/DirectoryFixture.cs | |||
@@ -5,8 +5,8 @@ namespace WixToolsetTest.CoreIntegration | |||
5 | using System; | 5 | using System; |
6 | using System.IO; | 6 | using System.IO; |
7 | using System.Linq; | 7 | using System.Linq; |
8 | using WixInternal.TestSupport; | ||
9 | using WixInternal.Core.TestPackage; | 8 | using WixInternal.Core.TestPackage; |
9 | using WixInternal.TestSupport; | ||
10 | using WixToolset.Data; | 10 | using WixToolset.Data; |
11 | using WixToolset.Data.WindowsInstaller; | 11 | using WixToolset.Data.WindowsInstaller; |
12 | using Xunit; | 12 | using Xunit; |
@@ -394,5 +394,31 @@ namespace WixToolsetTest.CoreIntegration | |||
394 | }, directoryRows.Select(r => r.FieldAsString(0) + ":" + r.FieldAsString(1) + ":" + r.FieldAsString(2)).OrderBy(s => s).ToArray()); | 394 | }, directoryRows.Select(r => r.FieldAsString(0) + ":" + r.FieldAsString(1) + ":" + r.FieldAsString(2)).OrderBy(s => s).ToArray()); |
395 | } | 395 | } |
396 | } | 396 | } |
397 | |||
398 | [Fact] | ||
399 | public void GetsWarningForRedundantTargetDir() | ||
400 | { | ||
401 | var folder = TestData.Get(@"TestData"); | ||
402 | |||
403 | using (var fs = new DisposableFileSystem()) | ||
404 | { | ||
405 | var baseFolder = fs.GetFolder(); | ||
406 | var intermediateFolder = Path.Combine(baseFolder, "obj"); | ||
407 | var msiPath = Path.Combine(baseFolder, "bin", "test.msi"); | ||
408 | var wixpdbPath = Path.ChangeExtension(msiPath, ".wixpdb"); | ||
409 | |||
410 | var result = WixRunner.Execute(new[] | ||
411 | { | ||
412 | "build", | ||
413 | Path.Combine(folder, "Directory", "RedundantTargetDir.wxs"), | ||
414 | "-bindpath", Path.Combine(folder, "SingleFile", "data"), | ||
415 | "-intermediateFolder", intermediateFolder, | ||
416 | "-o", msiPath | ||
417 | }); | ||
418 | |||
419 | var error = result.Messages.Single(); | ||
420 | Assert.Equal(5436/*CompilerWarnings.Id.DirectoryRefStandardDirectoryDeprecated*/, error.Id); | ||
421 | } | ||
422 | } | ||
397 | } | 423 | } |
398 | } | 424 | } |
diff --git a/src/wix/test/WixToolsetTest.CoreIntegration/TestData/Directory/RedundantTargetDir.wxs b/src/wix/test/WixToolsetTest.CoreIntegration/TestData/Directory/RedundantTargetDir.wxs new file mode 100644 index 00000000..f8a42a1b --- /dev/null +++ b/src/wix/test/WixToolsetTest.CoreIntegration/TestData/Directory/RedundantTargetDir.wxs | |||
@@ -0,0 +1,11 @@ | |||
1 | <?xml version="1.0" encoding="utf-8"?> | ||
2 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> | ||
3 | <Fragment> | ||
4 | <ComponentGroup Id="ProductComponents" Directory="BinFolder" /> | ||
5 | </Fragment> | ||
6 | <Fragment> | ||
7 | <DirectoryRef Id="TARGETDIR"> | ||
8 | <Directory Id="BinFolder" Name="Example Corporation\Test Product\bin" /> | ||
9 | </DirectoryRef> | ||
10 | </Fragment> | ||
11 | </Wix> | ||