Пример #1
0
        private int DefaultInstallOrder(InstallItem line)
        {
            var itemRef = line.Reference;

            if (line.Reference.Type == InstallItem.ScriptType)
            {
                itemRef = ItemReference.FromElement(line.Script);
            }
            return(DefaultInstallOrder(itemRef));
        }
Пример #2
0
        private void RemoveDeletesForItemsWithMultipleScripts(XmlElement[] allItems)
        {
            var bestActionPerItem = allItems
                                    .Select(el => new { Ref = ItemReference.FromElement(el), Action = el.Attribute("action") })
                                    .GroupBy(i => i.Ref)
                                    .ToDictionary(g => g.Key, g => g.Max(i => i.Action));

            var conflictingDeletesToRemove = allItems
                                             .Where(el => el.Attribute("action") == "delete" &&
                                                    bestActionPerItem[ItemReference.FromElement(el)] != "delete")
                                             .ToArray();

            foreach (var item in conflictingDeletesToRemove)
            {
                var parent = item.Parent();
                item.Detach();
                CleanUp(parent);
            }
        }