@joebigelow / wix-1 / commits / 97e2fb01

A basic install / uninstall test for RemoveFoldersEx Contains no files etc to verify that Remove action can still occur without other elements bringing in the RemoveFiles Standard Action

A basic install / uninstall test for RemoveFoldersEx Contains no files etc to verify that Remove action can still occur without other elements bringing in the RemoveFiles Standard Action Signed-off-by: Bevan Weiss <bevan.weiss@gmail.com>

Bevan Weiss committed Aug 2, 2024 at 21:45 UTC 97e2fb014127a390118dd9cbb6b9e0475123a2c9
4 files changed +111 -1
src/ext/Util/ca/RemoveFoldersEx.cpp
+1 -1
@@ -232,7 +232,7 @@ extern "C" UINT WINAPI WixRemoveFoldersEx(
232 {
233 hr = S_OK;
234 }
235 - ExitOnFailure(hr, "Failure occured while processing Wix4RemoveFolderEx table");
235 + ExitOnFailure(hr, "Failure occurred while processing Wix4RemoveFolderEx table");
236
237 LExit:
238 #ifndef _WIN64
src/test/msi/TestData/RemoveFolderExTests/RemoveFolderExTest/Package.wxs new
+15
@@ -0,0 +1,15 @@
1 +<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"
2 + xmlns:util="http://wixtoolset.org/schemas/v4/wxs/util">
3 + <Fragment>
4 + <ComponentGroup Id="ProductComponents">
5 + <ComponentRef Id="Component1" />
6 + </ComponentGroup>
7 + </Fragment>
8 +
9 + <Fragment>
10 + <SetProperty Id="REMOVEFOLDEREXTESTDIR" Value="C:\RemoveFolderExTest" Sequence="execute" Before="Wix4RemoveFoldersEx_X86" />
11 + <Component Id="Component1" Guid="{2D735A5F-D152-4B2E-B935-E11AD8C3FB25}">
12 + <util:RemoveFolderEx Id ="RemoveAllTheFolders" On="both" Property="REMOVEFOLDEREXTESTDIR" />
13 + </Component>
14 + </Fragment>
15 +</Wix>
src/test/msi/TestData/RemoveFolderExTests/RemoveFolderExTest/RemoveFolderExTest.wixproj new
+13
@@ -0,0 +1,13 @@
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 + <PropertyGroup>
4 + <UpgradeCode>{A75B81F4-3335-4B4D-B766-303E136ED374}</UpgradeCode>
5 + <ProductComponentsRef>true</ProductComponentsRef>
6 + </PropertyGroup>
7 + <ItemGroup>
8 + <Compile Include="..\..\Templates\Product.wxs" Link="Product.wxs" />
9 + </ItemGroup>
10 + <ItemGroup>
11 + <PackageReference Include="WixToolset.Util.wixext" />
12 + </ItemGroup>
13 +</Project>
src/test/msi/WixToolsetTest.MsiE2E/RemoveFolderExTests.cs new
+82
@@ -0,0 +1,82 @@
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.MsiE2E;
4 +
5 +using System;
6 +using System.IO;
7 +using WixTestTools;
8 +using Xunit;
9 +using Xunit.Abstractions;
10 +
11 +public class RemoveFolderExTests : MsiE2ETests
12 +{
13 + public RemoveFolderExTests(ITestOutputHelper testOutputHelper) : base(testOutputHelper)
14 + {
15 + }
16 +
17 + [Fact]
18 + public void CanRemoveFolderExOnInstallAndUninstall()
19 + {
20 + var removeFolderExTestDir1 = "C:\\RemoveFolderExTest";
21 + var removeFolderExTestFile1 = Path.Combine(removeFolderExTestDir1, "testfile.txt");
22 + var removeFolderExTestDir2 = Path.Combine(removeFolderExTestDir1, "TestFolder1");
23 + var removeFolderExTestFile2 = Path.Combine(removeFolderExTestDir1, "TestFolder1", "testfile");
24 +
25 + try
26 + {
27 + var product = this.CreatePackageInstaller("RemoveFolderExTest");
28 +
29 + Directory.CreateDirectory(removeFolderExTestDir1);
30 + File.Create(removeFolderExTestFile1).Dispose();
31 + Directory.CreateDirectory(removeFolderExTestDir2);
32 + File.Create(removeFolderExTestFile2).Dispose();
33 +
34 + if( !Directory.Exists(removeFolderExTestDir1)
35 + || !File.Exists(removeFolderExTestFile1)
36 + || !Directory.Exists(removeFolderExTestDir2)
37 + || !File.Exists(removeFolderExTestFile2))
38 + {
39 + Assert.Fail("Failed to create initial folder and file structure before install test");
40 + }
41 +
42 + product.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS);
43 +
44 + Assert.False(Directory.Exists(removeFolderExTestDir1), $"Failed to remove {removeFolderExTestDir1} on install");
45 + Assert.False(File.Exists(removeFolderExTestFile1), $"Failed to remove {removeFolderExTestFile1} on install");
46 + Assert.False(Directory.Exists(removeFolderExTestDir2), $"Failed to remove {removeFolderExTestDir2} on install");
47 + Assert.False(File.Exists(removeFolderExTestFile1), $"Failed to remove {removeFolderExTestFile2} on install");
48 +
49 +
50 + Directory.CreateDirectory(removeFolderExTestDir1);
51 + File.Create(removeFolderExTestFile1).Dispose();
52 + Directory.CreateDirectory(removeFolderExTestDir2);
53 + File.Create(removeFolderExTestFile2).Dispose();
54 +
55 + if (!Directory.Exists(removeFolderExTestDir1)
56 + || !File.Exists(removeFolderExTestFile1)
57 + || !Directory.Exists(removeFolderExTestDir2)
58 + || !File.Exists(removeFolderExTestFile2))
59 + {
60 + Assert.Fail("Failed to create initial folder and file structure before uninstall test");
61 + }
62 +
63 + product.UninstallProduct(MSIExec.MSIExecReturnCode.SUCCESS);
64 +
65 + Assert.False(Directory.Exists(removeFolderExTestDir1), $"Failed to remove {removeFolderExTestDir1} on uninstall");
66 + Assert.False(File.Exists(removeFolderExTestFile1), $"Failed to remove {removeFolderExTestFile1} on uninstall");
67 + Assert.False(Directory.Exists(removeFolderExTestDir2), $"Failed to remove {removeFolderExTestDir2} on uninstall");
68 + Assert.False(File.Exists(removeFolderExTestFile2), $"Failed to remove {removeFolderExTestFile2} on uninstall");
69 +
70 + }
71 + finally
72 + {
73 + try
74 + {
75 + Directory.Delete(removeFolderExTestDir1, true);
76 + }
77 + catch
78 + {
79 + }
80 + }
81 + }
82 +}