aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBob Arnson <bob@firegiant.com>2020-03-05 16:47:31 -0500
committerBob Arnson <bob@firegiant.com>2020-03-05 17:12:17 -0500
commit72b6f0109008103dfe974fa4d2d3ce42e7b6b53e (patch)
tree8d836a61711f312395022867e4881c16735bd97e /src
parent6c4f0767ee16e95e0f3f735586caaa07d356245d (diff)
downloadwix-72b6f0109008103dfe974fa4d2d3ce42e7b6b53e.tar.gz
wix-72b6f0109008103dfe974fa4d2d3ce42e7b6b53e.tar.bz2
wix-72b6f0109008103dfe974fa4d2d3ce42e7b6b53e.zip
Correctly handle custom action default suffix.
Diffstat (limited to 'src')
-rw-r--r--src/WixToolset.Core/ExtensibilityServices/ParseHelper.cs14
-rw-r--r--src/test/WixToolsetTest.CoreIntegration/ParseFixture.cs36
2 files changed, 41 insertions, 9 deletions
diff --git a/src/WixToolset.Core/ExtensibilityServices/ParseHelper.cs b/src/WixToolset.Core/ExtensibilityServices/ParseHelper.cs
index e16f909a..7447d420 100644
--- a/src/WixToolset.Core/ExtensibilityServices/ParseHelper.cs
+++ b/src/WixToolset.Core/ExtensibilityServices/ParseHelper.cs
@@ -897,35 +897,31 @@ namespace WixToolset.Core.ExtensibilityServices
897 if (!this.Messaging.EncounteredError) 897 if (!this.Messaging.EncounteredError)
898 { 898 {
899 var name = String.Concat("Wix4", customAction); 899 var name = String.Concat("Wix4", customAction);
900 var suffix = "_X86";
900 901
901 switch (currentPlatform) 902 switch (currentPlatform)
902 { 903 {
903 case Platform.X64: 904 case Platform.X64:
904 if ((supportedPlatforms & CustomActionPlatforms.X64) == CustomActionPlatforms.X64) 905 if ((supportedPlatforms & CustomActionPlatforms.X64) == CustomActionPlatforms.X64)
905 { 906 {
906 name = String.Concat(name, "_X64"); 907 suffix = "_X64";
907 } 908 }
908 break; 909 break;
909 case Platform.ARM: 910 case Platform.ARM:
910 if ((supportedPlatforms & CustomActionPlatforms.ARM) == CustomActionPlatforms.ARM) 911 if ((supportedPlatforms & CustomActionPlatforms.ARM) == CustomActionPlatforms.ARM)
911 { 912 {
912 name = String.Concat(name, "_A32"); 913 suffix = "_A32";
913 } 914 }
914 break; 915 break;
915 case Platform.ARM64: 916 case Platform.ARM64:
916 if ((supportedPlatforms & CustomActionPlatforms.ARM64) == CustomActionPlatforms.ARM64) 917 if ((supportedPlatforms & CustomActionPlatforms.ARM64) == CustomActionPlatforms.ARM64)
917 { 918 {
918 name = String.Concat(name, "_A64"); 919 suffix = "_A64";
919 } 920 }
920 break; 921 break;
921 // Fall back to x86.
922 case Platform.X86:
923 default:
924 name = String.Concat(name, "_X86");
925 break;
926 } 922 }
927 923
928 this.CreateSimpleReference(section, sourceLineNumbers, nameof(TupleDefinitionType.CustomAction), name); 924 this.CreateSimpleReference(section, sourceLineNumbers, nameof(TupleDefinitionType.CustomAction), name + suffix);
929 } 925 }
930 } 926 }
931 927
diff --git a/src/test/WixToolsetTest.CoreIntegration/ParseFixture.cs b/src/test/WixToolsetTest.CoreIntegration/ParseFixture.cs
new file mode 100644
index 00000000..eca3aa34
--- /dev/null
+++ b/src/test/WixToolsetTest.CoreIntegration/ParseFixture.cs
@@ -0,0 +1,36 @@
1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
3namespace WixToolsetTest.CoreIntegration
4{
5 using System.Linq;
6 using WixToolset.Core;
7 using WixToolset.Data;
8 using WixToolset.Data.Tuples;
9 using WixToolset.Extensibility.Data;
10 using WixToolset.Extensibility.Services;
11 using Xunit;
12
13 public class ParseFixture
14 {
15 [Fact]
16 public void GeneratesCorrectCustomActionIdentifiers()
17 {
18 var serviceProvider = new WixToolsetServiceProvider();
19 var section = new IntermediateSection("section", SectionType.Fragment, 0);
20 var parseHelper = serviceProvider.GetService<IParseHelper>();
21
22 parseHelper.CreateCustomActionReference(null, section, "CustomAction32", Platform.X86, CustomActionPlatforms.X86 | CustomActionPlatforms.ARM);
23 parseHelper.CreateCustomActionReference(null, section, "CustomArmAction", Platform.ARM64, CustomActionPlatforms.X86 | CustomActionPlatforms.ARM);
24 parseHelper.CreateCustomActionReference(null, section, "CustomArmAction", Platform.ARM64, CustomActionPlatforms.X86 | CustomActionPlatforms.X64 | CustomActionPlatforms.ARM64);
25 parseHelper.CreateCustomActionReference(null, section, "CustomAction", Platform.X64, CustomActionPlatforms.X86 | CustomActionPlatforms.ARM);
26 parseHelper.CreateCustomActionReference(null, section, "CustomAction", Platform.X64, CustomActionPlatforms.X86 | CustomActionPlatforms.X64);
27
28 var simpleReferences = section.Tuples.OfType<WixSimpleReferenceTuple>();
29 Assert.NotNull(simpleReferences.Where(t => t.SymbolicName == "CustomAction:Wix4CustomAction32_X86").FirstOrDefault());
30 Assert.NotNull(simpleReferences.Where(t => t.SymbolicName == "CustomAction:Wix4CustomArmAction_X86").FirstOrDefault());
31 Assert.NotNull(simpleReferences.Where(t => t.SymbolicName == "CustomAction:Wix4CustomArmAction_A64").FirstOrDefault());
32 Assert.NotNull(simpleReferences.Where(t => t.SymbolicName == "CustomAction:Wix4CustomAction_X86").FirstOrDefault());
33 Assert.NotNull(simpleReferences.Where(t => t.SymbolicName == "CustomAction:Wix4CustomAction_X64").FirstOrDefault());
34 }
35 }
36}