public void Load() { Clear(); try { foreach (var serviceInstallElement in _document.GetProductModuleOrFragmentElement().Descendants(ns + "ServiceInstall")) { IsWiXServiceInstall isWiXServiceInstall = new IsWiXServiceInstall(_document, serviceInstallElement); //Autoinstantiate a ServiceControl element when one does not exist if (serviceInstallElement.Parent.Descendants(ns + "ServiceControl").Count().Equals(0)) { XElement serviceControlElement = new XElement(ns + "ServiceControl"); serviceControlElement.SetAttributeValue("Id", isWiXServiceInstall.Id); serviceControlElement.SetAttributeValue("Name", isWiXServiceInstall.Name); serviceInstallElement.AddAfterSelf(serviceControlElement); } IsWiXServiceControl isWiXServiceControl = new IsWiXServiceControl(_document, serviceInstallElement.Parent.Descendants(ns + "ServiceControl").First()); IsWiXService isWiXService = new IsWiXService() { ServiceInstall = isWiXServiceInstall, ServiceControl = isWiXServiceControl }; Add(isWiXService); } } catch (Exception ex) { throw new Exception("Error parsing XML. Please check your Property elements.\r\n" + ex.Message); } }
public IsWiXService Create(string name, string fileId) { XElement serviceInstallElement = new XElement(ns + "ServiceInstall"); serviceInstallElement.SetAttributeValue("Id", "si" + IsWiXHelpers.GetMd5Hash(name)); serviceInstallElement.SetAttributeValue("Name", name); serviceInstallElement.SetAttributeValue("DisplayName", name); serviceInstallElement.SetAttributeValue("Description", name); serviceInstallElement.SetAttributeValue("ErrorControl", "normal"); serviceInstallElement.SetAttributeValue("Start", "auto"); serviceInstallElement.SetAttributeValue("Type", "ownProcess"); var elements = from a in _document.Descendants(ns + "File") where a.Attribute("Id").Value == fileId select a; XElement fileElement = elements.First(); fileElement.AddAfterSelf(serviceInstallElement); XElement serviceControlElement = new XElement(ns + "ServiceControl"); serviceControlElement.SetAttributeValue("Id", "sc" + IsWiXHelpers.GetMd5Hash(name)); serviceControlElement.SetAttributeValue("Name", name); serviceControlElement.SetAttributeValue("Start", "install"); serviceControlElement.SetAttributeValue("Stop", "both"); serviceControlElement.SetAttributeValue("Remove", "both"); serviceControlElement.SetAttributeValue("Wait", "yes"); serviceInstallElement.AddAfterSelf(serviceControlElement); IsWiXServiceInstall isWiXServiceInstall = new IsWiXServiceInstall(_document, serviceInstallElement); IsWiXServiceControl isWiXServiceControl = new IsWiXServiceControl(_document, serviceControlElement); IsWiXService isWiXService = new IsWiXService() { ServiceInstall = isWiXServiceInstall, ServiceControl = isWiXServiceControl }; this.Add(isWiXService); return(isWiXService); }