diff options
author | Bevan Weiss <bevan.weiss@gmail.com> | 2024-08-02 21:45:46 +1000 |
---|---|---|
committer | Bob Arnson <github@bobs.org> | 2024-09-02 23:45:08 -0400 |
commit | 97e2fb014127a390118dd9cbb6b9e0475123a2c9 (patch) | |
tree | 70891e4ff79f388dd6ace1d3ff1fff38a8982b43 | |
parent | 1011c5609bc12ded5188dc76484fc5075d24617c (diff) | |
download | wix-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>
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 | ||
237 | LExit: | 237 | LExit: |
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 | |||
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 | } | ||