List:Commits« Previous MessageNext Message »
From:Reggie Burnett Date:January 24 2011 9:36pm
Subject:bzr commit into wex-installer-1.0 branch (reggie.burnett:265)
View as plain text  
#At file:///C:/Users/Reggie/work/wex/installer-updated/ based on revid:reggie.burnett@stripped1imx7ges4qpmzr

  265 Reggie Burnett	2011-01-24
      initial push of manifest manager. It's not done yet

    added:
      ManifestManager/
      ManifestManager/Form1.Designer.cs
      ManifestManager/Form1.cs
      ManifestManager/Form1.resx
      ManifestManager/ManifestManager.csproj
      ManifestManager/Package.cs
      ManifestManager/Product.cs
      ManifestManager/ProductCatalog.cs
      ManifestManager/ProductCategory.cs
      ManifestManager/ProductFeature.cs
      ManifestManager/ProductManifest.cs
      ManifestManager/Program.cs
      ManifestManager/Properties/
      ManifestManager/Properties/AssemblyInfo.cs
      ManifestManager/Properties/Resources.Designer.cs
      ManifestManager/Properties/Resources.resx
      ManifestManager/app.config
=== added directory 'ManifestManager'
=== added file 'ManifestManager/Form1.Designer.cs'
=== added directory 'ManifestManager'
=== added file 'ManifestManager/Form1.Designer.cs'
--- a/ManifestManager/Form1.Designer.cs	1970-01-01 00:00:00 +0000
+++ b/ManifestManager/Form1.Designer.cs	2011-01-24 21:36:57 +0000
@@ -0,0 +1,212 @@
+namespace ManifestManager
+{
+    partial class Form1
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
+            this.mainMenu = new System.Windows.Forms.MenuStrip();
+            this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+            this.openManifestToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+            this.saveManifestToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
+            this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStrip1 = new System.Windows.Forms.ToolStrip();
+            this.addButton = new System.Windows.Forms.ToolStripButton();
+            this.removeButton = new System.Windows.Forms.ToolStripButton();
+            this.manifestTree = new System.Windows.Forms.TreeView();
+            this.panel1 = new System.Windows.Forms.Panel();
+            this.splitter1 = new System.Windows.Forms.Splitter();
+            this.properties = new System.Windows.Forms.PropertyGrid();
+            this.mainMenu.SuspendLayout();
+            this.toolStrip1.SuspendLayout();
+            this.panel1.SuspendLayout();
+            this.SuspendLayout();
+            // 
+            // mainMenu
+            // 
+            this.mainMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.fileToolStripMenuItem});
+            this.mainMenu.Location = new System.Drawing.Point(0, 0);
+            this.mainMenu.Name = "mainMenu";
+            this.mainMenu.Size = new System.Drawing.Size(672, 24);
+            this.mainMenu.TabIndex = 1;
+            this.mainMenu.Text = "menuStrip1";
+            // 
+            // fileToolStripMenuItem
+            // 
+            this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.openManifestToolStripMenuItem,
+            this.saveManifestToolStripMenuItem,
+            this.toolStripMenuItem1,
+            this.exitToolStripMenuItem});
+            this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
+            this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
+            this.fileToolStripMenuItem.Text = "&File";
+            // 
+            // openManifestToolStripMenuItem
+            // 
+            this.openManifestToolStripMenuItem.Name = "openManifestToolStripMenuItem";
+            this.openManifestToolStripMenuItem.Size = new System.Drawing.Size(125, 22);
+            this.openManifestToolStripMenuItem.Text = "&Open...";
+            this.openManifestToolStripMenuItem.Click += new System.EventHandler(this.openManifestToolStripMenuItem_Click);
+            // 
+            // saveManifestToolStripMenuItem
+            // 
+            this.saveManifestToolStripMenuItem.Enabled = false;
+            this.saveManifestToolStripMenuItem.Name = "saveManifestToolStripMenuItem";
+            this.saveManifestToolStripMenuItem.Size = new System.Drawing.Size(125, 22);
+            this.saveManifestToolStripMenuItem.Text = "&Save";
+            this.saveManifestToolStripMenuItem.Click += new System.EventHandler(this.saveManifestToolStripMenuItem_Click);
+            // 
+            // toolStripMenuItem1
+            // 
+            this.toolStripMenuItem1.Enabled = false;
+            this.toolStripMenuItem1.Name = "toolStripMenuItem1";
+            this.toolStripMenuItem1.Size = new System.Drawing.Size(125, 22);
+            this.toolStripMenuItem1.Text = "&Options...";
+            // 
+            // exitToolStripMenuItem
+            // 
+            this.exitToolStripMenuItem.Name = "exitToolStripMenuItem";
+            this.exitToolStripMenuItem.Size = new System.Drawing.Size(125, 22);
+            this.exitToolStripMenuItem.Text = "E&xit";
+            this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click);
+            // 
+            // toolStrip1
+            // 
+            this.toolStrip1.Dock = System.Windows.Forms.DockStyle.Bottom;
+            this.toolStrip1.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden;
+            this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.addButton,
+            this.removeButton});
+            this.toolStrip1.Location = new System.Drawing.Point(0, 492);
+            this.toolStrip1.Name = "toolStrip1";
+            this.toolStrip1.Size = new System.Drawing.Size(200, 25);
+            this.toolStrip1.TabIndex = 1;
+            this.toolStrip1.Text = "toolStrip1";
+            // 
+            // addButton
+            // 
+            this.addButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
+            this.addButton.Enabled = false;
+            this.addButton.Image = ((System.Drawing.Image)(resources.GetObject("addButton.Image")));
+            this.addButton.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.addButton.Name = "addButton";
+            this.addButton.Size = new System.Drawing.Size(23, 22);
+            this.addButton.Text = "+";
+            this.addButton.Click += new System.EventHandler(this.addButton_Click);
+            // 
+            // removeButton
+            // 
+            this.removeButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
+            this.removeButton.Enabled = false;
+            this.removeButton.Image = ((System.Drawing.Image)(resources.GetObject("removeButton.Image")));
+            this.removeButton.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.removeButton.Name = "removeButton";
+            this.removeButton.Size = new System.Drawing.Size(23, 22);
+            this.removeButton.Text = "-";
+            this.removeButton.Click += new System.EventHandler(this.removeButton_Click);
+            // 
+            // manifestTree
+            // 
+            this.manifestTree.Dock = System.Windows.Forms.DockStyle.Top;
+            this.manifestTree.Location = new System.Drawing.Point(0, 0);
+            this.manifestTree.Name = "manifestTree";
+            this.manifestTree.Size = new System.Drawing.Size(200, 489);
+            this.manifestTree.TabIndex = 2;
+            this.manifestTree.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.manifestTree_AfterSelect);
+            // 
+            // panel1
+            // 
+            this.panel1.Controls.Add(this.manifestTree);
+            this.panel1.Controls.Add(this.toolStrip1);
+            this.panel1.Dock = System.Windows.Forms.DockStyle.Left;
+            this.panel1.Location = new System.Drawing.Point(0, 24);
+            this.panel1.Name = "panel1";
+            this.panel1.Size = new System.Drawing.Size(200, 517);
+            this.panel1.TabIndex = 3;
+            // 
+            // splitter1
+            // 
+            this.splitter1.Location = new System.Drawing.Point(200, 24);
+            this.splitter1.Name = "splitter1";
+            this.splitter1.Size = new System.Drawing.Size(3, 517);
+            this.splitter1.TabIndex = 4;
+            this.splitter1.TabStop = false;
+            // 
+            // properties
+            // 
+            this.properties.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.properties.Location = new System.Drawing.Point(203, 24);
+            this.properties.Name = "properties";
+            this.properties.Size = new System.Drawing.Size(469, 517);
+            this.properties.TabIndex = 5;
+            // 
+            // Form1
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(672, 541);
+            this.Controls.Add(this.properties);
+            this.Controls.Add(this.splitter1);
+            this.Controls.Add(this.panel1);
+            this.Controls.Add(this.mainMenu);
+            this.MainMenuStrip = this.mainMenu;
+            this.MaximizeBox = false;
+            this.MinimizeBox = false;
+            this.Name = "Form1";
+            this.Text = "Manifest Manager";
+            this.mainMenu.ResumeLayout(false);
+            this.mainMenu.PerformLayout();
+            this.toolStrip1.ResumeLayout(false);
+            this.toolStrip1.PerformLayout();
+            this.panel1.ResumeLayout(false);
+            this.panel1.PerformLayout();
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.MenuStrip mainMenu;
+        private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem;
+        private System.Windows.Forms.ToolStripMenuItem openManifestToolStripMenuItem;
+        private System.Windows.Forms.ToolStripMenuItem saveManifestToolStripMenuItem;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem1;
+        private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem;
+        private System.Windows.Forms.ToolStrip toolStrip1;
+        private System.Windows.Forms.ToolStripButton addButton;
+        private System.Windows.Forms.ToolStripButton removeButton;
+        private System.Windows.Forms.TreeView manifestTree;
+        private System.Windows.Forms.Panel panel1;
+        private System.Windows.Forms.Splitter splitter1;
+        private System.Windows.Forms.PropertyGrid properties;
+    }
+}
+

=== added file 'ManifestManager/Form1.cs'
--- a/ManifestManager/Form1.cs	1970-01-01 00:00:00 +0000
+++ b/ManifestManager/Form1.cs	2011-01-24 21:36:57 +0000
@@ -0,0 +1,227 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+using System.Xml.Serialization;
+using WexInstaller.Core;
+using System.IO;
+using System.Collections;
+
+namespace ManifestManager
+{
+    public partial class Form1 : Form
+    {
+        private ProductManifest manifest;
+        private string fileName;
+
+        public Form1()
+        {
+            InitializeComponent();
+        }
+
+        private void exitToolStripMenuItem_Click(object sender, EventArgs e)
+        {
+            Application.Exit();
+        }
+
+        private void openManifestToolStripMenuItem_Click(object sender, EventArgs e)
+        {
+            OpenFileDialog dlg = new OpenFileDialog();
+            dlg.InitialDirectory = Path.GetFullPath(Application.ExecutablePath);
+            dlg.Filter = "MySQL Product Manifests (*.xml)|*.xml";
+            DialogResult result = dlg.ShowDialog();
+            if (result == DialogResult.Cancel) return;
+
+            fileName = dlg.FileName;
+            OpenManifest(dlg.FileName);
+        }
+
+        private void saveManifestToolStripMenuItem_Click(object sender, EventArgs e)
+        {
+            try
+            {
+                XmlSerializer s = new XmlSerializer(typeof(ProductManifest));
+                TextWriter w = new StreamWriter(fileName);
+                s.Serialize(w, manifest);
+                w.Close();
+            }
+            catch (Exception ex)
+            {
+                MessageBox.Show("Unable to save manifest.  Error: " + ex.Message);
+                return;
+            }
+        }
+
+        private void OpenManifest(string filename)
+        {
+            try 
+            {
+                XmlRootAttribute productCategories = new XmlRootAttribute("ProductManifest");
+                XmlSerializer s = new XmlSerializer(typeof(ProductManifest));
+                TextReader w = new StreamReader(filename);
+                manifest = (ProductManifest)s.Deserialize(w);
+                w.Close();
+                if (manifest == null)
+                {
+                    MessageBox.Show("Unable to parse product manifest");
+                    return;
+                }
+                saveManifestToolStripMenuItem.Enabled = true;
+            }
+            catch (Exception ex)
+            {
+                MessageBox.Show("Unable to parse product manifest.  Error: " + ex.Message);
+                return;
+            }
+
+            LoadTree();
+        }
+
+        private void LoadTree()
+        {
+            manifestTree.Nodes.Clear();
+
+            TreeNode manifestNode = manifestTree.Nodes.Add("Manifest");
+            manifestNode.Tag = manifest;
+            TreeNode catalogsNode = manifestTree.Nodes.Add("Catalogs");
+            catalogsNode.Tag = manifest.ProductCatalogs;
+
+            foreach (ProductCatalog cat in manifest.ProductCatalogs)
+                LoadCatalog(catalogsNode, cat);
+        }
+
+        private void LoadCatalog(TreeNode parentNode, ProductCatalog cat)
+        {
+            TreeNode catNode = parentNode.Nodes.Add(cat.Name);
+            catNode.Tag = cat;
+            TreeNode setupTypesNode = catNode.Nodes.Add("Setup Types");
+            setupTypesNode.Tag = cat.SetupTypes;
+            foreach (SetupType setupType in cat.SetupTypes)
+                LoadSetupType(setupTypesNode, setupType);
+            TreeNode productsNode = catNode.Nodes.Add("Included Products");
+            productsNode.Tag = cat.Products;
+            foreach (CatalogProduct catProduct in cat.Products)
+                LoadCatalogProduct(productsNode, catProduct);
+        }
+
+        private void LoadSetupType(TreeNode parentNode, SetupType setupType)
+        {
+            TreeNode setupTypeNode = parentNode.Nodes.Add(setupType.Name);
+            setupTypeNode.Tag = setupType;
+        }
+
+        private void LoadCatalogProduct(TreeNode parentNode, CatalogProduct product)
+        {
+            TreeNode catProductNode = parentNode.Nodes.Add(product.ProductId);
+            catProductNode.Tag = product;
+        }
+        //    }
+        //    TreeNode categoriesNode = manifestTree.Nodes.Add("Categories");
+        //    categoriesNode.Tag = manifest.ProductCategories;
+        //    foreach (ProductCategory category in manifest.ProductCategories)
+        //    {
+        //        TreeNode categoryNode = categoriesNode.Nodes.Add(category.Name);
+        //        foreach (Product p in category.Products)
+        //        {
+        //            TreeNode productNode = categoryNode.Nodes.Add(p.Name);
+        //            productNode.Tag = p;
+        //            foreach (Package package in p.Packages)
+        //            {
+        //                TreeNode packageNode = productNode.Nodes.Add(package.Id);
+        //                packageNode.Tag = package;
+        //            }
+        //        }
+        //    }
+        //}
+
+        private void addButton_Click(object sender, EventArgs e)
+        {
+            if (manifestTree.SelectedNode == null) return;
+            TreeNode node = manifestTree.SelectedNode;
+
+            if (node.Tag is ICollection<ProductCatalog>)
+                AddCatalogNode(node);
+            else if (node.Tag is ICollection<SetupType>)
+                AddSetupTypeNode(node);
+            else if (node.Tag is ICollection<CatalogProduct>)
+                AddCatalogProduct(node);
+        }
+
+        private void AddCatalogNode(TreeNode node)
+        {
+            ProductCatalog newCat = new ProductCatalog();
+            newCat.Name = "New Catalog";
+            manifest.ProductCatalogs.Add(newCat);
+            LoadCatalog(node, newCat);
+        }
+
+        private void AddSetupTypeNode(TreeNode node)
+        {
+            SetupType setupType = new SetupType();
+            setupType.Name = "New Setup Type";
+            ProductCatalog cat = node.Parent.Tag as ProductCatalog;
+            cat.SetupTypes.Add(setupType);
+            LoadSetupType(node, setupType);
+        }
+
+        private void AddCatalogProduct(TreeNode node)
+        {
+            CatalogProduct catProduct = new CatalogProduct();
+            catProduct.ProductId = "New Product";
+            ProductCatalog cat = node.Parent.Tag as ProductCatalog;
+            cat.Products.Add(catProduct);
+            LoadCatalogProduct(node, catProduct);
+        }
+
+
+        //private void EditCategoryNode(TreeNode node)
+        //{
+        //    CategoryEditorDlg dlg = new CategoryEditorDlg();
+        //    dlg.Category = node.Tag as ProductCategory;
+        //    dlg.ShowDialog();
+        //    if (dlg.DialogResult == DialogResult.Cancel) return;
+
+        //    if (node.Tag == null)
+        //    {
+        //        TreeNode newNode = node.Nodes.Add(dlg.Category.Name);
+        //        newNode.Tag = dlg.Category;
+        //        manifest.ProductCategories.Add(dlg.Category);
+        //    }
+        //}
+
+        private void removeButton_Click(object sender, EventArgs e)
+        {
+            if (manifestTree.SelectedNode == null) return;
+
+            TreeNode node = manifestTree.SelectedNode;
+            TreeNode parent = node.Parent;
+
+            DialogResult confirm = MessageBox.Show(
+                "Are you sure you want to remove '" + node.Text + "'?", "Confirm",
+                MessageBoxButtons.YesNo, MessageBoxIcon.Question);
+            if (confirm == DialogResult.No) return;
+
+            parent.Nodes.Remove(node);
+            (parent.Tag as IList).Remove(node.Tag);
+        }
+
+        private void manifestTree_AfterSelect(object sender, TreeViewEventArgs e)
+        {
+            object o = e.Node.Tag;
+            addButton.Enabled = (o != null && o is ICollection);
+            removeButton.Enabled = (o != null && !(o is ICollection));
+            if (addButton.Enabled)
+            {
+                properties.SelectedObject = null;
+                return;
+            }
+            if (! (o is ICollection))
+                properties.SelectedObject = o;
+        }
+
+    }
+}

=== added file 'ManifestManager/Form1.resx'
--- a/ManifestManager/Form1.resx	1970-01-01 00:00:00 +0000
+++ b/ManifestManager/Form1.resx	2011-01-24 21:36:57 +0000
@@ -0,0 +1,157 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="mainMenu.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+  <metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>127, 17</value>
+  </metadata>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="addButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIISURBVDhPpZP7S1NxGMbPPxKaXVUkMEq8IpKUCoY/hGgI
+        ymqkDYYXcCjDZOANURSjCNGFQUTsl4GXVMxKk62YU4fXQpaIlygHQxBRH8/zwvyaIAYe+HLgnPN8nue9
+        HA3nvDTq63oW/jm13XOwvPTB3DYFY5MH+bXfcN8ygfTSMSSXfESicQDxBqdYHwH29g9w2tnZ3UcguIvN
+        rR3417exuBJE5N1n/wfwLgXEOc38Bc6xNRHb+/y4nm49G0Bnit2zf9H6bkliE/jKuYxrd6oVgDWfjB+K
+        TWeKMyrGEVfowITvD9re/9ABVQrAhh0HHK+ZselMMaN/mvwtDb+aVqkA7HYIwIj3ysfluPTorJnP6Ezx
+        oHsD1s5ZXEktUwCOioB5f1CEPR9+wTG6iuiserTo8dkwng7HT/R+XUPF8xlcTjErAOdMcW6NW8STiwG8
+        7vej8oUPN/PsEv3t8Ao0TZP3T1u8uJRkUgAuSYHtO97oLxmXd5t9Ho8aPTK+GzntqNfrLm2fFoihwYOI
+        xGIF4KjoGBLzY1OrF9k6OOFxnwDC4wxIMX1G0pMhgVyMNyoA13PAtS7OrJk1PrC69LUdQWxuF6IybHrX
+        LRI7JrtZdoDAo1XmbjMyD+tjSXxGcXRmnYg5ttD9QuxDhN0uUgDOmbvNTpPOJaGAo2K36cyaGZvOFIfd
+        KlSA8/zRh9ABIDUG+1JpAAAAAElFTkSuQmCC
+</value>
+  </data>
+  <data name="removeButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIISURBVDhPpZP7S1NxGMbPPxKaXVUkMEq8IpKUCoY/hGgI
+        ymqkDYYXcCjDZOANURSjCNGFQUTsl4GXVMxKk62YU4fXQpaIlygHQxBRH8/zwvyaIAYe+HLgnPN8nue9
+        HA3nvDTq63oW/jm13XOwvPTB3DYFY5MH+bXfcN8ygfTSMSSXfESicQDxBqdYHwH29g9w2tnZ3UcguIvN
+        rR3417exuBJE5N1n/wfwLgXEOc38Bc6xNRHb+/y4nm49G0Bnit2zf9H6bkliE/jKuYxrd6oVgDWfjB+K
+        TWeKMyrGEVfowITvD9re/9ABVQrAhh0HHK+ZselMMaN/mvwtDb+aVqkA7HYIwIj3ysfluPTorJnP6Ezx
+        oHsD1s5ZXEktUwCOioB5f1CEPR9+wTG6iuiserTo8dkwng7HT/R+XUPF8xlcTjErAOdMcW6NW8STiwG8
+        7vej8oUPN/PsEv3t8Ao0TZP3T1u8uJRkUgAuSYHtO97oLxmXd5t9Ho8aPTK+GzntqNfrLm2fFoihwYOI
+        xGIF4KjoGBLzY1OrF9k6OOFxnwDC4wxIMX1G0pMhgVyMNyoA13PAtS7OrJk1PrC69LUdQWxuF6IybHrX
+        LRI7JrtZdoDAo1XmbjMyD+tjSXxGcXRmnYg5ttD9QuxDhN0uUgDOmbvNTpPOJaGAo2K36cyaGZvOFIfd
+        KlSA8/zRh9ABIDUG+1JpAAAAAElFTkSuQmCC
+</value>
+  </data>
+</root>
\ No newline at end of file

=== added file 'ManifestManager/ManifestManager.csproj'
--- a/ManifestManager/ManifestManager.csproj	1970-01-01 00:00:00 +0000
+++ b/ManifestManager/ManifestManager.csproj	2011-01-24 21:36:57 +0000
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
+    <ProductVersion>8.0.30703</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{6BFB8E06-5036-4FC5-B189-14D7DBC4404F}</ProjectGuid>
+    <OutputType>WinExe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>ManifestManager</RootNamespace>
+    <AssemblyName>ManifestManager</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <TargetFrameworkProfile>Client</TargetFrameworkProfile>
+    <FileAlignment>512</FileAlignment>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <PlatformTarget>x86</PlatformTarget>
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <PlatformTarget>x86</PlatformTarget>
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Deployment" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Form1.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="Form1.Designer.cs">
+      <DependentUpon>Form1.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Package.cs" />
+    <Compile Include="Product.cs" />
+    <Compile Include="ProductCatalog.cs" />
+    <Compile Include="ProductCategory.cs" />
+    <Compile Include="ProductFeature.cs" />
+    <Compile Include="ProductManifest.cs" />
+    <Compile Include="Program.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <EmbeddedResource Include="Form1.resx">
+      <DependentUpon>Form1.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Properties\Resources.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <Compile Include="Properties\Resources.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Resources.resx</DependentUpon>
+      <DesignTime>True</DesignTime>
+    </Compile>
+    <None Include="app.config" />
+    <None Include="Properties\Settings.settings">
+      <Generator>SettingsSingleFileGenerator</Generator>
+      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+    </None>
+    <Compile Include="Properties\Settings.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Settings.settings</DependentUpon>
+      <DesignTimeSharedInput>True</DesignTimeSharedInput>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup />
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
\ No newline at end of file

=== added file 'ManifestManager/Package.cs'
--- a/ManifestManager/Package.cs	1970-01-01 00:00:00 +0000
+++ b/ManifestManager/Package.cs	2011-01-24 21:36:57 +0000
@@ -0,0 +1,122 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Text;
+using System.Xml.Serialization;
+using Microsoft.Win32;
+using System.Diagnostics;
+using System.ComponentModel;
+
+namespace WexInstaller.Core
+{
+    public class Package
+    {
+        [XmlAttribute("type")]
+        public PackageType Type { get; set; }
+
+        [XmlAttribute("arch")]
+        public PackageArchitecture Architecture { get; set; }
+
+        [XmlAttribute("filename")]
+        public string FileName { get; set; }
+
+        [XmlAttribute("id")]
+        public string Id { get; set; }
+
+        [XmlAttribute("thisVersion")]
+        public string ThisVersion { get; set; }
+
+        [Browsable(false)]
+        [XmlElement("Feature")]
+        public List<ProductFeature> Features { get; set; }
+
+        //public long GetInstallationSizeEstimate()
+        //{
+        //    long defaultBase = 0;
+
+        //    if (FoundLocal)
+        //    {
+        //        // Disable MSI UI.
+        //        InstallUILevel internalUILevel = InstallUILevel.None;
+
+        //        if (msiVersion.FileMajorPart >= 5)
+        //        {
+        //            // Allow to installer to elevate, even in silent mode
+        //            internalUILevel |= InstallUILevel.UACOnly;
+        //        }
+        //        MsiInterop.MsiSetInternalUI(internalUILevel, IntPtr.Zero);
+
+        //        UIntPtr packageHandle = UIntPtr.Zero;
+        //        uint retVal = MsiInterop.MsiOpenPackage(FullPath, ref packageHandle);
+
+        //        if (retVal == 0)
+        //        {
+        //            uint results = 0;
+        //            results += MsiInterop.MsiDoAction(packageHandle, "CostInitialize");
+        //            results += MsiInterop.MsiDoAction(packageHandle, "FileCost");
+        //            results += MsiInterop.MsiDoAction(packageHandle, "CostFinalize");
+        //            results += MsiInterop.MsiDoAction(packageHandle, "InstallValidate");
+        //            // The EstimateSize is not available until after the InstallValidate action is complete.
+
+        //            if (results == 0)
+        //            {
+        //                // Now, you can find the estimated size per feature.
+        //                foreach (ProductFeature f in Features)
+        //                {
+        //                    int cost = 0;
+        //                    if (MsiInterop.MsiGetFeatureCost(packageHandle, f.Name, MSICostTree.Self, InstallState.Source, out cost) == 0)
+        //                        if (cost != -2147483648) // Null value returned when EstimateSize is uninitialized.
+        //                            f.SizeEstimate = cost * 512 * 1024; // Number of bytes
+        //                    defaultBase += f.SizeEstimate;
+
+        //                    foreach (ProductFeature f1 in f.Features)
+        //                    {
+        //                        int cost1 = 0;
+        //                        if (MsiInterop.MsiGetFeatureCost(packageHandle, f1.Name, MSICostTree.Self, InstallState.Source, out cost1) == 0)
+        //                            if (cost != -2147483648)
+        //                                f1.SizeEstimate = cost1 * 512 * 1024; // Number of bytes
+        //                        defaultBase += f1.SizeEstimate;
+        //                    }
+        //                }
+        //            }
+        //            else
+        //            {
+        //                // Invalid package.
+        //            }
+        //        }
+
+        //        MsiInterop.MsiCloseHandle(packageHandle);
+        //    }
+
+        //    return defaultBase;
+        //}
+    }
+
+    public enum PackageType
+    {
+        MSI
+    }
+
+    public enum PackageArchitecture
+    {
+        X86,
+        X64,
+        Any
+    }
+
+    public enum PackagePlatform
+    {
+        Windows,
+        Any
+    }
+
+    public enum PackageMaturity
+    {
+        CTP,
+        Alpha,
+        Beta,
+        RC,
+        GA
+    }
+
+}

=== added file 'ManifestManager/Product.cs'
--- a/ManifestManager/Product.cs	1970-01-01 00:00:00 +0000
+++ b/ManifestManager/Product.cs	2011-01-24 21:36:57 +0000
@@ -0,0 +1,33 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Xml.Serialization;
+using System.Collections.ObjectModel;
+using WexInstaller.Core;
+using System.Reflection;
+using System.Diagnostics;
+using System.Net;
+using System.ComponentModel;
+using System.Threading;
+using System.IO;
+
+namespace WexInstaller.Core
+{
+    public class Product : ProductElement
+    {
+        public List<Package> Packages { get; set; }
+
+        [XmlAttribute("upgradeId")]
+        public string UpgradeId { get; set; }
+
+        [XmlAttribute("urlBaseDir")]
+        public string UrlBase { get; set; }
+
+        //public long GetInstallationSizeEstimate()
+        //{
+        //    return GetPackage().GetInstallationSizeEstimate();
+        //}
+    }
+
+}

=== added file 'ManifestManager/ProductCatalog.cs'
--- a/ManifestManager/ProductCatalog.cs	1970-01-01 00:00:00 +0000
+++ b/ManifestManager/ProductCatalog.cs	2011-01-24 21:36:57 +0000
@@ -0,0 +1,71 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Xml.Serialization;
+using System.Runtime.Serialization;
+using System.ComponentModel;
+
+namespace WexInstaller.Core
+{
+    public class ProductCatalog
+    {
+        public ProductCatalog()
+        {
+            SetupTypes = new List<SetupType>();
+            Products = new List<CatalogProduct>();
+        }
+
+        [XmlAttribute("id")]

+        public string Id { get; set; }
+
+        [XmlAttribute("name")]
+        public string Name { get; set; }
+
+        [XmlAttribute("description")]
+        public string Description { get; set; }
+
+        [XmlAttribute("commercial")]
+        public bool Commercial { get; set; }
+
+        [Browsable(false)]
+        [XmlArray("SetupTypes")]
+        public List<SetupType> SetupTypes { get; set; }
+
+        [Browsable(false)]
+        [XmlArray("CatalogProducts")]
+        public List<CatalogProduct> Products { get; set; }
+    }
+
+    public class CatalogProduct
+    {
+        [XmlIgnore]
+        public Product ReferencedProduct;
+
+        [XmlAttribute("productId")]
+        public string ProductId { get; set; }
+
+        [XmlAttribute("setupTypeFlags")]
+        public int SetupTypeFlag { get; set; }
+    }
+
+    public enum SetupTypeFlag : int
+    {
+        Default=1,
+        ServerOnly=2,
+        Full=64,
+        Custom=128
+    }
+
+    public class SetupType
+    {
+        [XmlAttribute("flag")]
+        public int Flag { get; set; }
+
+        [XmlAttribute("name")]
+        public string Name { get; set; }
+
+        [XmlAttribute("description")]
+        public string Description { get; set; }
+    }
+}

=== added file 'ManifestManager/ProductCategory.cs'
--- a/ManifestManager/ProductCategory.cs	1970-01-01 00:00:00 +0000
+++ b/ManifestManager/ProductCategory.cs	2011-01-24 21:36:57 +0000
@@ -0,0 +1,31 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Xml.Serialization;
+
+namespace WexInstaller.Core
+{
+    public class ProductCategory : ProductElement
+    {
+        [XmlElement("Product")]
+        public List<Product> Products;
+
+        //public long GetInstallationSizeEstimate()
+        //{
+        //    long sizeEst = 0;
+        //    foreach (Product p in Products)
+        //        sizeEst = p.GetInstallationSizeEstimate();
+        //    return sizeEst;
+        //}
+    }
+
+    public enum ProductCategoryType
+    {
+        Server = 0,
+        Application,
+        Connector,
+        AddIn,
+        Documentation,
+        Tutorials
+    }
+}

=== added file 'ManifestManager/ProductFeature.cs'
--- a/ManifestManager/ProductFeature.cs	1970-01-01 00:00:00 +0000
+++ b/ManifestManager/ProductFeature.cs	2011-01-24 21:36:57 +0000
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Collections.ObjectModel;
+using System.Xml.Serialization;
+using System.Drawing;
+using System.Resources;
+
+namespace WexInstaller.Core
+{
+    abstract public class ProductElement
+    {
+        private Image icon;
+
+        [XmlIgnore]
+        public ProductElement Parent { get; private set; }
+
+        [XmlAttribute("name")]
+        public string Name { get; set; }
+
+        [XmlAttribute("title")]
+        public string Title { get; set; }
+
+        [XmlAttribute("description")]
+        public string Description { get; set; }
+    }
+
+    public class ProductFeature : ProductElement
+    {
+        private bool proposedInstalled;
+
+        [XmlAttribute("id")]
+        public string Id { get; set; }
+
+        [XmlAttribute("default")]
+        public bool IncludeInDefault { get; set; }
+
+        [XmlAttribute("size")]
+        public long SizeEstimate { get; set; }
+
+        [XmlAttribute("display")]
+        public string Display { get; set; }
+
+        [XmlAttribute("hasComponents")]
+        public string HasComponents { get; set; }
+
+        [XmlElement("Feature")]
+        public List<ProductFeature> Features { get; set; }
+
+        public ProductFeature()
+        {
+            Features = new List<ProductFeature>();
+        }
+
+        public virtual long GetInstallationSizeEstimate()
+        {
+            long sizeEst = 0;
+            foreach (ProductFeature f in Features)
+                sizeEst += f.SizeEstimate;
+            sizeEst += SizeEstimate;
+            return sizeEst;
+        }
+
+    }
+}

=== added file 'ManifestManager/ProductManifest.cs'
--- a/ManifestManager/ProductManifest.cs	1970-01-01 00:00:00 +0000
+++ b/ManifestManager/ProductManifest.cs	2011-01-24 21:36:57 +0000
@@ -0,0 +1,33 @@
+ï»g System.Linq;
+using System.Text;
+using System.Xml.Serialization;
+using System.IO;
+using System.ComponentModel;
+
+namespace WexInstaller.Core
+{
+    public sealed class ProductManifest
+    {
+        [XmlAttribute("version")]
+        public int Version { get; set; }
+
+        [XmlAttribute("format")]
+        public int Format { get; set; }
+
+        [XmlElement("UpdateVersion")]
+        public string UpdateVersion { get; set; }
+
+        [XmlElement("UpdateURL")]
+        public string UpdateUrl { get; set; }
+
+        [Browsable(false)]
+        [XmlArray()]
+        public List<ProductCatalog> ProductCatalogs;
+
+        [Browsable(false)]
+        [XmlArray]
+        public List<ProductCategory> ProductCategories;
+    }
+}

=== added file 'ManifestManager/Program.cs'
--- a/ManifestManager/Program.cs	1970-01-01 00:00:00 +0000
+++ b/ManifestManager/Program.cs	2011-01-24 21:36:57 +0000
@@ -0,0 +1,20 @@
+using System;
+using System.Collections.Generic;
+using System.Windows.Forms;
+
+namespace ManifestManager
+{
+    static class Program
+    {
+        /// <summary>
+        /// The main entry point for the application.
+        /// </summary>
+        [STAThread]
+        static void Main()
+        {
+            Application.EnableVisualStyles();
+            Application.SetCompatibleTextRenderingDefault(false);
+            Application.Run(new Form1());
+        }
+    }
+}

=== added directory 'ManifestManager/Properties'
=== added file 'ManifestManager/Properties/AssemblyInfo.cs'
--- a/ManifestManager/Properties/AssemblyInfo.cs	1970-01-01 00:00:00 +0000
+++ b/ManifestManager/Properties/AssemblyInfo.cs	2011-01-24 21:36:57 +0000
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("ManifestManager")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Microsoft")]
+[assembly: AssemblyProduct("ManifestManager")]
+[assembly: AssemblyCopyright("Copyright © Microsoft 2011")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("023a5a28-a7a2-40ef-a700-3da90d439dee")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

=== added file 'ManifestManager/Properties/Resources.Designer.cs'
--- a/ManifestManager/Properties/Resources.Designer.cs	1970-01-01 00:00:00 +0000
+++ b/ManifestManager/Properties/Resources.Designer.cs	2011-01-24 21:36:57 +0000
@@ -0,0 +1,63 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.1
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace ManifestManager.Properties {
+    using System;
+    
+    
+    /// <summary>
+    ///   A strongly-typed resource class, for looking up localized strings, etc.
+    /// </summary>
+    // This class was auto-generated by the StronglyTypedResourceBuilder
+    // class via a tool like ResGen or Visual Studio.
+    // To add or remove a member, edit your .ResX file then rerun ResGen
+    // with the /str option, or rebuild your VS project.
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    internal class Resources {
+        
+        private static global::System.Resources.ResourceManager resourceMan;
+        
+        private static global::System.Globalization.CultureInfo resourceCulture;
+        
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal Resources() {
+        }
+        
+        /// <summary>
+        ///   Returns the cached ResourceManager instance used by this class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Resources.ResourceManager ResourceManager {
+            get {
+                if (object.ReferenceEquals(resourceMan, null)) {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ManifestManager.Properties.Resources", typeof(Resources).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+        
+        /// <summary>
+        ///   Overrides the current thread's CurrentUICulture property for all
+        ///   resource lookups using this strongly typed resource class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Globalization.CultureInfo Culture {
+            get {
+                return resourceCulture;
+            }
+            set {
+                resourceCulture = value;
+            }
+        }
+    }
+}

=== added file 'ManifestManager/Properties/Resources.resx'
--- a/ManifestManager/Properties/Resources.resx	1970-01-01 00:00:00 +0000
+++ b/ManifestManager/Properties/Resources.resx	2011-01-24 21:36:57 +0000
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
\ No newline at end of file

=== added file 'ManifestManager/app.config'
--- a/ManifestManager/app.config	1970-01-01 00:00:00 +0000
+++ b/ManifestManager/app.config	2011-01-24 21:36:57 +0000
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<configuration>
+<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/></startup></configuration>

Attachment: [text/bzr-bundle] bzr/reggie.burnett@oracle.com-20110124213657-awu4crxua2tff59w.bundle
Thread
bzr commit into wex-installer-1.0 branch (reggie.burnett:265) Reggie Burnett24 Jan