/************************************************************************************ * * Umbraco Data Layer * MIT Licensed work * ©2008 Ruben Verborgh * ***********************************************************************************/ using System; using System.Resources; using SQLCE4Umbraco; using umbraco.DataLayer.Utility.Installer; using System.Diagnostics; namespace SqlCE4Umbraco { /// /// Database installer for an SQL Server data source. /// [Obsolete("The legacy installers are no longer used and will be removed from the codebase in the future")] public class SqlCEInstaller : DefaultInstallerUtility { #region Private Constants /// The latest database version this installer supports. private const DatabaseVersion LatestVersionSupported = DatabaseVersion.Version4_8; /// The specifications to determine the database version. private static readonly VersionSpecs[] m_VersionSpecs = new VersionSpecs[] { new VersionSpecs("SELECT CONSTRAINT_NAME FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS LEFT OUTER JOIN umbracoApp ON appAlias = appAlias WHERE CONSTRAINT_NAME = 'FK_umbracoUser2app_umbracoApp'", 0, DatabaseVersion.Version4_8), new VersionSpecs("SELECT id FROM umbracoNode WHERE id = -21", 1, DatabaseVersion.Version4_1), new VersionSpecs("SELECT action FROM umbracoAppTree",DatabaseVersion.Version4), new VersionSpecs("SELECT description FROM cmsContentType",DatabaseVersion.Version3), new VersionSpecs("SELECT id FROM sysobjects",DatabaseVersion.None) }; #endregion #region Public Properties /// /// This ensures that the database exists, then runs the base method /// public override bool CanConnect { get { SqlHelper.CreateEmptyDatabase(); return base.CanConnect; } } /// /// Gets a value indicating whether the installer can upgrade the data source. /// /// /// true if the installer can upgrade the data source; otherwise, false. /// /// Empty data sources can't be upgraded, just installed. public override bool CanUpgrade { get { return CurrentVersion == DatabaseVersion.Version4_1; } } #endregion #region Protected Properties /// /// Gets the version specification for evaluation by DetermineCurrentVersion. /// Only first matching specification is taken into account. /// /// The version specifications. protected override VersionSpecs[] VersionSpecs { get { return m_VersionSpecs; } } #endregion #region Public Constructors /// /// Initializes a new instance of the class. /// /// The SQL helper. public SqlCEInstaller(SqlCEHelper sqlHelper) : base(sqlHelper, LatestVersionSupported) { } #endregion #region DefaultInstaller Members /// /// Returns the sql to do a full install /// protected override string FullInstallSql { get { return string.Empty; } } /// /// Returns the sql to do an upgrade /// protected override string UpgradeSql { get { return string.Empty; } } // We need to override this as the default way of detection a db connection checks for systables that doesn't exist // in a CE db protected override DatabaseVersion DetermineCurrentVersion() { DatabaseVersion version = base.DetermineCurrentVersion(); if (version != DatabaseVersion.Unavailable) { return version; } // verify connection try { if (SqlCeApplicationBlock.VerifyConnection(base.SqlHelper.ConnectionString)) return DatabaseVersion.None; } catch (Exception e) { Trace.WriteLine(e.ToString()); } return DatabaseVersion.Unavailable; } #endregion } }