#At file:///C:/Users/Reggie/work/wex/installer-updated/ based on revid:reggie.burnett@strippedlfog5f48ja8rbk
320 Reggie Burnett 2011-02-09
additional work on Examples setup and plugin (not done but getting closer)
added:
StandardPlugins/Examples/ExamplesConfigPanel1.Designer.cs
StandardPlugins/Examples/ExamplesConfigPanel1.cs
StandardPlugins/Examples/ExamplesConfigPanel1.resx
WexInstaller.Core/Resources/Server_Reflection.png
WexInstaller.Core/RootPasswordPromptDlg.Designer.cs
WexInstaller.Core/RootPasswordPromptDlg.cs
WexInstaller.Core/RootPasswordPromptDlg.resx
WexInstaller.Core/ServerProductConfigurationController.cs
modified:
Examples/Examples.wixproj
Examples/Product.wxs
Setup_Net/Product.wxs
Setup_Net/products.xml
StandardPlugins/Examples/ConfigurationController.cs
StandardPlugins/Server/ConfigurationController.cs
StandardPlugins/StandardPlugins.csproj
WexInstaller.Core/PluginManager.cs
WexInstaller.Core/ProductConfigurationController.cs
WexInstaller.Core/Properties/Resources.Designer.cs
WexInstaller.Core/Properties/Resources.resx
WexInstaller.Core/WexInstaller.Core.csproj
=== modified file 'Examples/Examples.wixproj'
=== modified file 'Examples/Examples.wixproj'
--- a/Examples/Examples.wixproj 2011-02-08 21:23:56 +0000
+++ b/Examples/Examples.wixproj 2011-02-09 13:49:30 +0000
@@ -6,7 +6,7 @@
<ProductVersion>3.5</ProductVersion>
<ProjectGuid>{13190f97-5d72-4949-a77a-500a57da44bb}</ProjectGuid>
<SchemaVersion>2.0</SchemaVersion>
- <OutputName>Examples</OutputName>
+ <OutputName>mysql-examples-1.0.0</OutputName>
<OutputType>Package</OutputType>
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' AND '$(MSBuildExtensionsPath32)' != '' ">$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' ">$(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
=== modified file 'Examples/Product.wxs'
--- a/Examples/Product.wxs 2011-02-08 21:23:56 +0000
+++ b/Examples/Product.wxs 2011-02-09 13:49:30 +0000
@@ -38,7 +38,7 @@
</Directory>
</Directory>
- <Feature Id="SampleDBFeature" Title="Sample Databases" Level="1">
+ <Feature Id="SampleDB" Title="Sample Databases" Level="1">
<ComponentRef Id="WorldDBComponent" />
<ComponentRef Id="SakilaDBComponent" />
<ComponentRef Id="MenagerieDBComponent" />
=== modified file 'Setup_Net/Product.wxs'
--- a/Setup_Net/Product.wxs 2011-02-01 21:05:32 +0000
+++ b/Setup_Net/Product.wxs 2011-02-09 13:49:30 +0000
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<?define ProductName="MySQL Universal Installer"?>
-<?define ProductVersion="1.0.6"?>
-<?define CatalogName="mysql-5.5-gpl"?>
+<?define ProductVersion="1.0.7"?>
+<?define CatalogName="mysql-5.1-gpl"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
@@ -30,6 +30,8 @@
<File Id="WexInstallerUpdater.exe" Name="WexInstallerUpdater.exe"
Source="$(var.ProjectDir)..\WexInstallerUpdater\bin\$(var.Configuration)\WexInstallerUpdater.exe"/>
<File Id="MySql.Data.dll" Name="MySql.Data.dll" Source="$(var.ProjectDir)..\WexInstaller\bin\$(var.Configuration)\mysql.data.dll"/>
+ <File Id="WexInstaller.Core.dll" Name="WexInstaller.Core.dll" Source="$(var.ProjectDir)..\WexInstaller\bin\$(var.Configuration)\wexinstaller.core.dll"/>
+ <File Id="StandardPlugins.dll" Name="StandardPlugins.dll" Source="$(var.ProjectDir)..\StandardPlugins\bin\$(var.Configuration)\standardplugins.dll"/>
<RemoveFolder Id="DeleteShortcutFolder1" Directory="PMCompanyDir" On="uninstall" />
<RemoveFolder Id="DeleteShortcutFolder2" Directory="ShortCutDir" On="uninstall" />
<Registry Action="remove" Root="HKLM"
@@ -70,17 +72,21 @@
</Component>
<Directory Id="ProductCache" Name="Product Cache">
<Component Id="Products" Guid="">
+ <CreateFolder/>
<util:XmlFile Id="SetProductCachePath" Action="setValue" ElementPath="//ProductCachePath" Value="[ProductCache]" File="[#config.xml]" SelectionLanguage="XPath" Sequence="1" />
<util:XmlFile Id="SetInstallationRoot" Action="setValue" ElementPath="//InstallationRoot" Value="[INSTALLLOCATION]" File="[#config.xml]" SelectionLanguage="XPath" Sequence="2" />
<util:XmlFile Id="SetProductCode" Action="setValue" ElementPath="//ProductCode" Value="[ProductCode]" File="[#config.xml]" SelectionLanguage="XPath" Sequence="3" />
- <!--<File Id="server" Name="mysql-5.5.8-win32.msi" Source="ProductCache\mysql-5.5.8-win32.msi"/>
- <File Id="workbench" Name="mysql-workbench-gpl-5.2.29-win32.msi" Source="ProductCache\mysql-workbench-gpl-5.2.29-win32.msi"/>
- -->
+ <File Id="server" Name="mysql-5.1.54-win32.msi" Source="ProductCache\mysql-5.1.54-win32.msi"/>
+ <File Id="workbench" Name="mysql-workbench-gpl-5.2.31a-win32.msi" Source="ProductCache\mysql-workbench-gpl-5.2.31a-win32.msi"/>
+
<File Id="connector_odbc" Name="mysql-connector-odbc-5.1.6-win32.msi" Source="ProductCache\mysql-connector-odbc-5.1.6-win32.msi"/>
<File Id="connector_cpp" Name="mysql-connector-c++-1.0.5-win32.msi" Source="ProductCache\mysql-connector-c++-1.0.5-win32.msi"/>
- <!--<File Id="connector_c" Name="mysql-connector-c-6.0.2-win32.msi" Source="ProductCache\mysql-connector-c-6.0.2-win32.msi"/>
- <File Id="universion_docs" Name="mysql-universal-installer-document-bundle-1.0.0.0.msi" Source="ProductCache\mysql-universal-installer-document-bundle-1.0.0.0.msi"/>
- -->
+ <File Id="connector_c" Name="mysql-connector-c-6.0.2-win32.msi" Source="ProductCache\mysql-connector-c-6.0.2-win32.msi"/>
+
+ <File Id="examples" Name="mysql-examples-1.0.0.msi" Source="ProductCache\mysql-examples-1.0.0.msi"/>
+
+ <!--<File Id="universion_docs" Name="mysql-universal-installer-document-bundle-1.0.0.0.msi" Source="ProductCache\mysql-universal-installer-document-bundle-1.0.0.0.msi"/>-->
+
</Component>
</Directory>
</Directory>
=== modified file 'Setup_Net/products.xml'
--- a/Setup_Net/products.xml 2011-02-02 17:35:12 +0000
+++ b/Setup_Net/products.xml 2011-02-09 13:49:30 +0000
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<ProductManifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" version="1" format="1">
- <UpdateURL>file://C:\Users\Reggie\work\wex\installer-updated\Setup_Net\Output\mysql-universal-installer-1.0.5.exe</UpdateURL>
+ <UpdateURL>mysql-universal-installer-1.0.7.msi</UpdateURL>
<UpdateVersion>1.0.7</UpdateVersion>
- <UpdateHash>CB69C60143875DA4A6CDCA6E6C9FDC60BFC9853C</UpdateHash>
+ <UpdateHash>6C759C590061C096B29C2C83C6A3C40651F5FA84</UpdateHash>
<ProductCatalogs>
<ProductCatalog id="mysql-5.5-gpl" name="MySQL 5.5" description="MySQL 5.5 Community Edition" commercial="false">
<SetupTypes>
@@ -60,9 +60,10 @@
</Package>
</Packages>
</Product>
- <Product name="mysql-server-5.1-gpl" title="MySQL Server" description="The core MySQL database server" upgradeId="{49EB7A6A-1CEF-4A1E-9E89-B9A4993963E3}" urlBaseDir="mysql-5.1">
+ <Product name="mysql-server-5.1-gpl" title="MySQL Server" description="The core MySQL database server"
+ upgradeId="{49EB7A6A-1CEF-4A1E-9E89-B9A4993963E3}" urlBaseDir="mysql-5.1">
<Packages>
- <Package type="MSI" arch="X86" filename="mysql-5.1.54-win32.msi" id="{2430887C-B8A8-49D8-9185-9F451185AF7B}" thisVersion="5.1.54">
+ <Package type="MSI" arch="X86" filename="mysql-5.1.53-win32.msi" id="{297EBF0D-270D-404E-82B8-CB90B4931825}" thisVersion="5.1.53">
<Feature name="SERVER" title="MySQL Server" description="Install MySQL Server." default="true" size="0" display="true" hasComponents="true">
<Feature name="DebugBinaries" title="Debug binaries" description="Debug/trace versions of executables and libraries" default="true" size="0" display="true" hasComponents="true" />
<Feature name="Client" title="Client Programs" description="Various helpful (commandline) tools including the mysql command line client" default="true" size="0" display="true" hasComponents="true" />
@@ -137,6 +138,15 @@
</Package>
</Packages>
</Product>
+ <Product name="examples" title="Examples and sample databases"
+ description="A collection of examples and sample databases to help a developer get started."
+ upgradeId="8C8219CB-78A4-4AF8-8D49-F36FB1FE3320" urlBaseDir="examples">
+ <Packages>
+ <Package type="MSI" arch="Any" filename="mysql-examples-1.0.0.msi" id="{46B63307-6F7C-4E85-A77B-FA97365DF153}" thisVersion="1.0.0">
+ <Feature name="SampleDB" title="Sample Databases" description="Some interesting sample databases" default="true" size="0" display="true" hasComponents="true" />
+ </Package>
+ </Packages>
+ </Product>
</ProductCategory>
</ProductCategories>
</ProductManifest>
\ No newline at end of file
=== modified file 'StandardPlugins/Examples/ConfigurationController.cs'
--- a/StandardPlugins/Examples/ConfigurationController.cs 2011-02-08 18:41:30 +0000
+++ b/StandardPlugins/Examples/ConfigurationController.cs 2011-02-09 13:49:30 +0000
@@ -16,14 +16,44 @@
[ProductConfiguration("examples", 1)]
public class ExamplesConfigurationController : ProductConfigurationController
{
+ UserControl[] pages = new UserControl[1];
+
+ List<string> sampleDbNames = new List<string>();
+
+ public List<ServerProductConfigurationController> Servers = new List<ServerProductConfigurationController>();
+
public override int NumPages
{
- get { throw new NotImplementedException(); }
+ get { return pages.Length; }
}
public override UserControl[] Pages
{
- get { throw new NotImplementedException(); }
+ get { return pages; }
+ }
+
+ public override void Initialize()
+ {
+ pages[0] = new ExamplesConfigStep1(this);
+ sampleDbNames.Add("World");
+ sampleDbNames.Add("World (InnoDB)");
+ sampleDbNames.Add("Sakila");
+ sampleDbNames.Add("Menagerie");
+ }
+
+ public override void PostAction(ConfigurationAction action)
+ {
+ if (action == ConfigurationAction.Install)
+ {
+ // now we need a list of all running servers
+ Servers = PluginManager.Instance.GetServerControllers(true);
+ }
+ base.PostAction(action);
+ }
+
+ protected override void BackgroundConfigure(object sender, DoWorkEventArgs e)
+ {
+ base.BackgroundConfigure(sender, e);
}
}
}
=== added file 'StandardPlugins/Examples/ExamplesConfigPanel1.Designer.cs'
--- a/StandardPlugins/Examples/ExamplesConfigPanel1.Designer.cs 1970-01-01 00:00:00 +0000
+++ b/StandardPlugins/Examples/ExamplesConfigPanel1.Designer.cs 2011-02-09 13:49:30 +0000
@@ -0,0 +1,170 @@
+using WexInstaller.Plugins.Properties;
+namespace WexInstaller.Plugins
+{
+ partial class ExamplesConfigStep1
+ {
+ /// <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 Component 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()
+ {
+ this.actionLabel = new System.Windows.Forms.Label();
+ this.label1 = new System.Windows.Forms.Label();
+ this.groupBox1 = new System.Windows.Forms.GroupBox();
+ this.label2 = new System.Windows.Forms.Label();
+ this.label3 = new System.Windows.Forms.Label();
+ this.label4 = new System.Windows.Forms.Label();
+ this.serverList1 = new System.Windows.Forms.ComboBox();
+ this.serverList2 = new System.Windows.Forms.ComboBox();
+ this.serverList3 = new System.Windows.Forms.ComboBox();
+ this.serverList4 = new System.Windows.Forms.ComboBox();
+ this.groupBox1.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // actionLabel
+ //
+ this.actionLabel.Font = new System.Drawing.Font("Tahoma", 10F);
+ this.actionLabel.Location = new System.Drawing.Point(12, 80);
+ this.actionLabel.Name = "actionLabel";
+ this.actionLabel.Size = new System.Drawing.Size(443, 23);
+ this.actionLabel.TabIndex = 2;
+ this.actionLabel.Text = "Please select the install actions for each of the sample databases";
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(39, 38);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(35, 13);
+ this.label1.TabIndex = 3;
+ this.label1.Text = "World";
+ //
+ // groupBox1
+ //
+ this.groupBox1.Controls.Add(this.serverList4);
+ this.groupBox1.Controls.Add(this.serverList3);
+ this.groupBox1.Controls.Add(this.serverList2);
+ this.groupBox1.Controls.Add(this.serverList1);
+ this.groupBox1.Controls.Add(this.label4);
+ this.groupBox1.Controls.Add(this.label3);
+ this.groupBox1.Controls.Add(this.label2);
+ this.groupBox1.Controls.Add(this.label1);
+ this.groupBox1.Location = new System.Drawing.Point(37, 125);
+ this.groupBox1.Name = "groupBox1";
+ this.groupBox1.Size = new System.Drawing.Size(418, 288);
+ this.groupBox1.TabIndex = 4;
+ this.groupBox1.TabStop = false;
+ this.groupBox1.Text = "Sample Databases";
+ //
+ // label2
+ //
+ this.label2.AutoSize = true;
+ this.label2.Location = new System.Drawing.Point(39, 88);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(81, 13);
+ this.label2.TabIndex = 4;
+ this.label2.Text = "World (InnoDB)";
+ //
+ // label3
+ //
+ this.label3.AutoSize = true;
+ this.label3.Location = new System.Drawing.Point(39, 140);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(34, 13);
+ this.label3.TabIndex = 5;
+ this.label3.Text = "Sakila";
+ //
+ // label4
+ //
+ this.label4.AutoSize = true;
+ this.label4.Location = new System.Drawing.Point(39, 188);
+ this.label4.Name = "label4";
+ this.label4.Size = new System.Drawing.Size(57, 13);
+ this.label4.TabIndex = 6;
+ this.label4.Text = "Menagerie";
+ //
+ // serverList1
+ //
+ this.serverList1.FormattingEnabled = true;
+ this.serverList1.Location = new System.Drawing.Point(185, 35);
+ this.serverList1.Name = "serverList1";
+ this.serverList1.Size = new System.Drawing.Size(182, 21);
+ this.serverList1.TabIndex = 7;
+ //
+ // serverList2
+ //
+ this.serverList2.FormattingEnabled = true;
+ this.serverList2.Location = new System.Drawing.Point(185, 88);
+ this.serverList2.Name = "serverList2";
+ this.serverList2.Size = new System.Drawing.Size(182, 21);
+ this.serverList2.TabIndex = 8;
+ //
+ // serverList3
+ //
+ this.serverList3.FormattingEnabled = true;
+ this.serverList3.Location = new System.Drawing.Point(185, 137);
+ this.serverList3.Name = "serverList3";
+ this.serverList3.Size = new System.Drawing.Size(182, 21);
+ this.serverList3.TabIndex = 9;
+ //
+ // serverList4
+ //
+ this.serverList4.FormattingEnabled = true;
+ this.serverList4.Location = new System.Drawing.Point(185, 185);
+ this.serverList4.Name = "serverList4";
+ this.serverList4.Size = new System.Drawing.Size(182, 21);
+ this.serverList4.TabIndex = 10;
+ //
+ // ExamplesConfigStep1
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.Controls.Add(this.groupBox1);
+ this.Controls.Add(this.actionLabel);
+ this.DoubleBuffered = true;
+ this.Name = "ExamplesConfigStep1";
+ this.Size = new System.Drawing.Size(560, 499);
+ this.Controls.SetChildIndex(this.actionLabel, 0);
+ this.Controls.SetChildIndex(this.groupBox1, 0);
+ this.groupBox1.ResumeLayout(false);
+ this.groupBox1.PerformLayout();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Label actionLabel;
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.GroupBox groupBox1;
+ private System.Windows.Forms.ComboBox serverList4;
+ private System.Windows.Forms.ComboBox serverList3;
+ private System.Windows.Forms.ComboBox serverList2;
+ private System.Windows.Forms.ComboBox serverList1;
+ private System.Windows.Forms.Label label4;
+ private System.Windows.Forms.Label label3;
+ private System.Windows.Forms.Label label2;
+ }
+}
=== added file 'StandardPlugins/Examples/ExamplesConfigPanel1.cs'
--- a/StandardPlugins/Examples/ExamplesConfigPanel1.cs 1970-01-01 00:00:00 +0000
+++ b/StandardPlugins/Examples/ExamplesConfigPanel1.cs 2011-02-09 13:49:30 +0000
@@ -0,0 +1,39 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Text;
+using System.Windows.Forms;
+using WexInstaller.Core;
+
+namespace WexInstaller.Plugins
+{
+ public partial class ExamplesConfigStep1 : InstallerPanel
+ {
+ public ExamplesConfigStep1(ExamplesConfigurationController controller)
+ {
+ InitializeComponent();
+ Caption = "Examples Configuration";
+ Controller = controller;
+ }
+
+ private ExamplesConfigurationController Controller { get; set; }
+
+ public override void Activate()
+ {
+ PopulateServerList(serverList1);
+ PopulateServerList(serverList2);
+ PopulateServerList(serverList3);
+ PopulateServerList(serverList4);
+ base.Activate();
+ }
+
+ private void PopulateServerList(ComboBox serverList)
+ {
+ serverList.Items.Add("Do not install");
+ foreach (ServerProductConfigurationController server in Controller.Servers)
+ serverList.Items.Add(server.Owner.TitleWithVersion);
+ }
+ }
+}
=== added file 'StandardPlugins/Examples/ExamplesConfigPanel1.resx'
--- a/StandardPlugins/Examples/ExamplesConfigPanel1.resx 1970-01-01 00:00:00 +0000
+++ b/StandardPlugins/Examples/ExamplesConfigPanel1.resx 2011-02-09 13:49:30 +0000
@@ -0,0 +1,120 @@
+<?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=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
=== modified file 'StandardPlugins/Server/ConfigurationController.cs'
--- a/StandardPlugins/Server/ConfigurationController.cs 2011-02-08 21:28:42 +0000
+++ b/StandardPlugins/Server/ConfigurationController.cs 2011-02-09 13:49:30 +0000
@@ -16,7 +16,6 @@
[ProductConfiguration("mysql-server", 1)]
public class ServerConfigurationController : ServerProductConfigurationController
{
- private BackgroundWorker bgw;
private UserControl[] pages;
private bool processedTemplate;
private bool processedService;
@@ -28,12 +27,9 @@
// UI Controls.
public ServerInstallType ServerInstallType { get; set; }
public bool Reconfigure { get; set; }
- public bool EnableTCPIP { get; set; }
- public int Port { get; set; }
public bool CreateService { get; set; }
public string ServiceName { get; set; }
public bool StartAtStartup { get; set; }
- public string RootPassword { get; set; }
public string ExistingRootPassword { get; set; }
public string ExistingConfigFile { get; set; }
@@ -67,19 +63,6 @@
Initialize();
}
- public override void Configure()
- {
- CurrentState = ConfigState.ConfigurationInProgress;
- Debug.Assert(bgw == null);
- bgw = new BackgroundWorker();
- bgw.WorkerReportsProgress = true;
- bgw.WorkerSupportsCancellation = false;
- bgw.DoWork += new DoWorkEventHandler(bgw_DoConfigure);
- bgw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bgw_ConfigureCompleted);
- bgw.ProgressChanged += new ProgressChangedEventHandler(bgw_ConfigureProgressChanged);
- bgw.RunWorkerAsync();
- }
-
private bool ProcessTemplate()
{
OnConfigured(new ConfigurationEventArgs(ConfigurationEventType.Info, "VALID_TEMPLATE"));
@@ -213,7 +196,7 @@
return processedSecuritySettings;
}
- private void bgw_DoConfigure(object sender, DoWorkEventArgs e)
+ protected override void BackgroundConfigure(object sender, DoWorkEventArgs e)
{
if (it == null)
Initialize();
@@ -231,24 +214,6 @@
}
}
- private void bgw_ConfigureProgressChanged(object sender, ProgressChangedEventArgs e)
- {
- base.OnConfigured(e.UserState as ConfigurationEventArgs);
- }
-
- private void bgw_ConfigureCompleted(object sender, RunWorkerCompletedEventArgs e)
- {
- bgw.Dispose();
- bgw = null;
- if (CurrentState != ConfigState.ConfigurationError)
- CurrentState = ConfigState.ConfigurationComplete;
-
- ConfigurationEventArgs ce = new ConfigurationEventArgs(ConfigurationEventType.Finished, "CONFIGURE_COMPLETE");
- ce.PercentComplete = 100;
- ce.Details = "Product configuration controller finished configuration.";
- base.OnConfigured(ce);
- }
-
public override void Initialize()
{
Logger.LogInformation("Product configuration controller initialization started.");
@@ -350,21 +315,21 @@
return "Dedicated Machine";
}
- public string GetConfigurationAsText()
- {
- StringBuilder s = new StringBuilder();
- s.AppendLine("Configuration Type");
- s.AppendLine(String.Format(" {0}", GetServerTypeAsString()));
- s.AppendLine(String.Format("TCP/IP Networking {0}", EnableTCPIP ? "enabled" : "disabled"));
- s.AppendLine(String.Format(" Port: {0}", EnableTCPIP ? Port.ToString() : "N/A"));
- s.AppendLine("Windows Settings");
- s.AppendLine(String.Format(" Windows Service Name: {0}",
- String.IsNullOrEmpty(ServiceName) ? "<Not Set>" : ServiceName));
- s.AppendLine("Security Settings");
- s.AppendLine(String.Format(" Root Password {0}Set",
- String.IsNullOrEmpty(RootPassword) ? "Not " : ""));
- return s.ToString();
- }
+ //public string GetConfigurationAsText()
+ //{
+ // StringBuilder s = new StringBuilder();
+ // s.AppendLine("Configuration Type");
+ // s.AppendLine(String.Format(" {0}", GetServerTypeAsString()));
+ // s.AppendLine(String.Format("TCP/IP Networking {0}", EnableTCPIP ? "enabled" : "disabled"));
+ // s.AppendLine(String.Format(" Port: {0}", EnableTCPIP ? Port.ToString() : "N/A"));
+ // s.AppendLine("Windows Settings");
+ // s.AppendLine(String.Format(" Windows Service Name: {0}",
+ // String.IsNullOrEmpty(ServiceName) ? "<Not Set>" : ServiceName));
+ // s.AppendLine("Security Settings");
+ // s.AppendLine(String.Format(" Root Password {0}Set",
+ // String.IsNullOrEmpty(RootPassword) ? "Not " : ""));
+ // return s.ToString();
+ //}
protected override void OnConfigured(ConfigurationEventArgs e)
{
@@ -466,13 +431,9 @@
/// ========================================================================
public override bool IsRunning
{
- get { throw new NotImplementedException(); }
+ get { return true; }
}
- public override string GetConnectionString(bool promptIfNecessary)
- {
- throw new NotImplementedException();
- }
}
public enum ServerInstallType
=== modified file 'StandardPlugins/StandardPlugins.csproj'
--- a/StandardPlugins/StandardPlugins.csproj 2011-02-08 21:54:02 +0000
+++ b/StandardPlugins/StandardPlugins.csproj 2011-02-09 13:49:30 +0000
@@ -45,6 +45,12 @@
</ItemGroup>
<ItemGroup>
<Compile Include="Examples\ConfigurationController.cs" />
+ <Compile Include="Examples\ExamplesConfigPanel1.cs">
+ <SubType>UserControl</SubType>
+ </Compile>
+ <Compile Include="Examples\ExamplesConfigPanel1.Designer.cs">
+ <DependentUpon>ExamplesConfigPanel1.cs</DependentUpon>
+ </Compile>
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
@@ -74,6 +80,9 @@
</Compile>
</ItemGroup>
<ItemGroup>
+ <EmbeddedResource Include="Examples\ExamplesConfigPanel1.resx">
+ <DependentUpon>ExamplesConfigPanel1.cs</DependentUpon>
+ </EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
=== modified file 'WexInstaller.Core/PluginManager.cs'
--- a/WexInstaller.Core/PluginManager.cs 2011-02-08 21:28:42 +0000
+++ b/WexInstaller.Core/PluginManager.cs 2011-02-09 13:49:30 +0000
@@ -7,15 +7,16 @@
namespace WexInstaller.Core
{
- class PluginManager
+ public class PluginManager
{
- private static PluginManager Instance = new PluginManager();
private bool loadedPlugins;
private Dictionary<string, ControllerType> controllerTypes =
new Dictionary<string, ControllerType>();
private Dictionary<string, ProductConfigurationController> controllerCache =
new Dictionary<string,ProductConfigurationController>();
+ public static PluginManager Instance = new PluginManager();
+
/// <summary>
/// Retrieves the latest controller plugin (if any) associated with the given product name
/// </summary>
@@ -108,6 +109,25 @@
loadedPlugins = true;
}
+
+ /// <summary>
+ /// Returns a list of server controllers, possibly running
+ /// </summary>
+ /// <param name="running">If true only return the controllers whose servers are running</param>
+ /// <returns></returns>
+ public List<ServerProductConfigurationController> GetServerControllers(bool running)
+ {
+ List<ServerProductConfigurationController> servers = new List<ServerProductConfigurationController>();
+
+ foreach (ProductConfigurationController controller in controllerCache.Values)
+ {
+ if (!(controller is ServerProductConfigurationController)) continue;
+ ServerProductConfigurationController s = controller as ServerProductConfigurationController;
+ if (running && !s.IsRunning) continue;
+ servers.Add(s);
+ }
+ return servers;
+ }
}
struct ControllerType
=== modified file 'WexInstaller.Core/ProductConfigurationController.cs'
--- a/WexInstaller.Core/ProductConfigurationController.cs 2011-02-08 21:28:42 +0000
+++ b/WexInstaller.Core/ProductConfigurationController.cs 2011-02-09 13:49:30 +0000
@@ -13,8 +13,9 @@
{
public abstract class ProductConfigurationController
{
+ private BackgroundWorker bgw;
+
public abstract int NumPages { get; }
-
public abstract UserControl[] Pages { get; }
public ConfigState CurrentState { get; protected set; }
@@ -23,7 +24,39 @@
/// <summary>
/// Virtual methods controllers can override
/// </summary>
- public virtual void Configure() { }
+ public virtual void Configure()
+ {
+ CurrentState = ConfigState.ConfigurationInProgress;
+ Debug.Assert(bgw == null);
+ bgw = new BackgroundWorker();
+ bgw.WorkerReportsProgress = true;
+ bgw.WorkerSupportsCancellation = false;
+ bgw.DoWork += new DoWorkEventHandler(BackgroundConfigure);
+ bgw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(BackgroundConfigureCompleted);
+ bgw.ProgressChanged += new ProgressChangedEventHandler(BackgroundConfigureProgressChanged);
+ bgw.RunWorkerAsync();
+ }
+
+ protected virtual void BackgroundConfigure(object sender, DoWorkEventArgs e) { }
+
+ protected virtual void BackgroundConfigureProgressChanged(object sender, ProgressChangedEventArgs e)
+ {
+ OnConfigured(e.UserState as ConfigurationEventArgs);
+ }
+
+ protected virtual void BackgroundConfigureCompleted(object sender, RunWorkerCompletedEventArgs e)
+ {
+ bgw.Dispose();
+ bgw = null;
+ if (CurrentState != ConfigState.ConfigurationError)
+ CurrentState = ConfigState.ConfigurationComplete;
+
+ ConfigurationEventArgs ce = new ConfigurationEventArgs(ConfigurationEventType.Finished, "CONFIGURE_COMPLETE");
+ ce.PercentComplete = 100;
+ ce.Details = "Product configuration controller finished configuration.";
+ OnConfigured(ce);
+ }
+
public virtual void Initialize() { }
public virtual void PreAction(ConfigurationAction action) { }
public virtual void PostAction(ConfigurationAction action) { }
=== modified file 'WexInstaller.Core/Properties/Resources.Designer.cs'
--- a/WexInstaller.Core/Properties/Resources.Designer.cs 2011-02-08 21:28:42 +0000
+++ b/WexInstaller.Core/Properties/Resources.Designer.cs 2011-02-09 13:49:30 +0000
@@ -102,6 +102,13 @@
}
}
+ internal static System.Drawing.Bitmap Server_Reflection {
+ get {
+ object obj = ResourceManager.GetObject("Server_Reflection", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
internal static System.Drawing.Bitmap Tutorials_Icon {
get {
object obj = ResourceManager.GetObject("Tutorials_Icon", resourceCulture);
=== modified file 'WexInstaller.Core/Properties/Resources.resx'
--- a/WexInstaller.Core/Properties/Resources.resx 2011-02-08 21:28:42 +0000
+++ b/WexInstaller.Core/Properties/Resources.resx 2011-02-09 13:49:30 +0000
@@ -117,7 +117,7 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
- <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+ <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="AddIn_Icon" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\AddOnsCategoryIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
@@ -130,7 +130,6 @@
<data name="Documentation_Icon" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\DocsCategoryIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
- <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="linkpanel_divider" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\linkpanel_divider.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
@@ -140,4 +139,8 @@
<data name="Tutorials_Icon" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\TutorialsCategoryIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
+ <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+ <data name="Server_Reflection" type="System.Resources.ResXFileRef, System.Windows.Forms">
+ <value>..\Resources\Server_Reflection.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+ </data>
</root>
\ No newline at end of file
=== added file 'WexInstaller.Core/Resources/Server_Reflection.png'
Binary files a/WexInstaller.Core/Resources/Server_Reflection.png 1970-01-01 00:00:00 +0000 and b/WexInstaller.Core/Resources/Server_Reflection.png 2011-02-09 13:49:30 +0000 differ
=== added file 'WexInstaller.Core/RootPasswordPromptDlg.Designer.cs'
--- a/WexInstaller.Core/RootPasswordPromptDlg.Designer.cs 1970-01-01 00:00:00 +0000
+++ b/WexInstaller.Core/RootPasswordPromptDlg.Designer.cs 2011-02-09 13:49:30 +0000
@@ -0,0 +1,179 @@
+namespace WexInstaller.Core
+{
+ partial class RootPasswordPromptDlg
+ {
+ /// <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()
+ {
+ this.panel1 = new System.Windows.Forms.Panel();
+ this.largeTitle = new System.Windows.Forms.Label();
+ this.label1 = new System.Windows.Forms.Label();
+ this.pictureBox1 = new System.Windows.Forms.PictureBox();
+ this.username = new System.Windows.Forms.TextBox();
+ this.label2 = new System.Windows.Forms.Label();
+ this.label3 = new System.Windows.Forms.Label();
+ this.password = new System.Windows.Forms.TextBox();
+ this.cancelButton = new System.Windows.Forms.Button();
+ this.loginButton = new System.Windows.Forms.Button();
+ this.panel1.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
+ this.SuspendLayout();
+ //
+ // panel1
+ //
+ this.panel1.BackColor = System.Drawing.SystemColors.Window;
+ this.panel1.Controls.Add(this.password);
+ this.panel1.Controls.Add(this.label3);
+ this.panel1.Controls.Add(this.label2);
+ this.panel1.Controls.Add(this.username);
+ this.panel1.Controls.Add(this.pictureBox1);
+ this.panel1.Controls.Add(this.label1);
+ this.panel1.Controls.Add(this.largeTitle);
+ this.panel1.Dock = System.Windows.Forms.DockStyle.Top;
+ this.panel1.Location = new System.Drawing.Point(0, 0);
+ this.panel1.Name = "panel1";
+ this.panel1.Size = new System.Drawing.Size(443, 193);
+ this.panel1.TabIndex = 0;
+ //
+ // largeTitle
+ //
+ this.largeTitle.AutoSize = true;
+ this.largeTitle.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.largeTitle.ForeColor = System.Drawing.Color.DodgerBlue;
+ this.largeTitle.Location = new System.Drawing.Point(24, 23);
+ this.largeTitle.Name = "largeTitle";
+ this.largeTitle.Size = new System.Drawing.Size(300, 19);
+ this.largeTitle.TabIndex = 0;
+ this.largeTitle.Text = "Please provide a MySQL Server 5.5 Login";
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(25, 51);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(248, 14);
+ this.label1.TabIndex = 1;
+ this.label1.Text = "Login as a user with root account privileges.";
+ //
+ // pictureBox1
+ //
+ this.pictureBox1.Image = global::WexInstaller.Core.Properties.Resources.Server_Reflection;
+ this.pictureBox1.Location = new System.Drawing.Point(50, 94);
+ this.pictureBox1.Name = "pictureBox1";
+ this.pictureBox1.Size = new System.Drawing.Size(59, 63);
+ this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
+ this.pictureBox1.TabIndex = 2;
+ this.pictureBox1.TabStop = false;
+ //
+ // username
+ //
+ this.username.Location = new System.Drawing.Point(279, 96);
+ this.username.Name = "username";
+ this.username.Size = new System.Drawing.Size(122, 22);
+ this.username.TabIndex = 3;
+ //
+ // label2
+ //
+ this.label2.AutoSize = true;
+ this.label2.Location = new System.Drawing.Point(128, 99);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(145, 14);
+ this.label2.TabIndex = 4;
+ this.label2.Text = "Root Account Username:";
+ //
+ // label3
+ //
+ this.label3.AutoSize = true;
+ this.label3.Location = new System.Drawing.Point(211, 129);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(62, 14);
+ this.label3.TabIndex = 5;
+ this.label3.Text = "Password:";
+ //
+ // password
+ //
+ this.password.Location = new System.Drawing.Point(279, 126);
+ this.password.Name = "password";
+ this.password.PasswordChar = '*';
+ this.password.Size = new System.Drawing.Size(122, 22);
+ this.password.TabIndex = 6;
+ //
+ // cancelButton
+ //
+ this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+ this.cancelButton.Location = new System.Drawing.Point(349, 205);
+ this.cancelButton.Name = "cancelButton";
+ this.cancelButton.Size = new System.Drawing.Size(75, 23);
+ this.cancelButton.TabIndex = 1;
+ this.cancelButton.Text = "Cancel";
+ this.cancelButton.UseVisualStyleBackColor = true;
+ //
+ // loginButton
+ //
+ this.loginButton.DialogResult = System.Windows.Forms.DialogResult.OK;
+ this.loginButton.Location = new System.Drawing.Point(258, 205);
+ this.loginButton.Name = "loginButton";
+ this.loginButton.Size = new System.Drawing.Size(75, 23);
+ this.loginButton.TabIndex = 2;
+ this.loginButton.Text = "Login";
+ this.loginButton.UseVisualStyleBackColor = true;
+ //
+ // RootPasswordPromptDlg
+ //
+ this.AcceptButton = this.loginButton;
+ this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 14F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.CancelButton = this.cancelButton;
+ this.ClientSize = new System.Drawing.Size(443, 248);
+ this.ControlBox = false;
+ this.Controls.Add(this.loginButton);
+ this.Controls.Add(this.cancelButton);
+ this.Controls.Add(this.panel1);
+ this.Font = new System.Drawing.Font("Tahoma", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
+ this.Name = "RootPasswordPromptDlg";
+ this.Text = "Configuration";
+ this.panel1.ResumeLayout(false);
+ this.panel1.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Panel panel1;
+ private System.Windows.Forms.Label largeTitle;
+ private System.Windows.Forms.PictureBox pictureBox1;
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.TextBox password;
+ private System.Windows.Forms.Label label3;
+ private System.Windows.Forms.Label label2;
+ private System.Windows.Forms.TextBox username;
+ private System.Windows.Forms.Button cancelButton;
+ private System.Windows.Forms.Button loginButton;
+ }
+}
\ No newline at end of file
=== added file 'WexInstaller.Core/RootPasswordPromptDlg.cs'
--- a/WexInstaller.Core/RootPasswordPromptDlg.cs 1970-01-01 00:00:00 +0000
+++ b/WexInstaller.Core/RootPasswordPromptDlg.cs 2011-02-09 13:49:30 +0000
@@ -0,0 +1,28 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Text;
+using System.Windows.Forms;
+
+namespace WexInstaller.Core
+{
+ public partial class RootPasswordPromptDlg : Form
+ {
+ public RootPasswordPromptDlg()
+ {
+ InitializeComponent();
+ }
+
+ public string Username
+ {
+ get { return username.Text.Trim(); }
+ }
+
+ public string Password
+ {
+ get { return password.Text.Trim(); }
+ }
+ }
+}
=== added file 'WexInstaller.Core/RootPasswordPromptDlg.resx'
--- a/WexInstaller.Core/RootPasswordPromptDlg.resx 1970-01-01 00:00:00 +0000
+++ b/WexInstaller.Core/RootPasswordPromptDlg.resx 2011-02-09 13:49:30 +0000
@@ -0,0 +1,120 @@
+<?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=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 'WexInstaller.Core/ServerProductConfigurationController.cs'
--- a/WexInstaller.Core/ServerProductConfigurationController.cs 1970-01-01 00:00:00 +0000
+++ b/WexInstaller.Core/ServerProductConfigurationController.cs 2011-02-09 13:49:30 +0000
@@ -0,0 +1,48 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Windows.Forms;
+using WexInstaller.Core;
+using System.ComponentModel;
+using System.Threading;
+using System.Diagnostics;
+
+namespace WexInstaller.Core
+{
+ public abstract class ServerProductConfigurationController : ProductConfigurationController
+ {
+ public bool EnableTCPIP { get; set; }
+ public int Port { get; set; }
+ public string RootPassword { get; set; }
+
+ public abstract bool IsRunning { get; }
+
+ public string GetConnectionString(bool promptIfNecessary)
+ {
+ string username = "root";
+ string rootPwd = RootPassword;
+
+ if (String.IsNullOrEmpty(rootPwd))
+ {
+ if (!promptIfNecessary) return null;
+ RootPasswordPromptDlg dlg = new RootPasswordPromptDlg();
+ DialogResult result = dlg.ShowDialog();
+ if (result == DialogResult.Cancel) return null;
+ username = dlg.Username;
+ rootPwd = dlg.Password;
+ }
+
+ string connStr = String.Format("server=localhost;uid={0};pwd={1}", username, rootPwd);
+
+ // if we are not doing TCP/IP then we assume named pipes
+ if (!EnableTCPIP)
+ connStr += "";
+ else
+ connStr += String.Format(";port={0}", Port);
+ return connStr;
+ }
+ }
+
+}
=== modified file 'WexInstaller.Core/WexInstaller.Core.csproj'
--- a/WexInstaller.Core/WexInstaller.Core.csproj 2011-02-08 21:28:42 +0000
+++ b/WexInstaller.Core/WexInstaller.Core.csproj 2011-02-09 13:49:30 +0000
@@ -58,6 +58,12 @@
<Compile Include="ProductFeature.cs">
<SubType>Code</SubType>
</Compile>
+ <Compile Include="RootPasswordPromptDlg.cs">
+ <SubType>Form</SubType>
+ </Compile>
+ <Compile Include="RootPasswordPromptDlg.Designer.cs">
+ <DependentUpon>RootPasswordPromptDlg.cs</DependentUpon>
+ </Compile>
<Compile Include="ServerProductConfigurationController.cs" />
<Compile Include="ProductConfigurationController.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
@@ -76,6 +82,9 @@
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
+ <EmbeddedResource Include="RootPasswordPromptDlg.resx">
+ <DependentUpon>RootPasswordPromptDlg.cs</DependentUpon>
+ </EmbeddedResource>
</ItemGroup>
<ItemGroup>
<None Include="Resources\linkpanel_divider.png" />
@@ -98,6 +107,9 @@
<ItemGroup>
<None Include="Resources\TutorialsCategoryIcon.png" />
</ItemGroup>
+ <ItemGroup>
+ <None Include="Resources\Server_Reflection.png" />
+ </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.
Attachment: [text/bzr-bundle] bzr/reggie.burnett@oracle.com-20110209134930-mtr9yyf0ajwkd3hr.bundle
| Thread |
|---|
| • bzr commit into wex-installer-1.0 branch (reggie.burnett:320) | Reggie Burnett | 9 Feb |