diff --git a/src/Umbraco.Core/DatabaseContext.cs b/src/Umbraco.Core/DatabaseContext.cs
index 597e4de24e..0acf98f842 100644
--- a/src/Umbraco.Core/DatabaseContext.cs
+++ b/src/Umbraco.Core/DatabaseContext.cs
@@ -278,7 +278,8 @@ namespace Umbraco.Core
///
internal void Initialize()
{
- if (ConfigurationManager.ConnectionStrings[GlobalSettings.UmbracoConnectionName] != null)
+ var databaseSettings = ConfigurationManager.ConnectionStrings[GlobalSettings.UmbracoConnectionName];
+ if (databaseSettings != null && string.IsNullOrWhiteSpace(databaseSettings.ConnectionString) == false && string.IsNullOrWhiteSpace(databaseSettings.ProviderName) == false)
{
var providerName = "System.Data.SqlClient";
if (!string.IsNullOrEmpty(ConfigurationManager.ConnectionStrings[GlobalSettings.UmbracoConnectionName].ProviderName))
diff --git a/src/Umbraco.Web.UI/web.Template.config b/src/Umbraco.Web.UI/web.Template.config
index d83c0e0cef..4702427a8f 100644
--- a/src/Umbraco.Web.UI/web.Template.config
+++ b/src/Umbraco.Web.UI/web.Template.config
@@ -79,7 +79,11 @@
-
+
+
+
+
+
diff --git a/src/Umbraco.Web/umbraco.presentation/install/steps/database.ascx.cs b/src/Umbraco.Web/umbraco.presentation/install/steps/database.ascx.cs
index 8a57ad3b92..7d88678b05 100644
--- a/src/Umbraco.Web/umbraco.presentation/install/steps/database.ascx.cs
+++ b/src/Umbraco.Web/umbraco.presentation/install/steps/database.ascx.cs
@@ -73,13 +73,17 @@ namespace umbraco.presentation.install.steps
if (settings.Visible && !Page.IsPostBack)
{
//If the connection string is already present in web.config we don't need to show the settings page and we jump to installing/upgrading.
- if (
- ConfigurationManager.ConnectionStrings[
- Umbraco.Core.Configuration.GlobalSettings.UmbracoConnectionName] == null
- ||
- string.IsNullOrEmpty(
- ConfigurationManager.ConnectionStrings[
- Umbraco.Core.Configuration.GlobalSettings.UmbracoConnectionName].ConnectionString))
+ var databaseSettings = ConfigurationManager.ConnectionStrings[Umbraco.Core.Configuration.GlobalSettings.UmbracoConnectionName];
+
+ var dbIsSqlCe = databaseSettings.ProviderName == "System.Data.SqlServerCe.4.0";
+ var sqlCeDatabaseExists = false;
+ if (dbIsSqlCe)
+ sqlCeDatabaseExists = File.Exists(databaseSettings.ConnectionString.Replace("|DataDirectory|", AppDomain.CurrentDomain.GetData("DataDirectory").ToString()));
+
+ // Either the connection details are not fully specified or it's a SQL CE database that doesn't exist yet
+ if (databaseSettings == null
+ || string.IsNullOrWhiteSpace(databaseSettings.ConnectionString) || string.IsNullOrWhiteSpace(databaseSettings.ProviderName)
+ || (dbIsSqlCe && sqlCeDatabaseExists == false))
{
installProgress.Visible = true;
upgradeProgress.Visible = false;
@@ -115,20 +119,20 @@ namespace umbraco.presentation.install.steps
protected void ShowDatabaseSettings()
{
// Parse the connection string
- DbConnectionStringBuilder connectionStringBuilder = new DbConnectionStringBuilder();
+ var connectionStringBuilder = new DbConnectionStringBuilder();
var databaseSettings = ConfigurationManager.ConnectionStrings[Umbraco.Core.Configuration.GlobalSettings.UmbracoConnectionName];
- if (databaseSettings != null)
+ if (databaseSettings != null && string.IsNullOrWhiteSpace(databaseSettings.ConnectionString) == false)
{
var dataHelper = DataLayerHelper.CreateSqlHelper(databaseSettings.ConnectionString, false);
connectionStringBuilder.ConnectionString = dataHelper.ConnectionString;
// Prepare data layer type
- string datalayerType = GetConnectionStringValue(connectionStringBuilder, "datalayer");
+ var datalayerType = GetConnectionStringValue(connectionStringBuilder, "datalayer");
if (datalayerType.Length > 0)
{
foreach (ListItem item in DatabaseType.Items)
- if (item.Value != String.Empty && datalayerType.Contains(item.Value))
+ if (item.Value != string.Empty && datalayerType.Contains(item.Value))
DatabaseType.SelectedValue = item.Value;
}
else if (dataHelper.ConnectionString != "server=.\\SQLEXPRESS;database=DATABASE;user id=USER;password=PASS")
@@ -138,7 +142,7 @@ namespace umbraco.presentation.install.steps
{
DatabaseType.SelectedValue = "SqlServer";
}
-
+
DatabaseType_SelectedIndexChanged(this, new EventArgs());
// Prepare other fields
@@ -154,8 +158,7 @@ namespace umbraco.presentation.install.steps
toggleVisible(DatabaseUsernameItem, !ManualConnectionString && !IsEmbeddedDatabase);
toggleVisible(DatabasePasswordItem, !ManualConnectionString && !IsEmbeddedDatabase);
toggleVisible(DatabaseNameItem, !ManualConnectionString && !IsEmbeddedDatabase);
-
-
+
if (IsEmbeddedDatabase)
dbinit.Text = "$('#databaseOptionEmbedded').click();$('#databaseOptionEmbedded').change();";
else if (ManualConnectionString)