Example #1
0
        public ElementEditForm(XmlNode elementNode, WixFiles wixFiles)
        {
            this.elementNode = elementNode;
            this.wixFiles = wixFiles;

            InitializeComponent();
        }
Example #2
0
 public DesignerForm(WixFiles wixFiles, XmlNode dialog)
 {
     dialogElement = dialog;
     controlMap = new Hashtable();
     this.wixFiles = wixFiles;
     this.MouseClick += new MouseEventHandler(DesignerForm_MouseClick);
 }
Example #3
0
        public SelectionOverlay(Control control, XmlNode xmlNode, WixFiles wixFiles)
        {
            this.control = control;
            this.xmlNode = xmlNode;
            this.wixFiles = wixFiles;

            ClientSize = new Size(control.Size.Width, control.Size.Height);
            Left = control.Left;
            Top = control.Top;

            control.Left = 0;
            control.Top = 0;

            control.MouseMove += new MouseEventHandler(OnMouseMoveControl);
            control.MouseDown += new MouseEventHandler(OnMouseDownControl);
            control.MouseUp += new MouseEventHandler(OnMouseUpControl);
            control.KeyDown += new KeyEventHandler(OnKeyDownControl);

            Controls.Add(control);

            Cursor = Cursors.SizeAll;

            OnLosesSelection += new EventHandler(onLostSelection);

            SetStyle(ControlStyles.Opaque, false); // optional
            SetStyle(ControlStyles.SupportsTransparentBackColor, true);
            BackColor = Color.FromArgb(0,0,0,0);
        }
Example #4
0
 public UITextElementAdapter(XmlNodeList uiTextNodes, WixFiles wixFiles)
     : base(wixFiles)
 {
     foreach (object o in uiTextNodes) {
         this.uiTextNodes.Add(o);
     }
 }
Example #5
0
        public static XmlNode GetUIElement(WixFiles wixFiles)
        {
            XmlNode ui = wixFiles.WxsDocument.SelectSingleNode("/wix:Wix/*/wix:UI", wixFiles.WxsNsmgr);
            if (ui == null)
            {
                XmlNodeList parents = wixFiles.WxsDocument.SelectNodes("/wix:Wix/*", wixFiles.WxsNsmgr);
                if (parents.Count == 0)
                {
                    return null;
                }

                XmlNode theParent = null;
                foreach (XmlNode possibleParent in parents)
                {
                    XmlNode def = wixFiles.XsdDocument.SelectSingleNode(String.Format("/xs:schema/xs:element[@name='{0}']/xs:complexType/xs:sequence//xs:element[@ref='UI']", possibleParent.Name), wixFiles.XsdNsmgr);
                    if (def != null)
                    {
                        theParent = possibleParent;
                        break;
                    }
                }

                if (theParent == null)
                {
                    return null;
                }

                ui = wixFiles.WxsDocument.CreateElement("UI", WixFiles.WixNamespaceUri);

                theParent.AppendChild(ui);
            }

            return ui;
        }
        public EditCustomTableDefinitionPanel(WixFiles wixFiles)
            : base(wixFiles, "/wix:Wix//wix:CustomTable", "Id")
        {
            LoadData();

            CurrentGrid.PropertyValueChanged += new PropertyValueChangedEventHandler(CurrentGrid_PropertyValueChanged);
        }
Example #7
0
        public EditGlobalDataPanel(WixFiles wixFiles, VoidVoidDelegate reloadAll)
            : base(wixFiles, "/wix:Wix/*", "Id")
        {
            reloadAllPanels = reloadAll;

            LoadData();
        }
Example #8
0
        public ProductPropertiesForm(XmlNode productNode, WixFiles wixFiles)
        {
            this.productNode = productNode;
            this.wixFiles = wixFiles;

            InitializeComponent();
        }
 public ProgressTextElementAdapter(XmlNodeList progressTextNodes, WixFiles wixFiles)
     : base(wixFiles)
 {
     foreach (object o in progressTextNodes) {
         this.progressTextNodes.Add(o);
     }
 }
Example #10
0
        public IncludeManager(WixFiles wixFiles, XmlDocument wxsDocument)
        {
            this.wixFiles = wixFiles;
            this.wxsDocument = wxsDocument;

            LoadIncludes();
        }
Example #11
0
        public WizardForm(WixFiles editWixFiles)
        {
            wixFiles = editWixFiles;
            undoCountBefore = wixFiles.UndoManager.UndoCount;

            InitializeComponent();

            string welcomeMessage = "The WixEdit wizard helps you to create or edit MSI files. The wizard allows you to easily add files and functionality to your MSI file.\r\n\r\nFor example:\r\nAdd files, Create shortcuts, Create virual directories, etc.\r\n\r\n\r\nClick \"Next\" to continue or \"Cancel\" to exit the WixEdit wizard.";
            if (!editWixFiles.IsNew)
            {
                welcomeMessage += "\r\n\r\nNote: Existing complex installers may give problems with the wizard.";
            }

            IntroductionSheet welcome = new IntroductionSheet("WixEdit wizard", welcomeMessage, this);
            AddSheet(welcome);

            FileSheet files = new FileSheet(this);
            AddSheet(files);

            SelectTemplatesSheet selectTemplates = new SelectTemplatesSheet(this);
            AddSheet(selectTemplates);

            endSheet = new FinishSheet(this);
            endSheet.Dock = DockStyle.Fill;
            contentPanel.Controls.Add(endSheet);
            endSheet.Visible = false;
        }
Example #12
0
        public IncludeManager(WixFiles wixFiles, XmlDocument wxsDocument)
        {
            this.wixFiles    = wixFiles;
            this.wxsDocument = wxsDocument;

            LoadIncludes();
        }
Example #13
0
        public static XmlNode GetUIElement(WixFiles wixFiles)
        {
            XmlNode ui = wixFiles.WxsDocument.SelectSingleNode("/wix:Wix/*/wix:UI", wixFiles.WxsNsmgr);

            if (ui == null)
            {
                XmlNodeList parents = wixFiles.WxsDocument.SelectNodes("/wix:Wix/*", wixFiles.WxsNsmgr);
                if (parents.Count == 0)
                {
                    return(null);
                }

                XmlNode theParent = null;
                foreach (XmlNode possibleParent in parents)
                {
                    XmlNode def = wixFiles.XsdDocument.SelectSingleNode(String.Format("/xs:schema/xs:element[@name='{0}']/xs:complexType/xs:sequence//xs:element[@ref='UI']", possibleParent.Name), wixFiles.XsdNsmgr);
                    if (def != null)
                    {
                        theParent = possibleParent;
                        break;
                    }
                }

                if (theParent == null)
                {
                    return(null);
                }

                ui = wixFiles.WxsDocument.CreateElement("UI", WixFiles.WixNamespaceUri);

                theParent.AppendChild(ui);
            }

            return(ui);
        }
Example #14
0
        public DisplayBasePanel(WixFiles wixFiles)
            : base(wixFiles)
        {
            Reload += new ReloadHandler(ReloadData);

            CreateControl();
        }
 public PropertySearchElementPropertyDescriptor(WixFiles wixFiles, XmlNode propertyElement, string name, Attribute[] attrs)
     : base(wixFiles, propertyElement, name, attrs)
 {
     XmlNodeList subNodes = propertyElement.SelectNodes("*", wixFiles.WxsNsmgr);
     searchElements = subNodes;
     searchElement = subNodes[0];
 }
Example #16
0
 public ErrorElementAdapter(XmlNodeList errorNodes, WixFiles wixFiles)
     : base(wixFiles)
 {
     foreach (object o in errorNodes) {
         this.errorNodes.Add(o);
     }
 }
Example #17
0
        public DisplaySimpleBasePanel(WixFiles wixFiles, string xpath, string elementName, string keyName)
            : base(wixFiles, xpath, elementName, keyName)
        {
            Reload += new ReloadHandler(ReloadData);

            InitializeComponent();
            CreateControl();
        }
Example #18
0
        public DialogGenerator(WixFiles wixFiles, Control parent)
        {
            this.definedFonts = new Hashtable();
            this.wixFiles = wixFiles;
            this.parent = parent;

            ReadFonts();
        }
Example #19
0
        public DisplayTreeBasePanel(WixFiles wixFiles, string xpath, string keyName, bool fullExpandTreeAtStart)
            : base(wixFiles, xpath, keyName)
        {
            InitializeComponent();
            CreateControl();

            _fullExpandTreeAtStart = fullExpandTreeAtStart;
        }
Example #20
0
        public BasePanel(WixFiles wixFiles)
        {
            if (wixFiles == null)
            {
                throw new ArgumentException("Cannot construct base panel without wixFiles", "wixFiles");
            }

            this.wixFiles = wixFiles;
        }
Example #21
0
        public EditFilesPanel(WixFiles wixFiles)
            : base(wixFiles, "/wix:Wix/*/wix:Directory|/wix:Wix/*/wix:DirectoryRef", "Id", false)
        {
            LoadData();

            CurrentTreeView.DragEnter += new DragEventHandler(treeView_DragEnter);
            CurrentTreeView.DragLeave += new EventHandler(treeView_DragLeave);
            CurrentTreeView.DragOver += new DragEventHandler(treeView_DragOver);
            CurrentTreeView.DragDrop += new DragEventHandler(treeView_DragDrop);
            CurrentTreeView.AllowDrop = true;
        }
Example #22
0
        public DisplaySimpleBasePanel(WixFiles wixFiles, string xpath, string elementName, string keyName, string valueName)
            : base(wixFiles, xpath, elementName, keyName)
        {
            // when valueName is null, the inner text is used.

            Reload += new ReloadHandler(ReloadData);

            currentValueName = valueName;

            InitializeComponent();
            CreateControl();
        }
Example #23
0
        public XmlAttributeAdapter(XmlNode xmlNode, WixFiles wixFiles, bool editSubNodes)
            : base(wixFiles)
        {
            this.xmlNode = xmlNode;
            this.editSubNodes = editSubNodes;

            xmlNodeElement = WixFiles.GetXsdElementNode(xmlNode.Name);

            if (xmlNodeElement == null) {
                if (xmlNode.NodeType != XmlNodeType.ProcessingInstruction) {
                    if (warnedNodeNames.Contains(xmlNode.Name) == false) {
                        MessageBox.Show(String.Format("\"{0}\" is not supported in version {1} of WiX!\r\n\r\nPossibly this type is supported in another version of WiX and wix.xsd.", xmlNode.Name, WixEditSettings.Instance.WixBinariesVersion), xmlNode.Name, MessageBoxButtons.OK, MessageBoxIcon.Error);
                        warnedNodeNames.Add(xmlNode.Name);
                    }
                }
            } else {
                XmlNode deprecated = xmlNodeElement.SelectSingleNode("xs:annotation/xs:appinfo/xse:deprecated", wixFiles.XsdNsmgr);
                if (deprecated != null) {
                    if (warnedNodeNames.Contains(xmlNode.Name) == false) {
                        string msg = String.Format("\"{0}\" is deprecated in version {1} of WiX.", xmlNode.Name, WixEditSettings.Instance.WixBinariesVersion);
                        if (deprecated.Attributes["ref"] != null) {
                            msg = String.Format("{0}\r\n\r\nPlease use \"{1}\" instead.", msg, deprecated.Attributes["ref"].Value);
                        }
                        MessageBox.Show(msg, xmlNode.Name, MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        warnedNodeNames.Add(xmlNode.Name);
                    }
                }

                if (xmlNodeElement.Attributes["type"] != null && xmlNodeElement.Attributes["type"].Value != null) {
                    xmlNodeDefinition = wixFiles.XsdDocument.SelectSingleNode(String.Format("/xs:schema/xs:complexType[@name='{0}']/xs:simpleContent/xs:extension", xmlNodeElement.Attributes["type"].Value), wixFiles.XsdNsmgr);
                    if (xmlNodeDefinition == null) {
                        xmlNodeDefinition = wixFiles.XsdDocument.SelectSingleNode(String.Format("/xs:schema/xs:complexType[@name='{0}']", xmlNodeElement.Attributes["type"].Value), wixFiles.XsdNsmgr);
                        showInnerTextIfEmpty = false;
                    } else {
                        showInnerTextIfEmpty = true;
                    }
                } else {
                    xmlNodeDefinition = xmlNodeElement.SelectSingleNode("xs:complexType/xs:simpleContent/xs:extension", wixFiles.XsdNsmgr);
                    if (xmlNodeDefinition == null) {
                        xmlNodeDefinition = xmlNodeElement.SelectSingleNode("xs:complexType", wixFiles.XsdNsmgr);
                        if (xmlNodeDefinition == null) {
                            // Nothing?
                            xmlNodeDefinition = xmlNodeElement;
                            showInnerTextIfEmpty = true;
                        } else {
                            showInnerTextIfEmpty = false;
                        }
                    } else {
                        showInnerTextIfEmpty = true;
                    }
                }
            }
        }
Example #24
0
        protected static string GetValueAttributeName(WixFiles wixFiles)
        {
            if (wixFiles.XsdDocument.SelectSingleNode("/xs:schema/xs:element[@name='Icon']/xs:complexType/xs:attribute[@name='SourceFile']", wixFiles.XsdNsmgr) != null)
            {
                return "SourceFile";
            }
            else if (wixFiles.XsdDocument.SelectSingleNode("/xs:schema/xs:element[@name='Icon']/xs:complexType/xs:attribute[@name='src']", wixFiles.XsdNsmgr) != null)
            {
                return "src";
            }

            throw new ApplicationException("WiX xsd should define src or SourceFile attribute on Icon element");
        }
Example #25
0
        public FileImport(WixFiles wixFiles, FileInfo fileInfo, XmlNode componentElement)
        {
            this.wixFiles = wixFiles;
            this.fileInfo = fileInfo;
            this.componentElement = componentElement;

            if (WixEditSettings.Instance.IsUsingWix2())
            {
                this.ShortName = "Name";
                this.LongName = "LongName";
            }
            else
            {
                this.ShortName = "ShortName";
                this.LongName = "Name";
            }
        }
Example #26
0
        public DirectoryImport(WixFiles wixFiles, string[] folders, XmlNode directoryElement)
        {
            this.wixFiles = wixFiles;
            this.folders = folders;
            this.directoryElement = directoryElement;

            if (WixEditSettings.Instance.IsUsingWix2())
            {
                this.ShortName = "Name";
                this.LongName = "LongName";
            }
            else
            {
                this.ShortName = "ShortName";
                this.LongName = "Name";
            }
        }
Example #27
0
        public RegistryImport(WixFiles wixFiles, FileInfo regFileInfo, XmlNode componentElement)
        {
            this.wixFiles = wixFiles;
            this.regFileInfo = regFileInfo;
            this.componentElement = componentElement;

            if (WixEdit.Settings.WixEditSettings.Instance.IsUsingWix2())
            {
                registryKeyElementName = "Registry";
                registryValueElementName = "Registry";
            }
            else
            {
                registryKeyElementName = "RegistryKey";
                registryValueElementName = "RegistryValue";
            }
        }
Example #28
0
        public DisplayBasePanel(WixFiles wixFiles, string xpath, string keyName)
            : base(wixFiles)
        {
            if (xpath == null)
            {
                throw new ArgumentException("Require xpath in construction", "xpath");
            }
            if (keyName == null)
            {
                throw new ArgumentException("Require keyName in construction", "keyName");
            }

            currentXPath = xpath;
            currentKeyName = keyName;

            Reload += new ReloadHandler(ReloadData);

            CreateControl();
        }
Example #29
0
        public UndoManager(WixFiles wixFiles, XmlDocument wxsDocument)
        {
            undoCommands = new ArrayList();
            redoCommands = new ArrayList();

            beginNewCommandRange = true;

            this.wxsDocument         = wxsDocument;
            this.wixFiles            = wixFiles;
            this.docIsSavedUndoCount = 0;

            nodeChangedHandler  = new XmlNodeChangedEventHandler(OnNodeChanged);
            nodeChangingHandler = new XmlNodeChangedEventHandler(OnNodeChanging);
            nodeInsertedHandler = new XmlNodeChangedEventHandler(OnNodeInserted);
            nodeRemovingHandler = new XmlNodeChangedEventHandler(OnNodeRemoving);

            this.wxsDocument.NodeChanged  += nodeChangedHandler;
            this.wxsDocument.NodeChanging += nodeChangingHandler;
            this.wxsDocument.NodeInserted += nodeInsertedHandler;
            this.wxsDocument.NodeRemoving += nodeRemovingHandler;

            timeCheck = DateTime.Now;
        }
Example #30
0
        public static ArrayList GetXsdAllElementNames()
        {
            ArrayList   ret   = new ArrayList();
            XmlNodeList nodes = xsdDocument.SelectNodes("/xs:schema/xs:element", WixFiles.GetXsdNsmgr());

            foreach (XmlNode node in nodes)
            {
                ret.Add(node);
            }

            foreach (string extensionName in xsdExtensionNames)
            {
                XmlDocument         extXsd      = xsdExtensions[extensionName] as XmlDocument;
                XmlNamespaceManager extXsdNsmgr = xsdExtensionNsmgrs[extensionName] as XmlNamespaceManager;

                nodes = extXsd.SelectNodes("/xs:schema/xs:element", extXsdNsmgr);
                foreach (XmlNode node in nodes)
                {
                    ret.Add(node);
                }
            }

            return(ret);
        }
Example #31
0
        /// <summary>
        /// Identifier's may contain ASCII characters A-Z, a-z, digits, underscores (_), 
        /// or periods (.). Every identifier must begin with either a letter or an underscore.
        /// </summary>
        /// <remarks>http://msdn.microsoft.com/library/en-us/msi/setup/identifier.asp</remarks>
        /// <param name="filename">Name of file to generate Id from</param>
        /// <param name="wixDocument">The xmldocument containing the file or directory.</param>
        /// <returns>A valid Id.</returns>
        public static string GenerateValidIdentifier(string filename, XmlElement newElement, WixFiles wixFiles)
        {
            string newId = filename.ToUpper();
            newId = Regex.Replace(newId, "[^A-Z0-9_.]", "_");

            if (Regex.Match(newId, "^[A-Z_]").Length == 0)
            {
                newId = "_" + newId;
            }

            XmlDocument owner = newElement.OwnerDocument;

            // Make sure you search case insensitive.
            string searchTerm1 = string.Format(
                "//wix:{0}[translate(@Id, 'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')='{1}']",
                newElement.Name,
                newId);
            if (owner.SelectSingleNode(searchTerm1, wixFiles.WxsNsmgr) == null)
            {
                return newId;
            }

            // Make sure you search case insensitive.
            string searchTerm2 = string.Format(
                "//wix:{0}[translate(@Id, 'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')='{1}_{{0}}']",
                newElement.Name,
                newId);

            int index = 1;
            while (owner.SelectSingleNode(String.Format(searchTerm2, index), wixFiles.WxsNsmgr) != null)
            {
                index++;
            }

            return newId + "_" + index;
        }
Example #32
0
 public EditUIPanel(WixFiles wixFiles)
     : base(wixFiles)
 {
     InitializeComponent();
 }
 public PropertyElementPropertyDescriptor(WixFiles wixFiles, XmlNode propertyElement, string name, Attribute[] attrs)
     : base(wixFiles, propertyElement, name, attrs)
 {
 }
Example #34
0
 public SearchElementObject(XmlNode searchNode, WixFiles wixFiles)
 {
     _searchNode = searchNode;
     _wixFiles = wixFiles;
 }
Example #35
0
 public DefineManager(WixFiles wixFiles, XmlDocument wxsDocument)
 {
     this.wixFiles    = wixFiles;
     this.wxsDocument = wxsDocument;
     LoadDefines(wixFiles.WxsFile);
 }
Example #36
0
        public XmlDisplayForm()
        {
            InitializeComponent();

            Icon = new Icon(WixFiles.GetResourceStream("dialog.source.ico"));
        }
 public XmlDocumentationManager(WixFiles wixFiles)
 {
     this.wixFiles = wixFiles;
 }