Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Merge branch 'master' of github.com:soitgoes/Mite

Conflicts:
	Mite.Core/AnsiDatabaseRepository.cs
	Mite.sln.proj
  • Loading branch information...
commit 21d25e1f3b1c08c923fbaebd2f1dff72ecdda011 2 parents ab07838 + 8816ea1
@soitgoes authored
Showing with 10,443 additions and 1,389 deletions.
  1. +4 −1 .gitignore
  2. +12 −0 ExampleMsBuildTask/ExampleClass.cs
  3. +55 −0 ExampleMsBuildTask/ExampleMsBuildTask.csproj
  4. +36 −0 ExampleMsBuildTask/Properties/AssemblyInfo.cs
  5. +8 −0 ExampleMsBuildTask/scripts/2012-09-21T03-31-54Z.sql
  6. +4 −0 ExampleMsBuildTask/scripts/mite.config
  7. +59 −0 Mite.Builder/MigratorFactory.cs
  8. +63 −0 Mite.Builder/Mite.Builder.csproj
  9. +36 −0 Mite.Builder/Properties/AssemblyInfo.cs
  10. +52 −32 Mite.Core/AnsiDatabaseRepository.cs
  11. +13 −9 Mite.Core/IDatabaseRepository.cs
  12. +8 −1 Mite.Core/{IMiteDatabase.cs → IMigrationTracker.cs}
  13. +33 −33 Mite.Core/Migration.cs
  14. +8 −0 Mite.Core/MigrationDirection.cs
  15. +23 −0 Mite.Core/MigrationException.cs
  16. +6 −8 Mite.Core/MigrationResult.cs
  17. +17 −37 Mite.Core/{MiteDatabase.cs → MigrationTracker.cs}
  18. +77 −42 Mite.Core/Migrator.cs
  19. +56 −54 Mite.Core/Mite.Core.csproj
  20. +5,903 −0 Mite.Installer/Mite.Installer.isl
  21. +37 −0 Mite.Installer/Mite.Installer.isproj
  22. +0 −740 Mite.Installer/Mite.Installer.vdproj
  23. BIN  Mite.Installer/Mite.Installer/Express/DVD-5/DiskImages/DISK1/0x0409.ini
  24. BIN  Mite.Installer/Mite.Installer/Express/DVD-5/DiskImages/DISK1/program files/Mite/MySql.Data.dll
  25. BIN  Mite.Installer/Mite.Installer/Express/DVD-5/DiskImages/DISK1/program files/Mite/Newtonsoft.Json.dll
  26. +3 −0  Mite.Installer/Mite.Installer/Express/DVD-5/DiskImages/DISK1/program files/Mite/mite.exe.config
  27. BIN  Mite.Installer/Mite.Installer/Express/DVD-5/LogFiles/7-28-2012 05-03-15 PM.txt
  28. BIN  Mite.Installer/Mite.Installer/Express/DVD-5/LogFiles/8-4-2012 03-44-10 PM.txt
  29. BIN  Mite.Installer/Mite.Installer/Express/DVD-5/LogFiles/8-4-2012 04-41-10 PM.txt
  30. BIN  Mite.Installer/Mite.Installer/Express/DVD-5/LogFiles/8-4-2012 05-00-10 PM.txt
  31. +421 −0 Mite.Installer/Mite.Installer/Express/DVD-5/Reports/7-28-2012 05-03-22 PM.htm
  32. +421 −0 Mite.Installer/Mite.Installer/Express/DVD-5/Reports/8-4-2012 03-44-16 PM.htm
  33. +421 −0 Mite.Installer/Mite.Installer/Express/DVD-5/Reports/8-4-2012 04-41-15 PM.htm
  34. +421 −0 Mite.Installer/Mite.Installer/Express/DVD-5/Reports/8-4-2012 05-00-16 PM.htm
  35. BIN  Mite.Installer/Mite.Installer/Express/SingleImage/LogFiles/7-28-2012 05-04-14 PM.txt
  36. BIN  Mite.Installer/Mite.Installer/Express/SingleImage/LogFiles/8-1-2012 09-17-33 PM.txt
  37. +421 −0 Mite.Installer/Mite.Installer/Express/SingleImage/Reports/7-28-2012 05-04-21 PM.htm
  38. +421 −0 Mite.Installer/Mite.Installer/Express/SingleImage/Reports/8-1-2012 09-17-39 PM.htm
  39. +14 −2 Mite.MsSql/MsSqlDatabaseRepository.cs
  40. +12 −3 Mite.MySql/MySqlDatabaseRepository.cs
  41. +11 −11 Mite.Test/MiteDatabaseTestFixture.cs
  42. +8 −0 Mite.Wpf/App.xaml
  43. +14 −0 Mite.Wpf/App.xaml.cs
  44. +8 −0 Mite.Wpf/DatabaseBrowser.xaml
  45. +23 −0 Mite.Wpf/DatabaseBrowser.xaml.cs
  46. +20 −0 Mite.Wpf/MainWindow.xaml
  47. +119 −0 Mite.Wpf/MainWindow.xaml.cs
  48. +150 −0 Mite.Wpf/Mite.Wpf.csproj
  49. +55 −0 Mite.Wpf/Properties/AssemblyInfo.cs
  50. +63 −0 Mite.Wpf/Properties/Resources.Designer.cs
  51. +117 −0 Mite.Wpf/Properties/Resources.resx
  52. +26 −0 Mite.Wpf/Properties/Settings.Designer.cs
  53. +7 −0 Mite.Wpf/Properties/Settings.settings
  54. +3 −0  Mite.Wpf/app.config
  55. +380 −205 Mite.sln
  56. +138 −129 Mite/Mite.Console.csproj
  57. +21 −0 Mite/MiteInstaller.cs
  58. +38 −81 Mite/Program.cs
  59. +34 −0 MsBuildTask/MiteEnsure.cs
  60. +30 −0 MsBuildTask/MiteUpdate.cs
  61. +75 −0 MsBuildTask/MsBuildTask.csproj
  62. +36 −0 MsBuildTask/Properties/AssemblyInfo.cs
  63. +2 −1  README.md
View
5 .gitignore
@@ -27,4 +27,7 @@ obj/
[Rr]elease*/
_ReSharper*/
[Tt]est[Rr]esult*
-Mite.Installation/Mite.Installation/*
+Mite.Installation/Mite.Installation/*
+Mite.Installer/Mite.Installer/Express/DVD-5/DiskImages/*
+Mite.Installer/Mite.Installer/Express/DVD-5/LogFiles/*
+Mite.Installer/Mite.Installer/Express/DVD-5/*
View
12 ExampleMsBuildTask/ExampleClass.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace ExampleMsBuildTask {
+ /// <summary>
+ /// Open up the Example MsBuildTask from a text editor to see the msbuild task configuration
+ /// </summary>
+ public class ExampleClass {
+ }
+}
View
55 ExampleMsBuildTask/ExampleMsBuildTask.csproj
@@ -0,0 +1,55 @@
+<?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)' == '' ">AnyCPU</Platform>
+ <ProductVersion>8.0.30703</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{E79F82AB-79A7-4B3D-9B64-98B409299ED3}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>ExampleMsBuildTask</RootNamespace>
+ <AssemblyName>ExampleMsBuildTask</AssemblyName>
+ <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <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|AnyCPU' ">
+ <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.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="ExampleClass.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+ <UsingTask TaskName="MsBuildTask.MiteEnsure" AssemblyFile="$(MSBuildProjectDirectory)\..\MsBuildTask\bin\Debug\MsBuildTask.dll" />
+ <UsingTask TaskName="MsBuildTask.MiteUpdate" AssemblyFile="$(MSBuildProjectDirectory)\..\MsBuildTask\bin\Debug\MsBuildTask.dll" />
+ <Target Name="BeforeBuild">
+ <MiteEnsure ScriptsDirectory="$(MSBuildProjectDirectory)\scripts" />
+ </Target>
+ <Target Name="AfterBuild">
+ <MiteUpdate ScriptsDirectory="$(MSBuildProjectDirectory)\scripts" />
+ </Target>
+</Project>
View
36 ExampleMsBuildTask/Properties/AssemblyInfo.cs
@@ -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("ExampleMsBuildTask")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("ExampleMsBuildTask")]
+[assembly: AssemblyCopyright("Copyright © 2012")]
+[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("f8d3765e-19c1-4f0f-9eaa-248886377fad")]
+
+// 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")]
View
8 ExampleMsBuildTask/scripts/2012-09-21T03-31-54Z.sql
@@ -0,0 +1,8 @@
+/* up */
+CREATE TABLE dbo.test
+ (
+ id int NOT NULL
+ ) ON [PRIMARY]
+GO
+/* down */
+drop table dbo.test
View
4 ExampleMsBuildTask/scripts/mite.config
@@ -0,0 +1,4 @@
+{
+ "repositoryName": "MsSqlDatabaseRepository",
+ "connectionString": "Data Source=.;Initial Catalog=mite;Persist Security Info=True;Trusted_Connection=yes"
+}
View
59 Mite.Builder/MigratorFactory.cs
@@ -0,0 +1,59 @@
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using Mite.Core;
+using Newtonsoft.Json.Linq;
+
+namespace Mite.Builder {
+ public static class MigratorFactory {
+ public static Migrator GetMigratorFromConfig(string config, string directoryPath) {
+ var databaseRepositories = InstancesOf<IDatabaseRepository>();
+ var options = JObject.Parse(config);
+ var repoName = options.Value<string>("repositoryName");
+ var connString = options.Value<string>("connectionString");
+
+ if (string.IsNullOrEmpty(repoName)) {
+ throw new Exception("Invalid Config - repositoryName is required.");
+ }
+ if (string.IsNullOrEmpty(connString)) {
+ throw new Exception("Invalid Config - connectionString is requied.");
+ }
+ object[] args = new object[]{connString, directoryPath};
+ foreach (var repoType in databaseRepositories)
+ {
+ if (repoName.ToLower() == repoType.Name.ToLower())
+ {
+ var dynamicRepo = (IDatabaseRepository)Activator.CreateInstance(repoType, BindingFlags.CreateInstance, null, args, null);
+
+ var miteDb = dynamicRepo.Create();
+ return new Migrator(miteDb, dynamicRepo);
+ }
+ }
+ throw new Exception("No database repositories match the name: " + repoName);
+ }
+
+ public static Migrator GetMigrator(string directoryName) {
+ var miteConfigPath = Path.Combine(directoryName, "mite.config");
+ if (File.Exists(miteConfigPath)) {
+ return GetMigratorFromConfig(File.ReadAllText(miteConfigPath), directoryName);
+ } else {
+ throw new FileNotFoundException("mite.config is not contained in the directory specified");
+ }
+ }
+
+ private static IEnumerable<Type> InstancesOf<T>()
+ {
+ var executingDirectory= Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
+ var files = Directory.GetFiles(executingDirectory, "*.dll", SearchOption.TopDirectoryOnly);
+ var type = typeof(T);
+ return files.Select(Assembly.LoadFrom).SelectMany(a => (from t in a.GetExportedTypes()
+ where t.IsClass
+ && type.IsAssignableFrom(t)
+ select t));
+ }
+ }
+}
View
63 Mite.Builder/Mite.Builder.csproj
@@ -0,0 +1,63 @@
+<?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)' == '' ">AnyCPU</Platform>
+ <ProductVersion>8.0.30703</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{F5F81613-1B52-46DA-8D7F-F9B3899A025E}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>Mite.Builder</RootNamespace>
+ <AssemblyName>Mite.Builder</AssemblyName>
+ <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <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|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="Newtonsoft.Json">
+ <HintPath>..\Libraries\Newtonsoft.Json.dll</HintPath>
+ </Reference>
+ <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.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="MigratorFactory.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\Mite.Core\Mite.Core.csproj">
+ <Project>{EEB7F868-CB07-4DB3-939A-2F342EACBA9F}</Project>
+ <Name>Mite.Core</Name>
+ </ProjectReference>
+ </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>
View
36 Mite.Builder/Properties/AssemblyInfo.cs
@@ -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("Mite.Builder")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Mite.Builder")]
+[assembly: AssemblyCopyright("Copyright © 2012")]
+[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("ae6863f3-6dfb-4c2a-9359-f7887baee7e1")]
+
+// 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")]
View
84 Mite.Core/AnsiDatabaseRepository.cs
@@ -13,7 +13,7 @@ public abstract class AnsiDatabaseRepository : IDatabaseRepository
protected string filePath;
protected string delimiter = @"\sGO\s";
-
+
public virtual void DropMigrationTable()
{
this.connection.Open();
@@ -26,12 +26,20 @@ public virtual void DropMigrationTable()
public abstract bool MigrationTableExists();
public abstract string GenerateSqlScript(bool includeData);
- public abstract MiteDatabase Init();
+ public abstract MigrationTracker Init();
public void Dispose()
{
connection.Dispose();
}
+
+
+ public IDbConnection Connection
+ {
+ get { return connection; }
+ set { connection = value; }
+ }
+
public virtual bool CheckConnection()
{
try
@@ -48,10 +56,12 @@ public virtual bool CheckConnection()
connection.Close();
}
}
- public virtual MiteDatabase Create()
+ public virtual MigrationTracker Create()
{
+ if (!DatabaseExists())
+ CreateDatabaseIfNotExists();
var hashes = new Dictionary<string, string>();
- //read all the migrations from the database and filesystem and create a MiteDatabase
+ //read all the migrations from the database and filesystem and create a MigrationTracker
//this.DatabaseExists() &&
if (this.MigrationTableExists())
{
@@ -67,12 +77,12 @@ public virtual MiteDatabase Create()
}
connection.Close();
}
- return new MiteDatabase(MigrationHelper.ReadFromDirectory(filePath).ToList(), hashes);
+ return new MigrationTracker(MigrationHelper.ReadFromDirectory(filePath).ToList(), hashes);
}
- public virtual MiteDatabase RecordMigration(Migration migration)
+ public virtual MigrationTracker RecordMigration(Migration migration)
{
if (!MigrationTableExists())
{
@@ -83,31 +93,25 @@ public virtual MiteDatabase RecordMigration(Migration migration)
cmd.ExecuteNonQuery();
connection.Close();
return Create();
- }
- public virtual void CreateDatabase()
- {
- using(var conn = GetConnWithoutDatabaseSpecified())
- {
- conn.Open();
- var cmd = conn.CreateCommand();
- cmd.CommandText = "create database " + connection.Database;
- cmd.ExecuteNonQuery();
- conn.Close();
- }
- }
+ }
+ /// <summary>
+ /// Create a database if it doesn't exists. Throw exception if the database already exists. Used to create a temporary database for verification
+ /// </summary>
+ public abstract void CreateDatabaseIfNotExists();
+
public virtual void DropDatabase()
{
using (var conn = GetConnWithoutDatabaseSpecified())
{
conn.Open();
var cmd = conn.CreateCommand();
- cmd.CommandText = "drop database " + connection.Database;
+ cmd.CommandText = "drop database " + this.DatabaseName;
cmd.ExecuteNonQuery();
conn.Close();
}
}
- public virtual MiteDatabase ExecuteUp(Migration migration)
+ public virtual MigrationTracker ExecuteUp(Migration migration)
{
if (!MigrationTableExists())
Init();
@@ -118,12 +122,14 @@ public virtual MiteDatabase ExecuteUp(Migration migration)
var statements = split.Split(migration.UpSql);
foreach (var sql in statements)
{
- var cmd = connection.CreateCommand();
- cmd.Transaction = trans;
- cmd.CommandText = sql;
- cmd.ExecuteNonQuery();
+ if (!string.IsNullOrEmpty(sql))
+ {
+ var cmd = connection.CreateCommand();
+ cmd.Transaction = trans;
+ cmd.CommandText = sql;
+ cmd.ExecuteNonQuery();
+ }
}
-
IDbCommand migrationCmd = GetMigrationCmd(migration);
migrationCmd.Transaction = trans;
migrationCmd.ExecuteNonQuery();
@@ -136,7 +142,7 @@ public virtual MiteDatabase ExecuteUp(Migration migration)
protected abstract IDbCommand GetMigrationCmd(Migration migration);
- public virtual MiteDatabase ExecuteDown(Migration migration)
+ public virtual MigrationTracker ExecuteDown(Migration migration)
{
if (!MigrationTableExists())
Init();
@@ -146,10 +152,13 @@ public virtual MiteDatabase ExecuteDown(Migration migration)
var split = new Regex(delimiter, RegexOptions.Multiline);
foreach (var sql in split.Split(migration.DownSql))
{
- var cmd = connection.CreateCommand();
- cmd.Transaction = trans;
- cmd.CommandText = sql;
- cmd.ExecuteNonQuery();
+ if (!string.IsNullOrEmpty(sql))
+ {
+ var cmd = connection.CreateCommand();
+ cmd.Transaction = trans;
+ cmd.CommandText = sql;
+ cmd.ExecuteNonQuery();
+ }
}
var migrationCmd = connection.CreateCommand();
@@ -166,7 +175,18 @@ public virtual MiteDatabase ExecuteDown(Migration migration)
return Create();
}
- protected abstract IDbConnection GetConnWithoutDatabaseSpecified();
+ public string DatabaseName
+ {
+ get { return connection.Database; }
+ set
+ {
+ connection.Open();
+ connection.ChangeDatabase(value);
+ connection.Close();
+ }
+ }
+
+ public abstract IDbConnection GetConnWithoutDatabaseSpecified();
public virtual bool DatabaseExists()
{
@@ -175,7 +195,7 @@ public virtual bool DatabaseExists()
{
conn.Open();
var cmd = conn.CreateCommand();
- cmd.CommandText = "use " + connection.Database;
+ cmd.CommandText = "use " + DatabaseName;
try
{
cmd.ExecuteNonQuery();
View
22 Mite.Core/IDatabaseRepository.cs
@@ -1,19 +1,22 @@
-using System;
-
+using System;
+using System.Data;
+
namespace Mite.Core
{
public interface IDatabaseRepository :IDisposable
{
- MiteDatabase Init();
- MiteDatabase Create();
+ MigrationTracker Init();
+ MigrationTracker Create();
bool DatabaseExists();
- void CreateDatabase();
+ void CreateDatabaseIfNotExists();
/// <summary>
/// This method executes the sql for the migration and records the record in the migrations table (it is not responsible for whether or not to execute the migration).
/// </summary>
/// <param name="migration"></param>
- MiteDatabase ExecuteUp(Migration migration);
- MiteDatabase ExecuteDown(Migration migration);
+ MigrationTracker ExecuteUp(Migration migration);
+ MigrationTracker ExecuteDown(Migration migration);
+ string DatabaseName { get; set; }
+ IDbConnection Connection { get; set; }
bool CheckConnection();
void DropMigrationTable();
bool MigrationTableExists();
@@ -24,8 +27,9 @@ public interface IDatabaseRepository :IDisposable
/// </summary>
/// <param name="migration"></param>
/// <returns></returns>
- MiteDatabase RecordMigration(Migration migration);
+ MigrationTracker RecordMigration(Migration migration);
- void DropDatabase();
+ void DropDatabase();
+ IDbConnection GetConnWithoutDatabaseSpecified();
}
}
View
9 Mite.Core/IMiteDatabase.cs → Mite.Core/IMigrationTracker.cs
@@ -4,14 +4,21 @@
namespace Mite.Core
{
- public interface IMiteDatabase
+ /// <summary>
+ /// Determines state of the database given provided migrations
+ /// </summary>
+ public interface IMigrationTracker
{
IEnumerable<Migration> MigrationsSince(DateTime dateTime);
IEnumerable<Migration> UnexcutedMigrations { get; }
bool IsHashMismatch();
bool IsMigrationGap();
bool IsValidState();
+ bool CanGoUp { get; }
+ bool CanGoDown { get; }
+
Migration LastValidMigration { get; }
+ IEnumerable<Migration> Migrations { get; }
IEnumerable<Migration> InvalidMigrations();
string Version { get; }
IEnumerable<Migration> ExecutedMigrations { get; }
View
66 Mite.Core/Migration.cs
@@ -1,34 +1,34 @@
-using System;
-using System.Security.Cryptography;
-using System.Text;
-
-namespace Mite.Core
-{
- public class Migration : IComparable
- {
- private readonly string version;
- private readonly string upSql;
- private readonly string downSql;
- private readonly string hash;
-
- public Migration(string version, string upSql, string downSql)
- {
- this.version = version;
- this.upSql = upSql;
- this.downSql = downSql;
- var crypto = new SHA1CryptoServiceProvider();
- this.hash = Convert.ToBase64String(crypto.ComputeHash(Encoding.UTF8.GetBytes(upSql + downSql)));
- }
- public string Hash { get { return hash; } }
- public string Version { get { return version; } }
- public string UpSql { get { return upSql; } }
- public string DownSql { get { return downSql; } }
- public int CompareTo(object obj)
- {
- var comparable = (Migration) obj;
- if (comparable.Hash == this.Hash)
- return 0;
- return (comparable).Version.CompareTo(this.Version); //string comparison works fine for ISO8611
- }
- }
+using System;
+using System.Security.Cryptography;
+using System.Text;
+
+namespace Mite.Core
+{
+ public class Migration : IComparable
+ {
+ private readonly string version;
+ private readonly string upSql;
+ private readonly string downSql;
+ private readonly string hash;
+
+ public Migration(string version, string upSql, string downSql)
+ {
+ this.version = version;
+ this.upSql = upSql;
+ this.downSql = downSql;
+ var crypto = new SHA1CryptoServiceProvider();
+ this.hash = Convert.ToBase64String(crypto.ComputeHash(Encoding.UTF8.GetBytes(upSql + downSql)));
+ }
+ public string Hash { get { return hash; } }
+ public string Version { get { return version; } }
+ public string UpSql { get { return upSql; } }
+ public string DownSql { get { return downSql; } }
+ public int CompareTo(object obj)
+ {
+ var comparable = (Migration) obj;
+ if (comparable.Hash == this.Hash)
+ return 0;
+ return (comparable).Version.CompareTo(this.Version); //string comparison works fine for ISO8611
+ }
+ }
}
View
8 Mite.Core/MigrationDirection.cs
@@ -0,0 +1,8 @@
+namespace Mite.Core
+{
+ public enum MigrationDirection
+ {
+ Up,
+ Down
+ }
+}
View
23 Mite.Core/MigrationException.cs
@@ -0,0 +1,23 @@
+using System;
+
+namespace Mite.Core
+{
+ [Serializable]
+ public class MigrationException: Exception
+ {
+ private readonly Migration migration;
+ private readonly MigrationDirection direction;
+ private readonly Exception ex;
+
+ public MigrationException(Migration migration, MigrationDirection direction, Exception ex)
+ {
+ this.migration = migration;
+ this.direction = direction;
+ this.ex = ex;
+ }
+
+ public Exception Exception { get { return ex; } }
+ public Migration Migration { get { return migration; } }
+ public MigrationDirection Direction { get { return direction; } }
+ }
+}
View
14 Mite.Core/MigrationResult.cs
@@ -1,33 +1,31 @@
namespace Mite.Core
{
+ /// <summary>
+ /// Successful migration is assumed since MigrationException is thrown in the event of a failure
+ /// </summary>
public class MigrationResult
{
- private readonly bool success;
private readonly string message;
private readonly string priorToMigration;
private readonly string afterMigration;
- public MigrationResult(bool success, string message, string priorToMigration, string afterMigration)
+ public MigrationResult(string message, string priorToMigration, string afterMigration)
{
- this.success = success;
this.message = message;
this.priorToMigration = priorToMigration;
this.afterMigration = afterMigration;
}
- public MigrationResult(bool success, string message)
+ public MigrationResult( string message)
{
- this.success = success;
this.message = message;
}
- public MigrationResult(bool success, string priorToMigration, string afterMigration)
+ public MigrationResult(string priorToMigration, string afterMigration)
{
- this.success = success;
this.priorToMigration = priorToMigration;
this.afterMigration = afterMigration;
this.message = string.Format("Migration from {0} to {1} successful", priorToMigration, afterMigration);
}
- public bool Success { get { return success; } }
public string Message { get { return message; } }
public string PriorToMigration { get { return priorToMigration; } }
public string AfterMigration { get { return afterMigration; } }
View
54 Mite.Core/MiteDatabase.cs → Mite.Core/MigrationTracker.cs
@@ -8,19 +8,19 @@ namespace Mite.Core
/// <summary>
/// Item which computes which scripts have been run and not run
/// </summary>
- public class MiteDatabase : IMiteDatabase
+ public class MigrationTracker : IMigrationTracker
{
private readonly IList<Migration> migrations;
private readonly IDictionary<string, string> hashes;
- public MiteDatabase(IEnumerable<Migration> migrations, IDictionary<string, string> hashes)
+ public MigrationTracker(IEnumerable<Migration> migrations, IDictionary<string, string> hashes)
{
this.migrations = migrations.OrderBy(x => x.Version).ToList();
this.hashes = hashes ?? new Dictionary<string, string>();
}
public IEnumerable<Migration> MigrationsSince(DateTime dateTime)
{
- return UnexcutedMigrations.Where(x => x.Version.CompareTo(DateTimeHelper.ToIso(dateTime)) > 0);
+ return UnexcutedMigrations.Where(x => x.Version.CompareTo(dateTime.ToIso()) > 0);
}
public IEnumerable<Migration> UnexcutedMigrations
{
@@ -28,25 +28,12 @@ public IEnumerable<Migration> UnexcutedMigrations
}
public bool IsHashMismatch()
{
-
- foreach (var mig in migrations)
- {
- if (hashes.ContainsKey(mig.Version))
- {
- if (mig.Hash != hashes[mig.Version])
- return true;
- }
- }
- return false;
+ return migrations.Where(mig => hashes.ContainsKey(mig.Version)).Any(mig => mig.Hash != hashes[mig.Version]);
}
+
public IDictionary<string , Migration> GetMigrationDictionary()
{
- var dict = new Dictionary<string, Migration>();
- foreach (var mig in this.migrations)
- {
- dict.Add(mig.Version, mig);
- }
- return dict;
+ return migrations.ToDictionary(mig => mig.Version);
}
public bool IsMigrationGap()
{
@@ -54,20 +41,16 @@ public bool IsMigrationGap()
if (latestDatabaseVersion == null)
return false;
var itemsToTest =migrations.Where(x => x.Version.CompareTo(latestDatabaseVersion) < 0).OrderBy(x => x.Version);
- foreach(var mig in itemsToTest)
- {
- if (!hashes.Keys.Contains(mig.Version))
- {
- return true;
- }
- }
- return false;
+ return itemsToTest.Any(mig => !hashes.Keys.Contains(mig.Version));
}
public bool IsValidState()
{
return !IsMigrationGap() && !IsHashMismatch();
- }
+ }
+
+ public bool CanGoUp { get { return IsValidState() && this.UnexcutedMigrations.Count() > 0; } }
+ public bool CanGoDown { get { return IsValidState() && this.UnexcutedMigrations.Count() != this.migrations.Count(); } }
public Migration LastValidMigration
{
@@ -90,17 +73,14 @@ public Migration LastValidMigration
}
}
+ public IEnumerable<Migration> Migrations
+ {
+ get { return this.migrations; }
+ }
+
public IEnumerable<Migration> InvalidMigrations()
{
- foreach (var mig in migrations)
- {
- if (hashes.ContainsKey(mig.Version))
- {
- var hash = hashes[mig.Version];
- if (hash != mig.Hash)
- yield return mig;
- }
- }
+ return from mig in migrations where hashes.ContainsKey(mig.Version) let hash = hashes[mig.Version] where hash != mig.Hash select mig;
}
public string Version
View
119 Mite.Core/Migrator.cs
@@ -1,32 +1,38 @@
using System;
-using System.Collections.Generic;
+using System.Collections.Generic;
+using System.Data;
using System.Linq;
namespace Mite.Core
{
public class Migrator
- {
- private IMiteDatabase database;
+ {
+ private const string verifyDatabaseName = "MiteVerify";
+ private IMigrationTracker tracker;
private readonly IDatabaseRepository databaseRepository;
- public Migrator(IMiteDatabase database, IDatabaseRepository databaseRepository)
+ public Migrator(IMigrationTracker tracker, IDatabaseRepository databaseRepository)
{
- this.database = database;
+ this.tracker = tracker;
this.databaseRepository = databaseRepository;
- }
+ }
+ public IMigrationTracker Tracker { get { return tracker; } }
+ public IDatabaseRepository DatabaseRepository { get { return databaseRepository; } }
+ public IDbConnection Connection { get { return databaseRepository.Connection; } }
+
public MigrationResult StepUp()
{
- if (database.IsValidState())
+ if (tracker.IsValidState())
{
- var version = this.database.Version;
- var firstMigration = this.database.UnexcutedMigrations.FirstOrDefault();
+ var version = tracker.Version;
+ var firstMigration = tracker.UnexcutedMigrations.FirstOrDefault();
if (firstMigration == null)
{
- return new MigrationResult(true, "No unexecuted migrations.", version, version);
+ return new MigrationResult( "No unexecuted migrations.", version, version);
}
databaseRepository.ExecuteUp(firstMigration);
- return new MigrationResult(true, version, firstMigration.Version);
+ return new MigrationResult( version, firstMigration.Version);
}
else
{
@@ -35,22 +41,23 @@ public MigrationResult StepUp()
}
public MigrationResult StepDown()
{
- if (!database.IsValidState())
+ if (!tracker.IsValidState())
throw new Exception("Database must be in a valid state before executing a StepDown");
- var key = this.database.Version;
- IDictionary<string, Migration> migrationDictionary = this.database.GetMigrationDictionary();
+ var key = tracker.Version;
+ IDictionary<string, Migration> migrationDictionary = tracker.GetMigrationDictionary();
var migration = migrationDictionary[key];
var resultingVersion =
migrationDictionary.Keys.Where(x => x.CompareTo(key) < 0).OrderByDescending(x => x).FirstOrDefault();
var resultingMigration = migrationDictionary[resultingVersion];
if (migration == null)
{
- return new MigrationResult(true, "No unexecuted migrations.", migration.Version, migration.Version);
+ return new MigrationResult( "No unexecuted migrations.", Tracker.Version, Tracker.Version);
}
databaseRepository.ExecuteDown(migration);
- return new MigrationResult(true, key, resultingMigration.Version);
- }
+ return new MigrationResult( key, resultingMigration.Version);
+ }
+
public void FromScratch()
{
@@ -59,56 +66,84 @@ public void FromScratch()
{
databaseRepository.DropDatabase();
}
- databaseRepository.CreateDatabase();
- database =databaseRepository.Init();
- foreach (var mig in database.UnexcutedMigrations)
+ databaseRepository.CreateDatabaseIfNotExists();
+ tracker =databaseRepository.Init();
+ foreach (var mig in tracker.UnexcutedMigrations)
{
databaseRepository.ExecuteUp(mig);
}
+ }
+ /// <summary>
+ /// In a temporary database migrate all the way up then back down
+ /// </summary>
+ /// <returns></returns>
+ public bool Verify()
+ {
+ var storeDbName = databaseRepository.Connection.Database;
+ //drop and recreate MiteVerify
+ databaseRepository.Connection.Open();
+ databaseRepository.Connection.ChangeDatabase(verifyDatabaseName);
+ databaseRepository.Connection.Close();
+ databaseRepository.DropDatabase();
+ databaseRepository.CreateDatabaseIfNotExists();
+ var verifier = new Migrator(this.tracker, databaseRepository);
+ try
+ {
+ var cnt = verifier.Tracker.Migrations.Count();
+ for (var i = 0; i < cnt; i++)
+ verifier.StepUp();
+ for (var i = 0; i < cnt; i++)
+ verifier.StepDown();
+ return true;
+ }finally
+ {
+ databaseRepository.Connection.ChangeDatabase(storeDbName);
+ }
}
+
public MigrationResult SafeResolution()
{
- var priorVersion = database.Version;
- var lastValidMigrationVersion = database.LastValidMigration == null ? "" : database.LastValidMigration.Version;
+ var priorVersion = tracker.Version;
+ var lastValidMigrationVersion = tracker.LastValidMigration == null ? "" : tracker.LastValidMigration.Version;
MigrateTo(lastValidMigrationVersion);
- database = databaseRepository.Create();
+ tracker = databaseRepository.Create();
Update();
- database = databaseRepository.Create();
- return new MigrationResult(true,priorVersion, database.Version );
+ tracker = databaseRepository.Create();
+ return new MigrationResult(priorVersion, tracker.Version );
}
public MigrationResult DirtyResolution()
{
//run all non-executed transactions
- var version = database.Version;
- foreach (var mig in database.UnexcutedMigrations)
+ var version = tracker.Version;
+ foreach (var mig in tracker.UnexcutedMigrations)
{
databaseRepository.ExecuteUp(mig);
}
- database = databaseRepository.Create();
- return new MigrationResult(true, version, database.Version);
+ tracker = databaseRepository.Create();
+ return new MigrationResult( version, tracker.Version);
}
public MigrationResult Update()
{
- if (!database.IsValidState())
+ if (!tracker.IsValidState())
throw new Exception("Database must be in a valid state in order to update it.");
if (!databaseRepository.DatabaseExists())
databaseRepository.Init();
- var version = database.Version;
- foreach (var mig in database.UnexcutedMigrations)
+ var version = tracker.Version;
+ foreach (var mig in tracker.UnexcutedMigrations)
{
databaseRepository.ExecuteUp(mig);
}
- database = databaseRepository.Create();
- return new MigrationResult(true, "", version, database.Version);
+ tracker = databaseRepository.Create();
+ return new MigrationResult( "", version, tracker.Version);
}
public MigrationResult MigrateTo(string destinationVersion)
{
- string originalVersion = database.Version;
- bool isUp = database.Version.CompareTo(destinationVersion) < 0;
- if (isUp && !database.IsValidState())
+ string originalVersion = tracker.Version;
+ bool isUp = tracker.Version.CompareTo(destinationVersion) < 0;
+ if (isUp && !tracker.IsValidState())
throw new Exception(
"Database must be in a valid state in order to use migrate in the up direction. Try mite update instead.");
if (!databaseRepository.MigrationTableExists())
@@ -116,7 +151,7 @@ public MigrationResult MigrateTo(string destinationVersion)
if (isUp)
{
var migrationsToExecute =
- database.UnexcutedMigrations.Where(x => x.Version.CompareTo(destinationVersion) <= 0);
+ tracker.UnexcutedMigrations.Where(x => x.Version.CompareTo(destinationVersion) <= 0);
foreach (var mig in migrationsToExecute)
{
databaseRepository.ExecuteUp(mig);
@@ -125,15 +160,15 @@ public MigrationResult MigrateTo(string destinationVersion)
else
{
var migrationsToExecute =
- database.ExecutedMigrations.Where(x => x.Version.CompareTo(destinationVersion) > 0);
+ tracker.ExecutedMigrations.Where(x => x.Version.CompareTo(destinationVersion) > 0);
foreach (var mig in migrationsToExecute)
{
databaseRepository.ExecuteDown(mig);
}
}
- this.database = databaseRepository.Create();
- return new MigrationResult(true, "", originalVersion, database.Version);
+ tracker = databaseRepository.Create();
+ return new MigrationResult( "", originalVersion, tracker.Version);
}
- }
+ }
}
View
110 Mite.Core/Mite.Core.csproj
@@ -1,61 +1,63 @@
-<?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)' == '' ">AnyCPU</Platform>
- <ProductVersion>8.0.30703</ProductVersion>
- <SchemaVersion>2.0</SchemaVersion>
- <ProjectGuid>{EEB7F868-CB07-4DB3-939A-2F342EACBA9F}</ProjectGuid>
- <OutputType>Library</OutputType>
- <AppDesignerFolder>Properties</AppDesignerFolder>
- <RootNamespace>Mite.Core</RootNamespace>
- <AssemblyName>Mite.Core</AssemblyName>
- <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
- <FileAlignment>512</FileAlignment>
- <TargetFrameworkProfile />
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
- <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|AnyCPU' ">
- <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.Xml.Linq" />
- <Reference Include="System.Data.DataSetExtensions" />
- <Reference Include="System.Data" />
- <Reference Include="System.Xml" />
- </ItemGroup>
- <ItemGroup>
- <Compile Include="AnsiDatabaseRepository.cs" />
- <Compile Include="DateTimeHelper.cs" />
- <Compile Include="IMiteDatabase.cs" />
- <Compile Include="IDatabaseRepository.cs" />
- <Compile Include="Migration.cs" />
- <Compile Include="MigrationHelper.cs" />
- <Compile Include="MigrationResult.cs" />
- <Compile Include="Migrator.cs" />
- <Compile Include="MiteDatabase.cs" />
- <Compile Include="Properties\AssemblyInfo.cs" />
- </ItemGroup>
- <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+<?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)' == '' ">AnyCPU</Platform>
+ <ProductVersion>8.0.30703</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{EEB7F868-CB07-4DB3-939A-2F342EACBA9F}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>Mite.Core</RootNamespace>
+ <AssemblyName>Mite.Core</AssemblyName>
+ <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ <TargetFrameworkProfile />
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <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|AnyCPU' ">
+ <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.Xml.Linq" />
+ <Reference Include="System.Data.DataSetExtensions" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="AnsiDatabaseRepository.cs" />
+ <Compile Include="DateTimeHelper.cs" />
+ <Compile Include="IMigrationTracker.cs" />
+ <Compile Include="IDatabaseRepository.cs" />
+ <Compile Include="Migration.cs" />
+ <Compile Include="MigrationDirection.cs" />
+ <Compile Include="MigrationHelper.cs" />
+ <Compile Include="MigrationResult.cs" />
+ <Compile Include="Migrator.cs" />
+ <Compile Include="MigrationTracker.cs" />
+ <Compile Include="MigrationException.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ </ItemGroup>
+ <Import Project="$(MSBuildBinPath)\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>
View
5,903 Mite.Installer/Mite.Installer.isl
5,903 additions, 0 deletions not shown
View
37 Mite.Installer/Mite.Installer.isproj
@@ -0,0 +1,37 @@
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
+ <PropertyGroup>
+ <!-- Select a Product Configuration -->
+ <InstallShieldProductConfiguration>Express</InstallShieldProductConfiguration>
+ <!-- Select a Visual Studio Configuration / InstallShield Release -->
+ <Configuration>Debug</Configuration>
+ <InstallShieldRelease>$(Configuration)</InstallShieldRelease>
+ </PropertyGroup>
+ <ItemGroup>
+ <!-- The InstallShieldProject item selects the project to build -->
+ <InstallShieldProject Include="$(MSBuildProjectDirectory)\$(MSBuildProjectName).isl"/>
+ <!-- The InstallShieldReleaseFlags sets Release Flags -->
+ <!--<InstallShieldReleaseFlags Include=""/>-->
+ <!-- The InstallShieldMergeModulePath specifies what directories are
+ searched for Merge Modules -->
+ <!--<InstallShieldMergeModulePath Include=""/>-->
+ </ItemGroup>
+ <ItemGroup>
+ <!-- The ProjectReference items refer to any Visual Studio solutions you want to automatically probe for Project Output Groups. -->
+ </ItemGroup>
+ <ItemGroup>
+ <!-- The TaggedOutputs items allow you to explicitly add extra files to output groups. Each item must include both Name and OutputGroup, as well as TargetPath metadata values. -->
+ <!--<TaggedOutputs Include="C:\My Test Exe.exe">
+ <Name>My Test Project</Name>
+ <OutputGroup>Primary output</OutputGroup>
+ <TargetPath>My Test Exe.exe</TargetPath>
+ </TaggedOutputs> -->
+ </ItemGroup>
+ <Import Project="$(MSBuildExtensionsPath32)\InstallShield\2011Limited\InstallShield.targets"/>
+ <ItemGroup>
+ <ProjectReference Include="..\Mite\Mite.Console.csproj">
+ <Name>Mite.Console</Name>
+ <Project>{0D646057-57A0-4C3A-BC8C-96840C9EE9F2}</Project>
+ </ProjectReference>
+ </ItemGroup>
+
+ </Project>
View
740 Mite.Installer/Mite.Installer.vdproj
@@ -1,740 +0,0 @@
-"DeployProject"
-{
-"VSVersion" = "3:800"
-"ProjectType" = "8:{978C614F-708E-4E1A-B201-565925725DBA}"
-"IsWebType" = "8:FALSE"
-"ProjectName" = "8:Mite.Installer"
-"LanguageId" = "3:1033"
-"CodePage" = "3:1252"
-"UILanguageId" = "3:1033"
-"SccProjectName" = "8:"
-"SccLocalPath" = "8:"
-"SccAuxPath" = "8:"
-"SccProvider" = "8:"
- "Hierarchy"
- {
- "Entry"
- {
- "MsmKey" = "8:_C2FC19CDE3CA8A5ECBA8553708E91B58"
- "OwnerKey" = "8:_F5A5333AE8294663AFE66C9CE875BACE"
- "MsmSig" = "8:_UNDEFINED"
- }
- "Entry"
- {
- "MsmKey" = "8:_F5A5333AE8294663AFE66C9CE875BACE"
- "OwnerKey" = "8:_UNDEFINED"
- "MsmSig" = "8:_UNDEFINED"
- }
- "Entry"
- {
- "MsmKey" = "8:_UNDEFINED"
- "OwnerKey" = "8:_C2FC19CDE3CA8A5ECBA8553708E91B58"
- "MsmSig" = "8:_UNDEFINED"
- }
- "Entry"
- {
- "MsmKey" = "8:_UNDEFINED"
- "OwnerKey" = "8:_F5A5333AE8294663AFE66C9CE875BACE"
- "MsmSig" = "8:_UNDEFINED"
- }
- }
- "Configurations"
- {
- "Debug"
- {
- "DisplayName" = "8:Debug"
- "IsDebugOnly" = "11:TRUE"
- "IsReleaseOnly" = "11:FALSE"
- "OutputFilename" = "8:Debug\\Mite.Installer.msi"
- "PackageFilesAs" = "3:2"
- "PackageFileSize" = "3:-2147483648"
- "CabType" = "3:1"
- "Compression" = "3:2"
- "SignOutput" = "11:FALSE"
- "CertificateFile" = "8:"
- "PrivateKeyFile" = "8:"
- "TimeStampServer" = "8:"
- "InstallerBootstrapper" = "3:2"
- }
- "Release"
- {
- "DisplayName" = "8:Release"
- "IsDebugOnly" = "11:FALSE"
- "IsReleaseOnly" = "11:TRUE"
- "OutputFilename" = "8:Release\\Mite.Installer.msi"
- "PackageFilesAs" = "3:2"
- "PackageFileSize" = "3:-2147483648"
- "CabType" = "3:1"
- "Compression" = "3:2"
- "SignOutput" = "11:FALSE"
- "CertificateFile" = "8:"
- "PrivateKeyFile" = "8:"
- "TimeStampServer" = "8:"
- "InstallerBootstrapper" = "3:2"
- }
- }
- "Deployable"
- {
- "CustomAction"
- {
- }
- "DefaultFeature"
- {
- "Name" = "8:DefaultFeature"
- "Title" = "8:"
- "Description" = "8:"
- }
- "ExternalPersistence"
- {
- "LaunchCondition"
- {
- "{A06ECF26-33A3-4562-8140-9B0E340D4F24}:_5EC7CCE828D44B60BD0734F1237E758A"
- {
- "Name" = "8:.NET Framework"
- "Message" = "8:[VSDNETMSG]"
- "FrameworkVersion" = "8:.NETFramework,Version=v4.0,Profile=Client"
- "AllowLaterVersions" = "11:FALSE"
- "InstallUrl" = "8:http://go.microsoft.com/fwlink/?LinkId=131000"
- }
- }
- }
- "File"
- {
- "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_C2FC19CDE3CA8A5ECBA8553708E91B58"
- {
- "AssemblyRegister" = "3:1"
- "AssemblyIsInGAC" = "11:FALSE"
- "AssemblyAsmDisplayName" = "8:Mite.Core, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"
- "ScatterAssemblies"
- {
- "_C2FC19CDE3CA8A5ECBA8553708E91B58"
- {
- "Name" = "8:Mite.Core.dll"
- "Attributes" = "3:512"
- }
- }
- "SourcePath" = "8:Mite.Core.dll"
- "TargetName" = "8:"
- "Tag" = "8:"
- "Folder" = "8:_BA75B84E8A71446E9CAA82F3E496DD24"
- "Condition" = "8:"
- "Transitive" = "11:FALSE"
- "Vital" = "11:TRUE"
- "ReadOnly" = "11:FALSE"
- "Hidden" = "11:FALSE"
- "System" = "11:FALSE"
- "Permanent" = "11:FALSE"
- "SharedLegacy" = "11:FALSE"
- "PackageAs" = "3:1"
- "Register" = "3:1"
- "Exclude" = "11:FALSE"
- "IsDependency" = "11:TRUE"
- "IsolateTo" = "8:"
- }
- }
- "FileType"
- {
- }
- "Folder"
- {
- "{1525181F-901A-416C-8A58-119130FE478E}:_4724099DD002405AAEF7E8D30B9D9CF8"
- {
- "Name" = "8:#1919"
- "AlwaysCreate" = "11:FALSE"
- "Condition" = "8:"
- "Transitive" = "11:FALSE"
- "Property" = "8:ProgramMenuFolder"
- "Folders"
- {
- }
- }
- "{1525181F-901A-416C-8A58-119130FE478E}:_68ED463469A3400ABDA9FC605FCC5BD7"
- {
- "Name" = "8:#1916"
- "AlwaysCreate" = "11:FALSE"
- "Condition" = "8:"
- "Transitive" = "11:FALSE"
- "Property" = "8:DesktopFolder"
- "Folders"
- {
- }
- }
- "{3C67513D-01DD-4637-8A68-80971EB9504F}:_BA75B84E8A71446E9CAA82F3E496DD24"
- {
- "DefaultLocation" = "8:[ProgramFiles64Folder][Manufacturer]\\[ProductName]"
- "Name" = "8:#1925"
- "AlwaysCreate" = "11:FALSE"
- "Condition" = "8:"
- "Transitive" = "11:FALSE"
- "Property" = "8:TARGETDIR"
- "Folders"
- {
- }
- }
- }
- "LaunchCondition"
- {
- }
- "Locator"
- {
- }
- "MsiBootstrapper"
- {
- "LangId" = "3:1033"
- "RequiresElevation" = "11:FALSE"
- }
- "Product"
- {
- "Name" = "8:Microsoft Visual Studio"
- "ProductName" = "8:Mite Migrations"
- "ProductCode" = "8:{E35622E8-FE56-4503-B4E5-7E11AC203B61}"
- "PackageCode" = "8:{8D035C66-91BA-4370-816D-40DAC25803EC}"
- "UpgradeCode" = "8:{3BAC1148-D317-41B4-8A91-14AD02708B9A}"
- "AspNetVersion" = "8:4.0.30319.0"
- "RestartWWWService" = "11:FALSE"
- "RemovePreviousVersions" = "11:TRUE"
- "DetectNewerInstalledVersion" = "11:TRUE"
- "InstallAllUsers" = "11:FALSE"
- "ProductVersion" = "8:1.0.2"
- "Manufacturer" = "8:Whiteboard-IT"
- "ARPHELPTELEPHONE" = "8:"
- "ARPHELPLINK" = "8:"
- "Title" = "8:Mite"
- "Subject" = "8:"
- "ARPCONTACT" = "8:Martin Murphy"
- "Keywords" = "8:"
- "ARPCOMMENTS" = "8:"
- "ARPURLINFOABOUT" = "8:"
- "ARPPRODUCTICON" = "8:"
- "ARPIconIndex" = "3:0"
- "SearchPath" = "8:"
- "UseSystemSearchPath" = "11:TRUE"
- "TargetPlatform" = "3:1"
- "PreBuildEvent" = "8:"
- "PostBuildEvent" = "8:"
- "RunPostBuildEvent" = "3:0"
- }
- "Registry"
- {
- "HKLM"
- {
- "Keys"
- {
- "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_B4FFE39F1C2E4C97A5E4616198D88D37"
- {
- "Name" = "8:Software"
- "Condition" = "8:"
- "AlwaysCreate" = "11:FALSE"
- "DeleteAtUninstall" = "11:FALSE"
- "Transitive" = "11:FALSE"
- "Keys"
- {
- "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_10945C7B12744A8D845C0A0646F262DF"
- {
- "Name" = "8:[Manufacturer]"
- "Condition" = "8:"
- "AlwaysCreate" = "11:FALSE"
- "DeleteAtUninstall" = "11:FALSE"
- "Transitive" = "11:FALSE"
- "Keys"
- {
- }
- "Values"
- {
- }
- }
- }
- "Values"
- {
- }
- }
- }
- }
- "HKCU"
- {
- "Keys"
- {
- "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_A2B2B05BD7A249D6841F32DF49908621"
- {
- "Name" = "8:Software"
- "Condition" = "8:"
- "AlwaysCreate" = "11:FALSE"
- "DeleteAtUninstall" = "11:FALSE"
- "Transitive" = "11:FALSE"
- "Keys"
- {
- "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_D464BFA591E04B39B150D4055C697241"
- {
- "Name" = "8:[Manufacturer]"
- "Condition" = "8:"
- "AlwaysCreate" = "11:FALSE"
- "DeleteAtUninstall" = "11:FALSE"
- "Transitive" = "11:FALSE"
- "Keys"
- {
- }
- "Values"
- {
- }
- }
- }
- "Values"
- {
- }
- }
- }
- }
- "HKCR"
- {
- "Keys"
- {
- }
- }
- "HKU"
- {
- "Keys"
- {
- }
- }
- "HKPU"
- {
- "Keys"
- {
- }
- }
- }
- "Sequences"
- {
- }
- "Shortcut"
- {
- }
- "UserInterface"
- {
- "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_04B01BE2D91643B9809FB1A66B977172"
- {
- "Name" = "8:#1902"
- "Sequence" = "3:2"
- "Attributes" = "3:3"
- "Dialogs"
- {
- "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_FA2DBC29B3FF42B1BD3311A9FF9ACD73"
- {
- "Sequence" = "3:100"
- "DisplayName" = "8:Finished"
- "UseDynamicProperties" = "11:TRUE"
- "IsDependency" = "11:FALSE"
- "SourcePath" = "8:<VsdDialogDir>\\VsdAdminFinishedDlg.wid"
- "Properties"
- {
- "BannerBitmap"
- {
- "Name" = "8:BannerBitmap"
- "DisplayName" = "8:#1001"
- "Description" = "8:#1101"
- "Type" = "3:8"
- "ContextData" = "8:Bitmap"
- "Attributes" = "3:4"
- "Setting" = "3:1"
- "UsePlugInResources" = "11:TRUE"
- }
- }
- }
- }
- }
- "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_052709D752FD49C79695B501C2404F5F"
- {
- "Name" = "8:#1900"
- "Sequence" = "3:1"
- "Attributes" = "3:1"
- "Dialogs"
- {
- "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_2999F4758DB24413B75D966C6D4BF044"
- {
- "Sequence" = "3:100"
- "DisplayName" = "8:Welcome"
- "UseDynamicProperties" = "11:TRUE"
- "IsDependency" = "11:FALSE"
- "SourcePath" = "8:<VsdDialogDir>\\VsdWelcomeDlg.wid"
- "Properties"
- {
- "BannerBitmap"
- {
- "Name" = "8:BannerBitmap"
- "DisplayName" = "8:#1001"
- "Description" = "8:#1101"
- "Type" = "3:8"
- "ContextData" = "8:Bitmap"
- "Attributes" = "3:4"
- "Setting" = "3:1"
- "UsePlugInResources" = "11:TRUE"
- }
- "CopyrightWarning"
- {
- "Name" = "8:CopyrightWarning"
- "DisplayName" = "8:#1002"
- "Description" = "8:#1102"
- "Type" = "3:3"
- "ContextData" = "8:"
- "Attributes" = "3:0"
- "Setting" = "3:1"
- "Value" = "8:#1202"
- "DefaultValue" = "8:#1202"
- "UsePlugInResources" = "11:TRUE"
- }
- "Welcome"
- {
- "Name" = "8:Welcome"
- "DisplayName" = "8:#1003"
- "Description" = "8:#1103"
- "Type" = "3:3"
- "ContextData" = "8:"
- "Attributes" = "3:0"
- "Setting" = "3:1"
- "Value" = "8:#1203"
- "DefaultValue" = "8:#1203"
- "UsePlugInResources" = "11:TRUE"
- }
- }
- }
- "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_9E0BF0E568AD4376B7C63539437117F4"
- {
- "Sequence" = "3:300"
- "DisplayName" = "8:Confirm Installation"
- "UseDynamicProperties" = "11:TRUE"
- "IsDependency" = "11:FALSE"
- "SourcePath" = "8:<VsdDialogDir>\\VsdConfirmDlg.wid"
- "Properties"
- {
- "BannerBitmap"
- {
- "Name" = "8:BannerBitmap"
- "DisplayName" = "8:#1001"
- "Description" = "8:#1101"
- "Type" = "3:8"
- "ContextData" = "8:Bitmap"
- "Attributes" = "3:4"
- "Setting" = "3:1"
- "UsePlugInResources" = "11:TRUE"
- }
- }
- }
- "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_CB831D833D794E9197E0852ECBEE979C"
- {
- "Sequence" = "3:200"
- "DisplayName" = "8:Installation Folder"
- "UseDynamicProperties" = "11:TRUE"
- "IsDependency" = "11:FALSE"
- "SourcePath" = "8:<VsdDialogDir>\\VsdFolderDlg.wid"
- "Properties"
- {
- "BannerBitmap"
- {
- "Name" = "8:BannerBitmap"
- "DisplayName" = "8:#1001"
- "Description" = "8:#1101"
- "Type" = "3:8"
- "ContextData" = "8:Bitmap"
- "Attributes" = "3:4"
- "Setting" = "3:1"
- "UsePlugInResources" = "11:TRUE"
- }
- "InstallAllUsersVisible"
- {
- "Name" = "8:InstallAllUsersVisible"
- "DisplayName" = "8:#1059"
- "Description" = "8:#1159"
- "Type" = "3:5"
- "ContextData" = "8:1;True=1;False=0"
- "Attributes" = "3:0"
- "Setting" = "3:0"
- "Value" = "3:1"
- "DefaultValue" = "3:1"
- "UsePlugInResources" = "11:TRUE"
- }
- }
- }
- }
- }
- "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_6CBB4BA587C04859A500758A40CA0569"
- {
- "Name" = "8:#1901"
- "Sequence" = "3:2"
- "Attributes" = "3:2"
- "Dialogs"
- {
- "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_6EA3016373DE45D6B54A32412B19796B"
- {
- "Sequence" = "3:100"
- "DisplayName" = "8:Progress"
- "UseDynamicProperties" = "11:TRUE"
- "IsDependency" = "11:FALSE"
- "SourcePath" = "8:<VsdDialogDir>\\VsdAdminProgressDlg.wid"
- "Properties"
- {
- "BannerBitmap"
- {
- "Name" = "8:BannerBitmap"
- "DisplayName" = "8:#1001"
- "Description" = "8:#1101"
- "Type" = "3:8"
- "ContextData" = "8:Bitmap"
- "Attributes" = "3:4"
- "Setting" = "3:1"
- "UsePlugInResources" = "11:TRUE"
- }
- "ShowProgress"
- {
- "Name" = "8:ShowProgress"
- "DisplayName" = "8:#1009"
- "Description" = "8:#1109"
- "Type" = "3:5"
- "ContextData" = "8:1;True=1;False=0"
- "Attributes" = "3:0"
- "Setting" = "3:0"
- "Value" = "3:1"
- "DefaultValue" = "3:1"
- "UsePlugInResources" = "11:TRUE"
- }
- }
- }
- }
- }
- "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_847B9FA096954A0BA699F2E22A1EC26F"
- {
- "Name" = "8:#1901"
- "Sequence" = "3:1"
- "Attributes" = "3:2"
- "Dialogs"
- {
- "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_957E60FF864747C6BFB5DFBA8143FF1F"
- {
- "Sequence" = "3:100"
- "DisplayName" = "8:Progress"
- "UseDynamicProperties" = "11:TRUE"
- "IsDependency" = "11:FALSE"
- "SourcePath" = "8:<VsdDialogDir>\\VsdProgressDlg.wid"
- "Properties"
- {
- "BannerBitmap"
- {
- "Name" = "8:BannerBitmap"
- "DisplayName" = "8:#1001"
- "Description" = "8:#1101"
- "Type" = "3:8"
- "ContextData" = "8:Bitmap"
- "Attributes" = "3:4"
- "Setting" = "3:1"
- "UsePlugInResources" = "11:TRUE"
- }
- "ShowProgress"
- {
- "Name" = "8:ShowProgress"
- "DisplayName" = "8:#1009"
- "Description" = "8:#1109"
- "Type" = "3:5"
- "ContextData" = "8:1;True=1;False=0"
- "Attributes" = "3:0"
- "Setting" = "3:0"
- "Value" = "3:1"
- "DefaultValue" = "3:1"
- "UsePlugInResources" = "11:TRUE"
- }
- }
- }
- }
- }
- "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_9BDFEC4F258F4413A5DEF06A0D195F7D"
- {
- "UseDynamicProperties" = "11:FALSE"
- "IsDependency" = "11:FALSE"
- "SourcePath" = "8:<VsdDialogDir>\\VsdBasicDialogs.wim"
- }
- "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_A24F46834C514C7083343F64E905DA80"
- {
- "Name" = "8:#1902"
- "Sequence" = "3:1"
- "Attributes" = "3:3"
- "Dialogs"
- {
- "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_C284764B2E054AB8B5E947967DD16E97"
- {
- "Sequence" = "3:100"
- "DisplayName" = "8:Finished"
- "UseDynamicProperties" = "11:TRUE"
- "IsDependency" = "11:FALSE"
- "SourcePath" = "8:<VsdDialogDir>\\VsdFinishedDlg.wid"
- "Properties"
- {
- "BannerBitmap"
- {
- "Name" = "8:BannerBitmap"
- "DisplayName" = "8:#1001"
- "Description" = "8:#1101"
- "Type" = "3:8"
- "ContextData" = "8:Bitmap"
- "Attributes" = "3:4"
- "Setting" = "3:1"
- "UsePlugInResources" = "11:TRUE"
- }
- "UpdateText"
- {
- "Name" = "8:UpdateText"
- "DisplayName" = "8:#1058"
- "Description" = "8:#1158"
- "Type" = "3:15"
- "ContextData" = "8:"
- "Attributes" = "3:0"
- "Setting" = "3:1"
- "Value" = "8:#1258"
- "DefaultValue" = "8:#1258"
- "UsePlugInResources" = "11:TRUE"
- }
- }
- }
- }
- }
- "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_BEA2C81DFC71404C816A61B9375DB18B"
- {
- "UseDynamicProperties" = "11:FALSE"
- "IsDependency" = "11:FALSE"
- "SourcePath" = "8:<VsdDialogDir>\\VsdUserInterface.wim"
- }
- "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_ECC5923C65834736971657EB9E83B15F"
- {
- "Name" = "8:#1900"
- "Sequence" = "3:2"
- "Attributes" = "3:1"
- "Dialogs"
- {
- "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_02A4C0887B7D4877B387FF09BA505C60"
- {
- "Sequence" = "3:300"
- "DisplayName" = "8:Confirm Installation"
- "UseDynamicProperties" = "11:TRUE"
- "IsDependency" = "11:FALSE"
- "SourcePath" = "8:<VsdDialogDir>\\VsdAdminConfirmDlg.wid"
- "Properties"
- {
- "BannerBitmap"
- {
- "Name" = "8:BannerBitmap"
- "DisplayName" = "8:#1001"
- "Description" = "8:#1101"
- "Type" = "3:8"
- "ContextData" = "8:Bitmap"
- "Attributes" = "3:4"
- "Setting" = "3:1"
- "UsePlugInResources" = "11:TRUE"
- }
- }
- }
- "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_6BBA52F8CA5842B6AE32B4AAE0A50204"
- {
- "Sequence" = "3:200"
- "DisplayName" = "8:Installation Folder"
- "UseDynamicProperties" = "11:TRUE"
- "IsDependency" = "11:FALSE"
- "SourcePath" = "8:<VsdDialogDir>\\VsdAdminFolderDlg.wid"
- "Properties"
- {
- "BannerBitmap"
- {
- "Name" = "8:BannerBitmap"
- "DisplayName" = "8:#1001"
- "Description" = "8:#1101"
- "Type" = "3:8"
- "ContextData" = "8:Bitmap"
- "Attributes" = "3:4"
- "Setting" = "3:1"
- "UsePlugInResources" = "11:TRUE"
- }
- }
- }
- "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_B3DA8A0FDD1A4ED782C95E9C5ACB22C3"
- {
- "Sequence" = "3:100"
- "DisplayName" = "8:Welcome"
- "UseDynamicProperties" = "11:TRUE"
- "IsDependency" = "11:FALSE"
- "SourcePath" = "8:<VsdDialogDir>\\VsdAdminWelcomeDlg.wid"
- "Properties"
- {
- "BannerBitmap"
- {
- "Name" = "8:BannerBitmap"
- "DisplayName" = "8:#1001"
- "Description" = "8:#1101"
- "Type" = "3:8"
- "ContextData" = "8:Bitmap"
- "Attributes" = "3:4"
- "Setting" = "3:1"
- "UsePlugInResources" = "11:TRUE"
- }
- "CopyrightWarning"
- {
- "Name" = "8:CopyrightWarning"
- "DisplayName" = "8:#1002"
- "Description" = "8:#1102"
- "Type" = "3:3"
- "ContextData" = "8:"
- "Attributes" = "3:0"
- "Setting" = "3:1"
- "Value" = "8:#1202"
- "DefaultValue" = "8:#1202"
- "UsePlugInResources" = "11:TRUE"
- }
- "Welcome"
- {
- "Name" = "8:Welcome"
- "DisplayName" = "8:#1003"
- "Description" = "8:#1103"
- "Type" = "3:3"
- "ContextData" = "8:"
- "Attributes" = "3:0"
- "Setting" = "3:1"
- "Value" = "8:#1203"
- "DefaultValue" = "8:#1203"
- "UsePlugInResources" = "11:TRUE"
- }
- }
- }
- }
- }
- }
- "MergeModule"
- {
- }
- "ProjectOutput"
- {
- "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_F5A5333AE8294663AFE66C9CE875BACE"
- {
- "SourcePath" = "8:..\\Mite\\obj\\Debug\\Mite.exe"
- "TargetName" = "8:"
- "Tag" = "8:"
- "Folder" = "8:_BA75B84E8A71446E9CAA82F3E496DD24"
- "Condition" = "8:"
- "Transitive" = "11:FALSE"
- "Vital" = "11:TRUE"
- "ReadOnly" = "11:FALSE"
- "Hidden" = "11:FALSE"
- "System" = "11:FALSE"
- "Permanent" = "11:FALSE"
- "SharedLegacy" = "11:FALSE"
- "PackageAs" = "3:1"
- "Register" = "3:1"
- "Exclude" = "11:FALSE"
- "IsDependency" = "11:FALSE"
- "IsolateTo" = "8:"
- "ProjectOutputGroupRegister" = "3:1"
- "OutputConfiguration" = "8:"
- "OutputGroupCanonicalName" = "8:Built"
- "OutputProjectGuid" = "8:{0D646057-57A0-4C3A-BC8C-96840C9EE9F2}"
- "ShowKeyOutput" = "11:TRUE"
- "ExcludeFilters"
- {
- }
- }
- }
- }
-}
View
BIN  Mite.Installer/Mite.Installer/Express/DVD-5/DiskImages/DISK1/0x0409.ini
Binary file not shown
View
BIN  ...Installer/Mite.Installer/Express/DVD-5/DiskImages/DISK1/program files/Mite/MySql.Data.dll
Binary file not shown
View
BIN  ...ller/Mite.Installer/Express/DVD-5/DiskImages/DISK1/program files/Mite/Newtonsoft.Json.dll
Binary file not shown
View
3  ...nstaller/Mite.Installer/Express/DVD-5/DiskImages/DISK1/program files/Mite/mite.exe.config
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<configuration>
+<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>
View
BIN  Mite.Installer/Mite.Installer/Express/DVD-5/LogFiles/7-28-2012 05-03-15 PM.txt
Binary file not shown
View
BIN  Mite.Installer/Mite.Installer/Express/DVD-5/LogFiles/8-4-2012 03-44-10 PM.txt
Binary file not shown
View
BIN  Mite.Installer/Mite.Installer/Express/DVD-5/LogFiles/8-4-2012 04-41-10 PM.txt
Binary file not shown
View
BIN  Mite.Installer/Mite.Installer/Express/DVD-5/LogFiles/8-4-2012 05-00-10 PM.txt
Binary file not shown
View
421 Mite.Installer/Mite.Installer/Express/DVD-5/Reports/7-28-2012 05-03-22 PM.htm
@@ -0,0 +1,421 @@
+<HTML><HEAD><TITLE>Build Report</TITLE></HEAD><BODY>
+
+<B><FONT FACE="Arial" SIZE=4><P ALIGN="center">
+Build Report</P></B></FONT>
+
+<B><I><FONT FACE="Arial" ><P>
+Summary</P></I></B></FONT>
+
+<TABLE CELLSPACING=0 STYLE="margin-left:20" BORDER=0 CELLPADDING=4 WIDTH=600>
+
+<TR>
+
+<TD WIDTH="45%"VALIGN="center"><FONT FACE="Times New Roman"SIZE=2><P>
+
+Number of features:
+</FONT></P></TD>
+
+<TD WIDTH="55%"VALIGN="center"><FONT FACE="Times New Roman"SIZE=2><P>
+
+1
+</FONT></P></TD>
+
+</TR>
+
+<TR>
+
+<TD WIDTH="45%"VALIGN="center"><FONT FACE="Times New Roman"SIZE=2><P>
+
+Number of merge modules:
+</FONT></P></TD>
+
+<TD WIDTH="55%"VALIGN="center"><FONT FACE="Times New Roman"SIZE=2><P>
+
+0
+</FONT></P></TD>
+
+</TR>
+
+<TR>
+
+<TD WIDTH="45%"VALIGN="center"><FONT FACE="Times New Roman"SIZE=2><P>
+
+Number of dynamic links:
+</FONT></P></TD>
+
+<TD WIDTH="55%"VALIGN="center"><FONT FACE="Times New Roman"SIZE=2><P>
+
+0
+</FONT></P></TD>
+
+</TR>
+
+<TR>
+
+<TD WIDTH="45%"VALIGN="center"><FONT FACE="Times New Roman"SIZE=2><P>
+
+Media:
+</FONT></P></TD>
+
+<TD WIDTH="55%"VALIGN="center"><FONT FACE="Times New Roman"SIZE=2><P>
+
+DVD-5
+</FONT></P></TD>
+
+</TR>
+
+<TR>
+
+<TD WIDTH="45%"VALIGN="center"><FONT FACE="Times New Roman"SIZE=2><P>
+
+Number of files:
+</FONT></P></TD>
+
+<TD WIDTH="55%"VALIGN="center"><FONT FACE="Times New Roman"SIZE=2><P>
+
+7
+</FONT></P></TD>
+
+</TR>
+
+<TR>
+
+<TD WIDTH="45%"VALIGN="center"><FONT FACE="Times New Roman"SIZE=2><P>
+
+Uncompressed files total size:
+</FONT></P></TD>
+
+<TD WIDTH="55%"VALIGN="center"><FONT FACE="Times New Roman"SIZE=2><P>
+
+0.53 MB
+</FONT></P></TD>
+
+</TR>
+
+<TR>
+
+<TD WIDTH="45%"VALIGN="center"><FONT FACE="Times New Roman"SIZE=2><P>
+
+Compressed files total size:
+</FONT></P></TD>
+
+<TD WIDTH="55%"VALIGN="center"><FONT FACE="Times New Roman"SIZE=2><P>
+
+0.00 MB
+</FONT></P></TD>
+
+</TR>
+
+</TABLE>
+
+<B><I><FONT FACE="Arial" ><P>
+Features</P></I></B></FONT>
+
+<TABLE CELLSPACING=0 STYLE="margin-left:20" BORDER=0 CELLPADDING=4 WIDTH=600>
+
+<TR>
+
+<TD WIDTH="100%"VALIGN="center"><FONT FACE="Times New Roman"SIZE=2><P>
+
+AlwaysInstall
+</FONT></P></TD>
+
+</TR>
+
+</TABLE>
+
+<B><I><FONT FACE="Arial" ><P>
+Merge Modules</P></I></B></FONT>
+
+<TABLE CELLSPACING=0 STYLE="margin-left:20" BORDER=0 CELLPADDING=4 WIDTH=600>
+
+</TABLE>
+
+<B><I><FONT FACE="Arial" ><P>
+Dynamic links</P></I></B></FONT>
+
+<TABLE CELLSPACING=0 STYLE="margin-left:20" BORDER=0 CELLPADDING=4 WIDTH=600>
+
+</TABLE>
+
+<B><I><FONT FACE="Arial" ><P>
+Files</P></I></B></FONT>
+
+<TABLE CELLSPACING=0 STYLE="margin-left:20" BORDER=0 CELLPADDING=4 WIDTH=600>
+
+<TR>
+
+<TD WIDTH="30%"VALIGN="center"><B><I><FONT FACE="Arial"SIZE=2><P>
+
+File
+</I></B></FONT></P></TD>
+
+<TD WIDTH="20%"VALIGN="center"><B><I><FONT FACE="Arial"SIZE=2><P>
+
+Destination
+</I></B></FONT></P></TD>
+
+<TD WIDTH="15%"VALIGN="center"><B><I><FONT FACE="Arial"SIZE=2><P>
+
+Feature
+</I></B></FONT></P></TD>
+
+<TD WIDTH="15%"VALIGN="center"><B><I><FONT FACE="Arial"SIZE=2><P>
+
+Last Modified
+</I></B></FONT></P></TD>
+
+<TD WIDTH="10%"VALIGN="center"><B><I><FONT FACE="Arial"SIZE=2><P>
+
+Size (bytes)
+</I></B></FONT></P></TD>
+
+<TD WIDTH="10%"VALIGN="center"><B><I><FONT FACE="Arial"SIZE=2><P>
+
+Version
+</I></B></FONT></P></TD>
+
+</TR>
+
+<TR>
+
+<TD WIDTH="30%"VALIGN="center"><FONT FACE="Times New Roman"SIZE=2><P>
+
+mite.exe
+</FONT></P></TD>
+
+<TD WIDTH="20%"VALIGN="center"><FONT FACE="Times New Roman"SIZE=2><P>
+
+[ProgramFilesFolder]Mite
+</FONT></P></TD>
+
+<TD WIDTH="15%"VALIGN="center"><FONT FACE="Times New Roman"SIZE=2><P>
+
+Always Install
+</FONT></P></TD>
+
+<TD WIDTH="15%"VALIGN="center"><FONT FACE="Times New Roman"SIZE=2><P>
+
+7/28/2012 4:08:41 PM
+</FONT></P></TD>
+
+<TD WIDTH="10%"VALIGN="center"><FONT FACE="Times New Roman"SIZE=2><P>
+
+18944
+</FONT></P></TD>
+
+<TD WIDTH="10%"VALIGN="center"><FONT FACE="Times New Roman"SIZE=2><P>
+
+1.0.1.0
+</FONT></P></TD>
+
+</TR>
+
+<TR>
+
+<TD WIDTH="30%"VALIGN="center"><FONT FACE="Times New Roman"SIZE=2><P>
+
+mite.exe.config
+</FONT></P></TD>
+
+<TD WIDTH="20%"VALIGN="center"><FONT FACE="Times New Roman"SIZE=2><P>
+
+[ProgramFilesFolder]Mite
+</FONT></P></TD>
+
+<TD WIDTH="15%"VALIGN="center"><FONT FACE="Times New Roman"SIZE=2><P>
+
+Always Install
+</FONT></P></TD>
+
+<TD WIDTH="15%"VALIGN="center"><FONT FACE="Times New Roman"SIZE=2><P>
+
+7/24/2012 9:12:58 PM
+</FONT></P></TD>
+
+<TD WIDTH="10%"VALIGN="center"><FONT FACE="Times New Roman"SIZE=2><P>
+
+141
+</FONT></P></TD>
+
+<TD WIDTH="10%"VALIGN="center"><FONT FACE="Times New Roman"SIZE=2><P>
+
+
+</FONT></P></TD>
+
+</TR>
+
+<TR>
+
+<TD WIDTH="30%"VALIGN="center"><FONT FACE="Times New Roman"SIZE=2><P>
+
+Mite.Core.dll
+</FONT></P></TD>
+
+<TD WIDTH="20%"VALIGN="center"><FONT FACE="Times New Roman"SIZE=2><P>
+
+[ProgramFilesFolder]Mite
+</FONT></P></TD>
+
+<TD WIDTH="15%"VALIGN="center"><FONT FACE="Times New Roman"SIZE=2><P>
+
+Always Install
+</FONT></P></TD>
+
+<TD WIDTH="15%"VALIGN="center"><FONT FACE="Times New Roman"SIZE=2><P>
+
+7/28/2012 3:07:50 PM
+</FONT></P></TD>
+
+<TD WIDTH="10%"VALIGN="center"><FONT FACE="Times New Roman"SIZE=2><P>
+
+20992
+</FONT></P></TD>
+
+<TD WIDTH="10%"VALIGN="center"><FONT FACE="Times New Roman"SIZE=2><P>
+
+1.0.0.0
+</FONT></P></TD>
+
+</TR>
+
+<TR>