public static string GenerateMsiCondition(WixItem item)
        {
            HashSet <WixItem> processedItems = new HashSet <WixItem>();

            string[] conditions = WixBackendCompilerServices.GenerateMsiConditions(item, processedItems);
            return(conditions.Length == 0 ? null : String.Join(" AND ", conditions));
        }
        private static string[] GenerateMsiConditions(WixItem item, HashSet <WixItem> processedItems)
        {
            List <string> conditions = new List <string>();

            if (!processedItems.Contains(item))
            {
                processedItems.Add(item);

                if (item.Group != null)
                {
                    conditions.AddRange(WixBackendCompilerServices.GenerateMsiConditions(item.Group, processedItems));
                }

                if (item.Parent != null)
                {
                    conditions.AddRange(WixBackendCompilerServices.GenerateMsiConditions(item.Parent, processedItems));
                }

                string condition = Install.GetCondition(item.Item);
                if (!String.IsNullOrEmpty(condition))
                {
                    conditions.Add(condition);
                }
            }

            return(conditions.ToArray());
        }