main
cs 100 lines 5.89 KB
Raw
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
3 namespace WixToolsetTest.VisualStudio
4 {
5 using WixInternal.TestSupport;
6 using WixInternal.Core.TestPackage;
7 using WixToolset.VisualStudio;
8 using Xunit;
9 using System.Linq;
10
11 public class VisualStudioExtensionFixture
12 {
13 [Fact]
14 public void CanBuildUsingVsixPackage()
15 {
16 var folder = TestData.Get(@"TestData\UsingVsixPackage");
17 var build = new Builder(folder, typeof(VSExtensionFactory), new[] { folder });
18
19 var results = build.BuildAndQuery(Build, "CustomAction");
20 WixAssert.CompareLineByLine(new[]
21 {
22 "CustomAction:SetVS2010Vsix\t51\tVS_VSIX_INSTALLER_PATH\t[VS2010_VSIX_INSTALLER_PATH]\t",
23 "CustomAction:SetVS2012Vsix\t51\tVS_VSIX_INSTALLER_PATH\t[VS2012_VSIX_INSTALLER_PATH]\t",
24 "CustomAction:SetVS2013Vsix\t51\tVS_VSIX_INSTALLER_PATH\t[VS2013_VSIX_INSTALLER_PATH]\t",
25 "CustomAction:SetVS2015Vsix\t51\tVS_VSIX_INSTALLER_PATH\t[VS2015_VSIX_INSTALLER_PATH]\t",
26 "CustomAction:vimLa9TyFoAVwf8JmA0_ZJHA69J2fo\t3122\tVS_VSIX_INSTALLER_PATH\t/q \"[#filzi8nwT8Ta133xcfp7qSIdGdRiC0]\" /admin\t",
27 "CustomAction:viuMpl8IvFSDAzTulrmpAzBwAmCRTQ\t1074\tVS_VSIX_INSTALLER_PATH\t/q \"[#filzi8nwT8Ta133xcfp7qSIdGdRiC0]\"\t",
28 "CustomAction:vrmLa9TyFoAVwf8JmA0_ZJHA69J2fo\t3442\tVS_VSIX_INSTALLER_PATH\t/q /u:\"ExampleVsix\" /admin\t",
29 "CustomAction:vruMpl8IvFSDAzTulrmpAzBwAmCRTQ\t1394\tVS_VSIX_INSTALLER_PATH\t/q /u:\"ExampleVsix\"\t",
30 "CustomAction:vumLa9TyFoAVwf8JmA0_ZJHA69J2fo\t3186\tVS_VSIX_INSTALLER_PATH\t/q /u:\"ExampleVsix\" /admin\t",
31 "CustomAction:vuuMpl8IvFSDAzTulrmpAzBwAmCRTQ\t1138\tVS_VSIX_INSTALLER_PATH\t/q /u:\"ExampleVsix\"\t",
32 "CustomAction:Vwd2012VsixWhenVSAbsent\t51\tVS_VSIX_INSTALLER_PATH\t[VWD2012_VSIX_INSTALL_ROOT]\\Common7\\IDE\\VSIXInstaller.exe\t",
33 "CustomAction:Vwd2013VsixWhenVSAbsent\t51\tVS_VSIX_INSTALLER_PATH\t[VWD2013_VSIX_INSTALL_ROOT]\\Common7\\IDE\\VSIXInstaller.exe\t",
34 "CustomAction:Vwd2015VsixWhenVSAbsent\t51\tVS_VSIX_INSTALLER_PATH\t[VWD2015_VSIX_INSTALL_ROOT]\\Common7\\IDE\\VSIXInstaller.exe\t",
35 "CustomAction:Wix4VSFindInstances_X86\t257\tVSCA_X86\tFindInstances\t",
36 }, results);
37 }
38
39 [Fact]
40 public void CanBuildUsingVsixPackageOnArm64()
41 {
42 var folder = TestData.Get(@"TestData\UsingVsixPackage");
43 var build = new Builder(folder, typeof(VSExtensionFactory), new[] { folder });
44
45 var results = build.BuildAndQuery(BuildARM64, "CustomAction", "Property");
46
47 var customActionResults = results.Where(r => r.StartsWith("CustomAction:")).ToArray();
48 WixAssert.CompareLineByLine(new[]
49 {
50 "CustomAction:SetVS2010Vsix\t51\tVS_VSIX_INSTALLER_PATH\t[VS2010_VSIX_INSTALLER_PATH]\t",
51 "CustomAction:SetVS2012Vsix\t51\tVS_VSIX_INSTALLER_PATH\t[VS2012_VSIX_INSTALLER_PATH]\t",
52 "CustomAction:SetVS2013Vsix\t51\tVS_VSIX_INSTALLER_PATH\t[VS2013_VSIX_INSTALLER_PATH]\t",
53 "CustomAction:SetVS2015Vsix\t51\tVS_VSIX_INSTALLER_PATH\t[VS2015_VSIX_INSTALLER_PATH]\t",
54 "CustomAction:vimLa9TyFoAVwf8JmA0_ZJHA69J2fo\t3122\tVS_VSIX_INSTALLER_PATH\t/q \"[#filzi8nwT8Ta133xcfp7qSIdGdRiC0]\" /admin\t",
55 "CustomAction:viuMpl8IvFSDAzTulrmpAzBwAmCRTQ\t1074\tVS_VSIX_INSTALLER_PATH\t/q \"[#filzi8nwT8Ta133xcfp7qSIdGdRiC0]\"\t",
56 "CustomAction:vrmLa9TyFoAVwf8JmA0_ZJHA69J2fo\t3442\tVS_VSIX_INSTALLER_PATH\t/q /u:\"ExampleVsix\" /admin\t",
57 "CustomAction:vruMpl8IvFSDAzTulrmpAzBwAmCRTQ\t1394\tVS_VSIX_INSTALLER_PATH\t/q /u:\"ExampleVsix\"\t",
58 "CustomAction:vumLa9TyFoAVwf8JmA0_ZJHA69J2fo\t3186\tVS_VSIX_INSTALLER_PATH\t/q /u:\"ExampleVsix\" /admin\t",
59 "CustomAction:vuuMpl8IvFSDAzTulrmpAzBwAmCRTQ\t1138\tVS_VSIX_INSTALLER_PATH\t/q /u:\"ExampleVsix\"\t",
60 "CustomAction:Vwd2012VsixWhenVSAbsent\t51\tVS_VSIX_INSTALLER_PATH\t[VWD2012_VSIX_INSTALL_ROOT]\\Common7\\IDE\\VSIXInstaller.exe\t",
61 "CustomAction:Vwd2013VsixWhenVSAbsent\t51\tVS_VSIX_INSTALLER_PATH\t[VWD2013_VSIX_INSTALL_ROOT]\\Common7\\IDE\\VSIXInstaller.exe\t",
62 "CustomAction:Vwd2015VsixWhenVSAbsent\t51\tVS_VSIX_INSTALLER_PATH\t[VWD2015_VSIX_INSTALL_ROOT]\\Common7\\IDE\\VSIXInstaller.exe\t",
63 "CustomAction:Wix4VSFindInstances_A64\t257\tVSCA_A64\tFindInstances\t",
64 }, customActionResults);
65
66 var propertyResults = results.Single(r => r.StartsWith("Property:SecureCustomProperties")).Split('\t')[1].Split(';');
67 WixAssert.CompareLineByLine(new[]
68 {
69 "VS_VSIX_INSTALLER_PATH",
70 "VS2010_VSIX_INSTALLER_PATH",
71 "VS2012_VSIX_INSTALLER_PATH",
72 "VS2013_VSIX_INSTALLER_PATH",
73 "VS2015_VSIX_INSTALLER_PATH",
74 "VS2017_IDE_DIR",
75 "VS2017_ROOT_FOLDER",
76 "VS2017DEVENV",
77 "VS2019_IDE_VCSHARP_PROJECTSYSTEM_INSTALLED",
78 "VS2022_ROOT_FOLDER",
79 "WIX_DOWNGRADE_DETECTED",
80 "WIX_UPGRADE_DETECTED",
81 }, propertyResults);
82 }
83
84 private static void Build(string[] args)
85 {
86 var result = WixRunner.Execute(args)
87 .AssertSuccess();
88 }
89
90 private static void BuildARM64(string[] args)
91 {
92 var newArgs = args.ToList();
93 newArgs.Add("-platform");
94 newArgs.Add("arm64");
95
96 var result = WixRunner.Execute(newArgs.ToArray());
97 result.AssertSuccess();
98 }
99 }
100 }