aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBevan Weiss <bevan.weiss@gmail.com>2024-08-02 21:45:46 +1000
committerBob Arnson <github@bobs.org>2024-09-02 23:45:08 -0400
commit97e2fb014127a390118dd9cbb6b9e0475123a2c9 (patch)
tree70891e4ff79f388dd6ace1d3ff1fff38a8982b43
parent1011c5609bc12ded5188dc76484fc5075d24617c (diff)
downloadwix-97e2fb014127a390118dd9cbb6b9e0475123a2c9.tar.gz
wix-97e2fb014127a390118dd9cbb6b9e0475123a2c9.tar.bz2
wix-97e2fb014127a390118dd9cbb6b9e0475123a2c9.zip
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>
-rw-r--r--src/ext/Util/ca/RemoveFoldersEx.cpp2
-rw-r--r--src/test/msi/TestData/RemoveFolderExTests/RemoveFolderExTest/Package.wxs15
-rw-r--r--src/test/msi/TestData/RemoveFolderExTests/RemoveFolderExTest/RemoveFolderExTest.wixproj13
-rw-r--r--src/test/msi/WixToolsetTest.MsiE2E/RemoveFolderExTests.cs82
4 files changed, 111 insertions, 1 deletions
diff --git a/src/ext/Util/ca/RemoveFoldersEx.cpp b/src/ext/Util/ca/RemoveFoldersEx.cpp
index 9523dda7..f162e929 100644
--- a/src/ext/Util/ca/RemoveFoldersEx.cpp
+++ b/src/ext/Util/ca/RemoveFoldersEx.cpp
@@ -232,7 +232,7 @@ extern "C" UINT WINAPI WixRemoveFoldersEx(
232 { 232 {
233 hr = S_OK; 233 hr = S_OK;
234 } 234 }
235 ExitOnFailure(hr, "Failure occured while processing Wix4RemoveFolderEx table"); 235 ExitOnFailure(hr, "Failure occurred while processing Wix4RemoveFolderEx table");
236 236
237LExit: 237LExit:
238#ifndef _WIN64 238#ifndef _WIN64
diff --git a/src/test/msi/TestData/RemoveFolderExTests/RemoveFolderExTest/Package.wxs b/src/test/msi/TestData/RemoveFolderExTests/RemoveFolderExTest/Package.wxs
new file mode 100644
index 00000000..3f8cf369
--- /dev/null
+++ b/src/test/msi/TestData/RemoveFolderExTests/RemoveFolderExTest/Package.wxs
@@ -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>
diff --git a/src/test/msi/TestData/RemoveFolderExTests/RemoveFolderExTest/RemoveFolderExTest.wixproj b/src/test/msi/TestData/RemoveFolderExTests/RemoveFolderExTest/RemoveFolderExTest.wixproj
new file mode 100644
index 00000000..1c71388a
--- /dev/null
+++ b/src/test/msi/TestData/RemoveFolderExTests/RemoveFolderExTest/RemoveFolderExTest.wixproj
@@ -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>
diff --git a/src/test/msi/WixToolsetTest.MsiE2E/RemoveFolderExTests.cs b/src/test/msi/WixToolsetTest.MsiE2E/RemoveFolderExTests.cs
new file mode 100644
index 00000000..c6780a1b
--- /dev/null
+++ b/src/test/msi/WixToolsetTest.MsiE2E/RemoveFolderExTests.cs
@@ -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
3namespace WixToolsetTest.MsiE2E;
4
5using System;
6using System.IO;
7using WixTestTools;
8using Xunit;
9using Xunit.Abstractions;
10
11public 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}