コード例 #1
0
ファイル: WixEditSettings.cs プロジェクト: xwiz/WixEdit
            public WixEditData(WixEditData oldVersion, XmlDocument rawData) {
                BinDirectory = oldVersion.BinDirectory;
                DarkLocation = oldVersion.DarkLocation;
                CandleLocation = oldVersion.CandleLocation;
                LightLocation = oldVersion.LightLocation;

                if (oldVersion.XsdsLocation == null) {
                    XmlNode node = rawData.SelectSingleNode("/WixEdit/XsdLocation");
                    if (node != null && node.InnerText.Length > 0) {
                        XsdsLocation = Path.GetDirectoryName(node.InnerText);
                    }
                } else {
                    XsdsLocation = oldVersion.XsdsLocation;
                }

                // Some magic to deal with a new WixEdit installation including a newer WiX version...
                if (!String.IsNullOrEmpty(BinDirectory) &&
                    (String.IsNullOrEmpty(DarkLocation) && String.IsNullOrEmpty(CandleLocation) && String.IsNullOrEmpty(LightLocation) && String.IsNullOrEmpty(XsdsLocation)))
                {
                    if (!Directory.Exists(BinDirectory))
                    {
                        DirectoryInfo oldBinDirectory = new DirectoryInfo(BinDirectory);
                        if (oldBinDirectory.Parent != null)
                        {
                            FileInfo[] files = oldBinDirectory.Parent.GetFiles("candle.exe", SearchOption.AllDirectories);
                            if (files.Length == 0 && oldBinDirectory.Parent.Parent != null)
                            {
                                files = oldBinDirectory.Parent.Parent.GetFiles("candle.exe", SearchOption.AllDirectories);
                            }

                            if (files.Length == 1)
                            {
                                BinDirectory = files[0].Directory.FullName;
                            } else if (files.Length > 1)
                            {
                                ArrayList directoryList = new ArrayList();
                                foreach (FileInfo file in files) {
                                    directoryList.Add(file.Directory.FullName);
                                }
                                directoryList.Sort();

                                BinDirectory = (string)directoryList[directoryList.Count - 1];
                            }
                        }
                    }
                }

                TemplateDirectory = oldVersion.TemplateDirectory;
                if (!String.IsNullOrEmpty(TemplateDirectory))
                {
                    TemplateDirectory = TemplateDirectory.Replace("templates", "wizard");
                }
                UseRelativeOrAbsolutePaths = oldVersion.UseRelativeOrAbsolutePaths;
                if (oldVersion.ExternalXmlEditor == null || oldVersion.ExternalXmlEditor.Length == 0) {
                    ExternalXmlEditor = Path.Combine(Environment.SystemDirectory, "notepad.exe");
                } else {
                    ExternalXmlEditor = oldVersion.ExternalXmlEditor;
                }

                UseInstanceOnly = oldVersion.UseInstanceOnly;
                WordWrapInResultsPanel = oldVersion.WordWrapInResultsPanel;

                if (oldVersion.IgnoreFilesAndDirectories != null && oldVersion.IgnoreFilesAndDirectories.Count > 0) {
                    IgnoreFilesAndDirectories = oldVersion.IgnoreFilesAndDirectories;
                } else {
                    ArrayList oldValues = new ArrayList();
                    XmlNodeList nodes = rawData.SelectNodes("/WixEdit/IgnoreFilesAndDirectories/string");
                    foreach (XmlNode node in nodes) {
                        oldValues.Add(node.InnerText);
                    }

                    if (oldValues.Count > 0) {
                        IgnoreFilesAndDirectories = oldValues;
                    }
                }

                RecentOpenedFiles = oldVersion.RecentOpenedFiles;

                DisplayFullPathInTitlebar = oldVersion.DisplayFullPathInTitlebar;

                XmlIndentation = oldVersion.XmlIndentation;

                AllowIncludeChanges = oldVersion.AllowIncludeChanges;
                BackupChangedIncludes = oldVersion.BackupChangedIncludes;
                
                if (oldVersion.EditDialog == null) {
                    EditDialog = new EditDialogData();
                } else {
                    EditDialog = oldVersion.EditDialog;
                }

                Version = Assembly.GetExecutingAssembly().GetName().Version.ToString();
            }
コード例 #2
0
ファイル: WixEditSettings.cs プロジェクト: wtf3505/WixEdit
            public WixEditData(WixEditData oldVersion, XmlDocument rawData)
            {
                BinDirectory   = oldVersion.BinDirectory;
                DarkLocation   = oldVersion.DarkLocation;
                CandleLocation = oldVersion.CandleLocation;
                LightLocation  = oldVersion.LightLocation;

                if (oldVersion.XsdsLocation == null)
                {
                    XmlNode node = rawData.SelectSingleNode("/WixEdit/XsdLocation");
                    if (node != null && node.InnerText.Length > 0)
                    {
                        XsdsLocation = Path.GetDirectoryName(node.InnerText);
                    }
                }
                else
                {
                    XsdsLocation = oldVersion.XsdsLocation;
                }

                // Some magic to deal with a new WixEdit installation including a newer WiX version...
                if (!String.IsNullOrEmpty(BinDirectory) &&
                    (String.IsNullOrEmpty(DarkLocation) && String.IsNullOrEmpty(CandleLocation) && String.IsNullOrEmpty(LightLocation) && String.IsNullOrEmpty(XsdsLocation)))
                {
                    if (!Directory.Exists(BinDirectory))
                    {
                        DirectoryInfo oldBinDirectory = new DirectoryInfo(BinDirectory);
                        if (oldBinDirectory.Parent != null)
                        {
                            FileInfo[] files = oldBinDirectory.Parent.GetFiles("candle.exe", SearchOption.AllDirectories);
                            if (files.Length == 0 && oldBinDirectory.Parent.Parent != null)
                            {
                                files = oldBinDirectory.Parent.Parent.GetFiles("candle.exe", SearchOption.AllDirectories);
                            }

                            if (files.Length == 1)
                            {
                                BinDirectory = files[0].Directory.FullName;
                            }
                            else if (files.Length > 1)
                            {
                                ArrayList directoryList = new ArrayList();
                                foreach (FileInfo file in files)
                                {
                                    directoryList.Add(file.Directory.FullName);
                                }
                                directoryList.Sort();

                                BinDirectory = (string)directoryList[directoryList.Count - 1];
                            }
                        }
                    }
                }

                TemplateDirectory = oldVersion.TemplateDirectory;
                if (!String.IsNullOrEmpty(TemplateDirectory))
                {
                    TemplateDirectory = TemplateDirectory.Replace("templates", "wizard");
                }
                UseRelativeOrAbsolutePaths = oldVersion.UseRelativeOrAbsolutePaths;
                if (oldVersion.ExternalXmlEditor == null || oldVersion.ExternalXmlEditor.Length == 0)
                {
                    ExternalXmlEditor = Path.Combine(Environment.SystemDirectory, "notepad.exe");
                }
                else
                {
                    ExternalXmlEditor = oldVersion.ExternalXmlEditor;
                }

                UseInstanceOnly        = oldVersion.UseInstanceOnly;
                WordWrapInResultsPanel = oldVersion.WordWrapInResultsPanel;

                if (oldVersion.IgnoreFilesAndDirectories != null && oldVersion.IgnoreFilesAndDirectories.Count > 0)
                {
                    IgnoreFilesAndDirectories = oldVersion.IgnoreFilesAndDirectories;
                }
                else
                {
                    ArrayList   oldValues = new ArrayList();
                    XmlNodeList nodes     = rawData.SelectNodes("/WixEdit/IgnoreFilesAndDirectories/string");
                    foreach (XmlNode node in nodes)
                    {
                        oldValues.Add(node.InnerText);
                    }

                    if (oldValues.Count > 0)
                    {
                        IgnoreFilesAndDirectories = oldValues;
                    }
                }

                RecentOpenedFiles = oldVersion.RecentOpenedFiles;

                DisplayFullPathInTitlebar = oldVersion.DisplayFullPathInTitlebar;

                XmlIndentation = oldVersion.XmlIndentation;

                AllowIncludeChanges   = oldVersion.AllowIncludeChanges;
                BackupChangedIncludes = oldVersion.BackupChangedIncludes;

                if (oldVersion.EditDialog == null)
                {
                    EditDialog = new EditDialogData();
                }
                else
                {
                    EditDialog = oldVersion.EditDialog;
                }

                Version = Assembly.GetExecutingAssembly().GetName().Version.ToString();
            }
コード例 #3
0
ファイル: WixEditSettings.cs プロジェクト: xwiz/WixEdit
        void LoadFromDisk() {
            Stream xmlStream = null;
            if (File.Exists(SettingsFile)) {
                // A FileStream is needed to read the XML document.
                xmlStream = new FileStream(SettingsFile, FileMode.Open);

                using (xmlStream) {
                    // Create an instance of the XmlSerializer class;
                    // specify the type of object to be deserialized.
                    XmlSerializer serializer = new XmlSerializer(typeof(WixEditData));
    
                    // If the XML document has been altered with unknown 
                    // nodes or attributes, handle them with the 
                    // UnknownNode and UnknownAttribute events.
                    serializer.UnknownNode += new XmlNodeEventHandler(DeserializeUnknownNode);
                    serializer.UnknownAttribute += new XmlAttributeEventHandler(DeserializeUnknownAttribute);
                
    
                    // Use the Deserialize method to restore the object's state with
                    // data from the XML document
                    data = (WixEditData) serializer.Deserialize(xmlStream);
                }
            } else {
                // Support the previous situation gracefully.
                if (File.Exists(OldSettingsFile)) {
                    // Try to move to new location
                    try {
                        File.Move(OldSettingsFile, SettingsFile);
                    } catch {
                        // Move didn't work, delete the file
                        try {
                            File.Delete(OldSettingsFile);
                        } catch {}
                    }

                    // If we got rid of the old file, then load again, otherwise just continue...
                    if (File.Exists(OldSettingsFile) == false) {
                        LoadFromDisk();
                        return;
                    }
                }

                data = new WixEditData();
            }

            XmlDocument rawData = new XmlDocument();
            try {
                xmlStream = new FileStream(SettingsFile, FileMode.Open);
                using (xmlStream) {
                    rawData.Load(xmlStream);
                }
            } catch {
                rawData = null;
            }

            try {
                if (data.Version == null) {
                    data = new WixEditData(data, rawData);
                } else {
                    Version current = GetCurrentVersion();
                    Version old = new Version(data.Version);

                    if (current.CompareTo(old) != 0) {
                        // Ok, watch out.
                        if (current.CompareTo(old) < 0) {
                            // This is a config file of a future version.
                            MessageBox.Show(String.Format("The version of the configuration file is newer than the version of this application, if any problems occur remove the settings file: {0}.", SettingsFile), "Configuration file", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                            data = new WixEditData(data, rawData);
                        } else {
                            // This is a config file of an old version.
                            data = new WixEditData(data, rawData);

                            if (File.Exists(SettingsFile)) {
                                string oldFileName = SettingsFile + "_v" + old.ToString();
                                while (File.Exists(oldFileName)) {
                                    oldFileName = oldFileName + "_";
                                }

                                File.Copy(SettingsFile, oldFileName);
                            }
                        }

                        SaveChanges();
                    }
                }
            } catch {
                MessageBox.Show("Failed to convert the existing configuration file to the current version, using a default configuration.", "Configuration file", MessageBoxButtons.OK, MessageBoxIcon.Warning);

                data = new WixEditData();
            }
        }
コード例 #4
0
ファイル: WixEditSettings.cs プロジェクト: wtf3505/WixEdit
        void LoadFromDisk()
        {
            Stream xmlStream = null;

            if (File.Exists(SettingsFile))
            {
                // A FileStream is needed to read the XML document.
                xmlStream = new FileStream(SettingsFile, FileMode.Open);

                using (xmlStream) {
                    // Create an instance of the XmlSerializer class;
                    // specify the type of object to be deserialized.
                    XmlSerializer serializer = new XmlSerializer(typeof(WixEditData));

                    // If the XML document has been altered with unknown
                    // nodes or attributes, handle them with the
                    // UnknownNode and UnknownAttribute events.
                    serializer.UnknownNode      += new XmlNodeEventHandler(DeserializeUnknownNode);
                    serializer.UnknownAttribute += new XmlAttributeEventHandler(DeserializeUnknownAttribute);


                    // Use the Deserialize method to restore the object's state with
                    // data from the XML document
                    data = (WixEditData)serializer.Deserialize(xmlStream);
                }
            }
            else
            {
                // Support the previous situation gracefully.
                if (File.Exists(OldSettingsFile))
                {
                    // Try to move to new location
                    try {
                        File.Move(OldSettingsFile, SettingsFile);
                    } catch {
                        // Move didn't work, delete the file
                        try {
                            File.Delete(OldSettingsFile);
                        } catch {}
                    }

                    // If we got rid of the old file, then load again, otherwise just continue...
                    if (File.Exists(OldSettingsFile) == false)
                    {
                        LoadFromDisk();
                        return;
                    }
                }

                data = new WixEditData();
            }

            XmlDocument rawData = new XmlDocument();

            try {
                xmlStream = new FileStream(SettingsFile, FileMode.Open);
                using (xmlStream) {
                    rawData.Load(xmlStream);
                }
            } catch {
                rawData = null;
            }

            try {
                if (data.Version == null)
                {
                    data = new WixEditData(data, rawData);
                }
                else
                {
                    Version current = GetCurrentVersion();
                    Version old     = new Version(data.Version);

                    if (current.CompareTo(old) != 0)
                    {
                        // Ok, watch out.
                        if (current.CompareTo(old) < 0)
                        {
                            // This is a config file of a future version.
                            MessageBox.Show(String.Format("The version of the configuration file is newer than the version of this application, if any problems occur remove the settings file: {0}.", SettingsFile), "Configuration file", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                            data = new WixEditData(data, rawData);
                        }
                        else
                        {
                            // This is a config file of an old version.
                            data = new WixEditData(data, rawData);

                            if (File.Exists(SettingsFile))
                            {
                                string oldFileName = SettingsFile + "_v" + old.ToString();
                                while (File.Exists(oldFileName))
                                {
                                    oldFileName = oldFileName + "_";
                                }

                                File.Copy(SettingsFile, oldFileName);
                            }
                        }

                        SaveChanges();
                    }
                }
            } catch {
                MessageBox.Show("Failed to convert the existing configuration file to the current version, using a default configuration.", "Configuration file", MessageBoxButtons.OK, MessageBoxIcon.Warning);

                data = new WixEditData();
            }
        }