private void LoadFeatureTree(MsiFeature feature, TreeNode node) { TreeNode newNode = null; if (node == null) { newNode = tvFeatures.Nodes.Add(feature.Title); newNode.Tag = feature; } else { newNode = node.Nodes.Add(feature.Title); newNode.Tag = feature; } newNode.Checked = feature.IsAlreadyInstalled; if (feature.ChildFeatures != null) { foreach (MsiFeature childFeature in feature.ChildFeatures) { LoadFeatureTree(childFeature, newNode); } } }
private void tvFeatures_AfterSelect(object sender, TreeViewEventArgs e) { if (e.Node.Tag != null) { MsiFeature feature = (MsiFeature)e.Node.Tag; lblDescription.Text = feature.Description; lblFileCost.Text = "Feature Cost " + (feature.FeatureCost / 1024) + " K bytes"; lblTotalFeatureCost.Text = "Total feature cost inclusing child features " + (feature.TotalCost / 1024) + " K bytes"; } }
private void UpdateSelectedFeatures(TreeNode node) { if (node.Tag != null) { MsiFeature feature = (MsiFeature)node.Tag; if (node.Checked) { Globals.Instance.InstallFeatures.Add(feature); } else if (node.Checked == false && feature.IsAlreadyInstalled) { Globals.Instance.UninstallFeatures.Add(feature); } } if (node.Nodes != null) { foreach (TreeNode childNode in node.Nodes) { UpdateSelectedFeatures(childNode); } } }