From 6e2e67ab55c75f4655397588c0dcc64f50d22f92 Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Mon, 13 Jan 2020 14:41:17 -0800 Subject: Remove WixActionRowCollection and duplicate actions.xml --- .../Bind/CopyTransformDataCommand.cs | 79 ++++++++++++---------- .../Bind/SequenceActionsCommand.cs | 13 ++-- 2 files changed, 46 insertions(+), 46 deletions(-) (limited to 'src/WixToolset.Core.WindowsInstaller/Bind') diff --git a/src/WixToolset.Core.WindowsInstaller/Bind/CopyTransformDataCommand.cs b/src/WixToolset.Core.WindowsInstaller/Bind/CopyTransformDataCommand.cs index 1651f9d8..107f3208 100644 --- a/src/WixToolset.Core.WindowsInstaller/Bind/CopyTransformDataCommand.cs +++ b/src/WixToolset.Core.WindowsInstaller/Bind/CopyTransformDataCommand.cs @@ -433,59 +433,63 @@ namespace WixToolset.Core.WindowsInstaller.Bind /// The file row that contains information about the patched file. private void AddPatchFilesActionToSequenceTable(SequenceTable table, WindowsInstallerData mainTransform, WindowsInstallerData pairedTransform, Row mainFileRow) { + var tableName = table.ToString(); + // Find/add PatchFiles action (also determine sequence for it). // Search mainTransform first, then pairedTransform (pairedTransform overrides). - bool hasPatchFilesAction = false; - int seqInstallFiles = 0; - int seqDuplicateFiles = 0; - string tableName = table.ToString(); + var hasPatchFilesAction = false; + var installFilesSequence = 0; + var duplicateFilesSequence = 0; TestSequenceTableForPatchFilesAction( mainTransform.Tables[tableName], ref hasPatchFilesAction, - ref seqInstallFiles, - ref seqDuplicateFiles); + ref installFilesSequence, + ref duplicateFilesSequence); TestSequenceTableForPatchFilesAction( pairedTransform.Tables[tableName], ref hasPatchFilesAction, - ref seqInstallFiles, - ref seqDuplicateFiles); + ref installFilesSequence, + ref duplicateFilesSequence); if (!hasPatchFilesAction) { - Table iesTable = pairedTransform.EnsureTable(this.TableDefinitions[tableName]); - if (0 == iesTable.Rows.Count) - { - iesTable.Operation = TableOperation.Add; - } + WindowsInstallerStandard.TryGetStandardAction(tableName, "PatchFiles", out var patchFilesActionTuple); + + var sequence = patchFilesActionTuple.Sequence; - Row patchAction = iesTable.CreateRow(null); - WixActionRow wixPatchAction = WindowsInstallerStandardInternal.GetStandardActionRows()[table, "PatchFiles"]; - int sequence = wixPatchAction.Sequence; // Test for default sequence value's appropriateness - if (seqInstallFiles >= sequence || (0 != seqDuplicateFiles && seqDuplicateFiles <= sequence)) + if (installFilesSequence >= sequence || (0 != duplicateFilesSequence && duplicateFilesSequence <= sequence)) { - if (0 != seqDuplicateFiles) + if (0 != duplicateFilesSequence) { - if (seqDuplicateFiles < seqInstallFiles) + if (duplicateFilesSequence < installFilesSequence) { - throw new WixException(ErrorMessages.InsertInvalidSequenceActionOrder(mainFileRow.SourceLineNumbers, iesTable.Name, "InstallFiles", "DuplicateFiles", wixPatchAction.Action)); + throw new WixException(ErrorMessages.InsertInvalidSequenceActionOrder(mainFileRow.SourceLineNumbers, tableName, "InstallFiles", "DuplicateFiles", patchFilesActionTuple.Action)); } else { - sequence = (seqDuplicateFiles + seqInstallFiles) / 2; - if (seqInstallFiles == sequence || seqDuplicateFiles == sequence) + sequence = (duplicateFilesSequence + installFilesSequence) / 2; + if (installFilesSequence == sequence || duplicateFilesSequence == sequence) { - throw new WixException(ErrorMessages.InsertSequenceNoSpace(mainFileRow.SourceLineNumbers, iesTable.Name, "InstallFiles", "DuplicateFiles", wixPatchAction.Action)); + throw new WixException(ErrorMessages.InsertSequenceNoSpace(mainFileRow.SourceLineNumbers, tableName, "InstallFiles", "DuplicateFiles", patchFilesActionTuple.Action)); } } } else { - sequence = seqInstallFiles + 1; + sequence = installFilesSequence + 1; } } - patchAction[0] = wixPatchAction.Action; - patchAction[1] = wixPatchAction.Condition; + + var sequenceTable = pairedTransform.EnsureTable(this.TableDefinitions[tableName]); + if (0 == sequenceTable.Rows.Count) + { + sequenceTable.Operation = TableOperation.Add; + } + + var patchAction = sequenceTable.CreateRow(null); + patchAction[0] = patchFilesActionTuple.Action; + patchAction[1] = patchFilesActionTuple.Condition; patchAction[2] = sequence; patchAction.Operation = RowOperation.Add; } @@ -494,27 +498,28 @@ namespace WixToolset.Core.WindowsInstaller.Bind /// /// Tests sequence table for PatchFiles and associated actions /// - /// The table to test. + /// The table to test. /// Set to true if PatchFiles action is found. Left unchanged otherwise. - /// Set to sequence value of InstallFiles action if found. Left unchanged otherwise. - /// Set to sequence value of DuplicateFiles action if found. Left unchanged otherwise. - private static void TestSequenceTableForPatchFilesAction(Table iesTable, ref bool hasPatchFilesAction, ref int seqInstallFiles, ref int seqDuplicateFiles) + /// Set to sequence value of InstallFiles action if found. Left unchanged otherwise. + /// Set to sequence value of DuplicateFiles action if found. Left unchanged otherwise. + private static void TestSequenceTableForPatchFilesAction(Table sequenceTable, ref bool hasPatchFilesAction, ref int installFilesSequence, ref int duplicateFilesSequence) { - if (null != iesTable) + if (null != sequenceTable) { - foreach (Row iesRow in iesTable.Rows) + foreach (var row in sequenceTable.Rows) { - if (String.Equals("PatchFiles", (string)iesRow[0], StringComparison.Ordinal)) + var actionName = row.FieldAsString(0); + if (String.Equals("PatchFiles", actionName, StringComparison.Ordinal)) { hasPatchFilesAction = true; } - if (String.Equals("InstallFiles", (string)iesRow[0], StringComparison.Ordinal)) + else if (String.Equals("InstallFiles", actionName, StringComparison.Ordinal)) { - seqInstallFiles = (int)iesRow.Fields[2].Data; + installFilesSequence = row.FieldAsInteger(2); } - if (String.Equals("DuplicateFiles", (string)iesRow[0], StringComparison.Ordinal)) + else if (String.Equals("DuplicateFiles", actionName, StringComparison.Ordinal)) { - seqDuplicateFiles = (int)iesRow.Fields[2].Data; + duplicateFilesSequence = row.FieldAsInteger(2); } } } diff --git a/src/WixToolset.Core.WindowsInstaller/Bind/SequenceActionsCommand.cs b/src/WixToolset.Core.WindowsInstaller/Bind/SequenceActionsCommand.cs index 23a5fcba..e9b0d612 100644 --- a/src/WixToolset.Core.WindowsInstaller/Bind/SequenceActionsCommand.cs +++ b/src/WixToolset.Core.WindowsInstaller/Bind/SequenceActionsCommand.cs @@ -18,16 +18,12 @@ namespace WixToolset.Core.WindowsInstaller.Bind this.Section = section; this.RelativeActionsForActions = new Dictionary(); - - this.StandardActionsById = WindowsInstallerStandard.StandardActions().ToDictionary(a => a.Id.Id); } private IntermediateSection Section { get; } private Dictionary RelativeActionsForActions { get; } - private Dictionary StandardActionsById { get; } - public IMessaging Messaging { private get; set; } /// @@ -63,7 +59,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind // Unsequenced action (allowed for certain standard actions). if (null == actionTuple.Before && null == actionTuple.After && !actionTuple.Sequence.HasValue) { - if (this.StandardActionsById.TryGetValue(actionTuple.Id.Id, out var standardAction)) + if (WindowsInstallerStandard.TryGetStandardAction(actionTuple.Id.Id, out var standardAction)) { // Populate the sequence from the standard action actionTuple.Sequence = standardAction.Sequence; @@ -154,7 +150,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind // on the presence of a particular table. if (requiredActionTuples.ContainsKey("InstallExecuteSequence/DuplicateFiles") && !requiredActionTuples.ContainsKey("InstallExecuteSequence/InstallFiles")) { - var standardAction = this.StandardActionsById["InstallExecuteSequence/InstallFiles"]; + WindowsInstallerStandard.TryGetStandardAction("InstallExecuteSequence/InstallFiles", out var standardAction); requiredActionTuples.Add(standardAction.Id.Id, standardAction); } @@ -201,8 +197,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind foreach (var actionId in requiredActionIds) { - var standardAction = this.StandardActionsById[actionId]; - + WindowsInstallerStandard.TryGetStandardAction(actionId, out var standardAction); overridableActionTuples.Add(standardAction.Id.Id, standardAction); } @@ -597,7 +592,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind if (!requiredActionTuples.TryGetValue(parentActionKey, out var parentActionTuple)) { // If the missing parent action is a standard action (with a suggested sequence number), add it. - if (this.StandardActionsById.TryGetValue(parentActionKey, out parentActionTuple)) + if (WindowsInstallerStandard.TryGetStandardAction(parentActionKey, out parentActionTuple)) { // Create a clone to avoid modifying the static copy of the object. // TODO: consider this: parentActionTuple = parentActionTuple.Clone(); -- cgit v1.2.3-55-g6feb