aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Mensching <rob@firegiant.com>2024-03-27 12:15:44 -0700
committerRob Mensching <rob@firegiant.com>2024-04-05 09:46:43 -0700
commit6ed045ee1fe69be037a999df2e57122a25f0dedf (patch)
tree33b0f815f0009d174f8a3bc4f31d53a54dad0033
parent4456c7ab82376a85f362ccb1796075e1e66447d6 (diff)
downloadwix-6ed045ee1fe69be037a999df2e57122a25f0dedf.tar.gz
wix-6ed045ee1fe69be037a999df2e57122a25f0dedf.tar.bz2
wix-6ed045ee1fe69be037a999df2e57122a25f0dedf.zip
Add a managed custom action E2E test
-rw-r--r--src/test/msi/TestData/CustomActionTests/ManagedCustomActions/ManagedCustomActions.wixproj6
-rw-r--r--src/test/msi/TestData/CustomActionTests/ManagedCustomActions/Package.wxs32
-rw-r--r--src/test/msi/TestData/CustomActionTests/TestCA/CustomAction.config17
-rw-r--r--src/test/msi/TestData/CustomActionTests/TestCA/CustomAction.cs28
-rw-r--r--src/test/msi/TestData/CustomActionTests/TestCA/TestCA.csproj16
-rw-r--r--src/test/msi/WixToolsetTest.MsiE2E/CustomActionTests.cs23
6 files changed, 122 insertions, 0 deletions
diff --git a/src/test/msi/TestData/CustomActionTests/ManagedCustomActions/ManagedCustomActions.wixproj b/src/test/msi/TestData/CustomActionTests/ManagedCustomActions/ManagedCustomActions.wixproj
new file mode 100644
index 00000000..c11a7c79
--- /dev/null
+++ b/src/test/msi/TestData/CustomActionTests/ManagedCustomActions/ManagedCustomActions.wixproj
@@ -0,0 +1,6 @@
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<Project Sdk="WixToolset.Sdk">
3 <ItemGroup>
4 <ProjectReference Include="..\TestCA\TestCA.csproj" />
5 </ItemGroup>
6</Project>
diff --git a/src/test/msi/TestData/CustomActionTests/ManagedCustomActions/Package.wxs b/src/test/msi/TestData/CustomActionTests/ManagedCustomActions/Package.wxs
new file mode 100644
index 00000000..9b1d224a
--- /dev/null
+++ b/src/test/msi/TestData/CustomActionTests/ManagedCustomActions/Package.wxs
@@ -0,0 +1,32 @@
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<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
4 <Package Name="~Managed Custom Actions" Language="1033" Version="1.0.0.0" Manufacturer="Example Corporation" UpgradeCode="41B5F815-E7F6-44E0-B92A-AE95DFF683F9">
5 <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
6
7 <Feature Id="ProductFeature" Title="Feature with merged modules">
8 <Component Directory="INSTALLFOLDER">
9 <File Source="$(sys.SOURCEFILEPATH)" />
10 </Component>
11 </Feature>
12
13 <Binary Id="ManagedCA" SourceFile="TestCA.CA.dll" />
14
15 <CustomAction Id="ImmediateCA" BinaryRef="ManagedCA" DllEntry="ImmediateCA" Execute="immediate" Return="check" />
16 <CustomAction Id="DeferredCA" BinaryRef="ManagedCA" DllEntry="DeferredCA" Execute="deferred" Return="check" />
17
18 <InstallUISequence>
19 <Custom Action="ImmediateCA" Before="CostFinalize" />
20 </InstallUISequence>
21
22 <InstallExecuteSequence>
23 <Custom Action="DeferredCA" After="InstallFiles" />
24 </InstallExecuteSequence>
25 </Package>
26
27 <Fragment>
28 <StandardDirectory Id="ProgramFilesFolder">
29 <Directory Id="INSTALLFOLDER" Name="ManagedCA" />
30 </StandardDirectory>
31 </Fragment>
32</Wix>
diff --git a/src/test/msi/TestData/CustomActionTests/TestCA/CustomAction.config b/src/test/msi/TestData/CustomActionTests/TestCA/CustomAction.config
new file mode 100644
index 00000000..cfae001e
--- /dev/null
+++ b/src/test/msi/TestData/CustomActionTests/TestCA/CustomAction.config
@@ -0,0 +1,17 @@
1<?xml version="1.0" encoding="utf-8" ?>
2<configuration>
3 <startup useLegacyV2RuntimeActivationPolicy="true">
4 <!--
5 Use supportedRuntime tags to explicitly specify the version(s) of the .NET Framework runtime that
6 the custom action should run on. If no versions are specified, the chosen version of the runtime
7 will be the "best" match to what WixToolset.Dtf.CustomAction.dll was built against.
8
9 WARNING: leaving the version unspecified is dangerous as it introduces a risk of compatibility
10 problems with future versions of the .NET Framework runtime. It is highly recommended that you specify
11 only the version(s) of the .NET Framework runtime that you have tested against.
12
13 For more information https://learn.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/startup/startup-element
14 -->
15 <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
16 </startup>
17</configuration>
diff --git a/src/test/msi/TestData/CustomActionTests/TestCA/CustomAction.cs b/src/test/msi/TestData/CustomActionTests/TestCA/CustomAction.cs
new file mode 100644
index 00000000..6891f8da
--- /dev/null
+++ b/src/test/msi/TestData/CustomActionTests/TestCA/CustomAction.cs
@@ -0,0 +1,28 @@
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.TestCA
4{
5 using System;
6 using System.Collections.Generic;
7 using System.Linq;
8 using WixToolset.Dtf.WindowsInstaller;
9
10 public class CustomActions
11 {
12 [CustomAction]
13 public static ActionResult ImmediateCA(Session session)
14 {
15 session.Log("Begin ImmediateCA");
16
17 return ActionResult.Success;
18 }
19
20 [CustomAction]
21 public static ActionResult DeferredCA(Session session)
22 {
23 session.Log("Begin DeferredCA");
24
25 return ActionResult.Success;
26 }
27 }
28}
diff --git a/src/test/msi/TestData/CustomActionTests/TestCA/TestCA.csproj b/src/test/msi/TestData/CustomActionTests/TestCA/TestCA.csproj
new file mode 100644
index 00000000..80602295
--- /dev/null
+++ b/src/test/msi/TestData/CustomActionTests/TestCA/TestCA.csproj
@@ -0,0 +1,16 @@
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<Project Sdk="Microsoft.NET.Sdk">
4 <PropertyGroup>
5 <TargetFramework>net472</TargetFramework>
6 </PropertyGroup>
7
8 <ItemGroup>
9 <Content Include="CustomAction.config" CopyToOutputDirectory="PreserveNewest" />
10 </ItemGroup>
11
12 <ItemGroup>
13 <PackageReference Include="WixToolset.Dtf.CustomAction" />
14 <PackageReference Include="WixToolset.Dtf.WindowsInstaller" />
15 </ItemGroup>
16</Project>
diff --git a/src/test/msi/WixToolsetTest.MsiE2E/CustomActionTests.cs b/src/test/msi/WixToolsetTest.MsiE2E/CustomActionTests.cs
new file mode 100644
index 00000000..a30cf36f
--- /dev/null
+++ b/src/test/msi/WixToolsetTest.MsiE2E/CustomActionTests.cs
@@ -0,0 +1,23 @@
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.MsiE2E
4{
5 using System;
6 using WixTestTools;
7 using Xunit;
8 using Xunit.Abstractions;
9
10 public class CustomActionTests : MsiE2ETests
11 {
12 public CustomActionTests(ITestOutputHelper testOutputHelper) : base(testOutputHelper) { }
13
14 [RuntimeFact]
15 public void CanInstallAndUninstallWithManagedCustomAction()
16 {
17 var product = this.CreatePackageInstaller("ManagedCustomActions");
18 product.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS);
19
20 product.UninstallProduct(MSIExec.MSIExecReturnCode.SUCCESS);
21 }
22 }
23}