Пример #1
0
        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);
            }
        }
Пример #2
0
        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);
        }