From 3d5c85c88fc7440b0e232173a18f80f3363c039a Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Fri, 19 Mar 2021 12:10:05 -0700 Subject: RemoveFolderEx.Property should be modularized as a Column The value in the column is the name of a Property not a formatted field that can contain properties. Fixes wixtoolset/issues#4449 --- .../TestData/RemoveFolderEx/Module.wxs | 15 +++++++++++++++ .../TestData/RemoveFolderEx/ModuleComponents.wxs | 10 ++++++++++ src/test/WixToolsetTest.Util/UtilExtensionFixture.cs | 15 +++++++++++++++ src/wixext/UtilTableDefinitions.cs | 2 +- 4 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 src/test/WixToolsetTest.Util/TestData/RemoveFolderEx/Module.wxs create mode 100644 src/test/WixToolsetTest.Util/TestData/RemoveFolderEx/ModuleComponents.wxs diff --git a/src/test/WixToolsetTest.Util/TestData/RemoveFolderEx/Module.wxs b/src/test/WixToolsetTest.Util/TestData/RemoveFolderEx/Module.wxs new file mode 100644 index 00000000..39674278 --- /dev/null +++ b/src/test/WixToolsetTest.Util/TestData/RemoveFolderEx/Module.wxs @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/test/WixToolsetTest.Util/TestData/RemoveFolderEx/ModuleComponents.wxs b/src/test/WixToolsetTest.Util/TestData/RemoveFolderEx/ModuleComponents.wxs new file mode 100644 index 00000000..236d9df0 --- /dev/null +++ b/src/test/WixToolsetTest.Util/TestData/RemoveFolderEx/ModuleComponents.wxs @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/test/WixToolsetTest.Util/UtilExtensionFixture.cs b/src/test/WixToolsetTest.Util/UtilExtensionFixture.cs index 0761a004..3e2a97f9 100644 --- a/src/test/WixToolsetTest.Util/UtilExtensionFixture.cs +++ b/src/test/WixToolsetTest.Util/UtilExtensionFixture.cs @@ -129,6 +129,21 @@ namespace WixToolsetTest.Util }, results.OrderBy(s => s).ToArray()); } + [Fact] + public void CanBuildRemoveFolderExInMergeModule() + { + var folder = TestData.Get(@"TestData\RemoveFolderEx"); + var build = new Builder(folder, typeof(UtilExtensionFactory), new[] { folder }, "test.msm"); + + var results = build.BuildAndQuery(BuildX64, "Binary", "CustomAction", "RemoveFile", "Wix4RemoveFolderEx"); + WixAssert.CompareLineByLine(new[] + { + "Binary:Wix4UtilCA_X64.047730A5_30FE_4A62_A520_DA9381B8226A\t[Binary data]", + "CustomAction:Wix4RemoveFoldersEx_X64.047730A5_30FE_4A62_A520_DA9381B8226A\t65\tWix4UtilCA_X64.047730A5_30FE_4A62_A520_DA9381B8226A WixRemoveFoldersEx\t", + "Wix4RemoveFolderEx:wrfB3e9CDihkNwm06LohylbJcjZ91w.047730A5_30FE_4A62_A520_DA9381B8226A\tfilh4juyUVjoUcWWtcQmd5L07FoON4.047730A5_30FE_4A62_A520_DA9381B8226A\tRemoveProp.047730A5_30FE_4A62_A520_DA9381B8226A\t3", + }, results.OrderBy(s => s).ToArray()); + } + [Fact] public void CanBuildWithEventManifest() { diff --git a/src/wixext/UtilTableDefinitions.cs b/src/wixext/UtilTableDefinitions.cs index 1908915c..eff5aaf6 100644 --- a/src/wixext/UtilTableDefinitions.cs +++ b/src/wixext/UtilTableDefinitions.cs @@ -31,7 +31,7 @@ namespace WixToolset.Util { new ColumnDefinition("Wix4RemoveFolderEx", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Identifier for the WixRemoveFolderEx row in the package.", modularizeType: ColumnModularizeType.Column), new ColumnDefinition("Component_", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Identifier, keyTable: "Component", keyColumn: 1, description: "Foreign key into the Component table used to determine install state", modularizeType: ColumnModularizeType.Column), - new ColumnDefinition("Property", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Identifier, description: "Name of Property that contains the root of the directory tree to remove.", modularizeType: ColumnModularizeType.Property), + new ColumnDefinition("Property", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Identifier, description: "Name of Property that contains the root of the directory tree to remove.", modularizeType: ColumnModularizeType.Column), new ColumnDefinition("InstallMode", ColumnType.Number, 2, primaryKey: false, nullable: false, ColumnCategory.Unknown, minValue: 1, maxValue: 3, description: "1 == Remove only when the associated component is being installed (msiInstallStateLocal or msiInstallStateSource), 2 == Remove only when the associated component is being removed (msiInstallStateAbsent), 3 = Remove in either of the above cases."), }, symbolIdIsPrimaryKey: true -- cgit v1.2.3-55-g6feb