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 /src | |
| 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>
Diffstat (limited to 'src')
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 | } | ||
