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
+}