Upgrading BlogEngine.NET from 1.1 to 1.2

Upgrading your blog is an easy process for the most part.  In the latest release of BlogEngine.NET, it is no different.  However, I've written out detailed steps for the process to help answer questions people might have.

Backup your blog

This is always the first step listed, although I don't always do it myself.  Obviously, you can update your blog without backing up first, but I'd prefer not to hear that people lost everything following my instructions, so this is the first step you'll hear from me.

If you are thinking of skipping this step, at least backup your App_Data folder.

Download the blog software

You can get the latest release here.  The web project download is the best option if you simply want to update your site.

Database Update

If you are using the XML provider (which is the default) skip this section.  If you are not sure, skip this section. :)

Ok, for those of you using the MSSQL Provider, there is a new table, and handful of new fields, and a few more new settings to add to your database. 

If you are using the 1.1 release, you can use my sql script for updating to 1.2.

If you are using an earlier version of BlogEngine or a build from after the 1.1 release, you are on your own.  You can easily compare the table, field, and data from the 1.2 setup script included in the release to see what you should add to your database.

Update Robots.txt

While not required, this is a great time update your robots.txt file.  (Read more about what robots.txt does here if you'd like.)  In your newly downloaded 1.2 foldler, find the robots.txt file and open it in the text editor of your choice.  Simply change the url of the site map to match your web address open your newly downloaded 1.2 folder

Web Upgrade

Certainly you've downloaded the 1.2 release already, so now you'll need to copy the relevant parts to your web server.

You will want to copy everything except the App_Data folder and your Sql.Config file.  (The Sql.config file is only important if you are a MSSQL Provider user.)  Overwriting these would be bad and make you wish you had made a back up.

At this stage, you should be ready to open your web browser and open your blog.  You should see the shiny 1.2 version number at the bottom of the main page, assuming of course you are using a theme that keeps the trusty version number there.

Update your Settings

Login and got your your settings page and check your settings out.  This is an excellent time to review the new options in the new version as well.

Be sure to look at the following:

  • In your feed settings, notice that the feedburner option is no longer there.  It is replaced Alternate feed URL.  If you are using feedburner, be sure to update this.
  • There is a new Avatar option in the Comment section.  You will need to select Gravatar here if you want to use it.

Save your settings and you are ready to enjoy the new 1.2 goodness.  Hopefully, this will be helpful to someone out there.

Comments

9/30/2007 3:44:26 PM #

Young Park

Thanks for your help! I'm currently upgrading my blogEngine 1.1 to 1.2. Hope this works!

Young Park United States |

10/1/2007 7:19:57 AM #

Sowokie

Do you use "publish Web" in VS2005 or do you update the web with ftp? Just wondering if the App_data folder gets deleted and i would need to contact the server provider to have them give the folder read/write!

This is realy not working for me! I used ftp to update the web and now i have a config error that i seem to be unable to get rid of, even by puting the backup back! ;-(

Sowokie Iceland |

10/1/2007 8:03:12 AM #

Al Nyveldt

I use FTP to update my hosting provider.  I never touch the App_Data folder so the permissions don't get changed.

I'm not too sure what to say about the config error.  If you put your backup back and get your permissions back, you should be running just like you did before.  

You can always test your setup locally.  If you can get it working on your local IIS, then you'll need to work with your service provider to make sure the settings are what they should be.

Al Nyveldt United States |

10/1/2007 12:49:45 PM #

bpatters

Thanks again for another useful blog.

bpatters United States |

10/1/2007 5:34:04 PM #

Philippe

Hi, The update was not too difficult. I had a couple problems with the themes. I was using Cogitation. It looks it is ok now. Great Blog, Thanks

Philippe United States |

10/3/2007 12:52:12 AM #

bill

You kick butt man. Great contribution, thanks!!!!

bill United States |

10/10/2007 4:06:01 PM #

chetana

Great work blogEngine team!!!!!

I have also upgraded my blogengine to 1.2, everything is working fine except membership provider for mssqlprovider.

Do i need to change my web.config file to support mssqlmembership provider?

Any help will be highlu appreciated.

chetana United States |

10/11/2007 4:30:26 AM #

Nermin

Thanks, your post definitely helped me upgrade my blog.

Nermin United States |

10/23/2007 9:47:37 PM #

Mark Catheline

I am trying to convert from xml to sql server.  However, I get an error whenever I try to run the sql script using MS Sql Server 2000 Query Analyzer.  Can you help me?

Thanks,

Mark

Line 8: Incorrect syntax near '('.

/****** Object:  Table [dbo].[be_Categories]    Script Date: 06/24/2007 22:17:50 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[be_Categories](
[CategoryID] [uniqueidentifier] ROWGUIDCOL  NOT NULL CONSTRAINT [DF_be_Categories_CategoryID]  DEFAULT (newid()),
[CategoryName] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
CONSTRAINT [PK_be_Categories] PRIMARY KEY CLUSTERED
(
[CategoryID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF

/****** Object:  Table [dbo].[be_Pages]    Script Date: 06/24/2007 22:18:33 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[be_Pages](
[PageID] [uniqueidentifier] ROWGUIDCOL  NOT NULL CONSTRAINT [DF_be_Pages_PageID]  DEFAULT (newid()),
[Title] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[Description] [varchar](max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[PageContent] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[Keywords] [varchar](max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[DateCreated] [datetime] NULL,
[DateModified] [datetime] NULL,
CONSTRAINT [PK_be_Pages] PRIMARY KEY CLUSTERED
(
[PageID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

GO
SET ANSI_PADDING OFF

/****** Object:  Table [dbo].[be_PingService]    Script Date: 06/24/2007 22:19:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[be_PingService](
[PingServiceID] [int] IDENTITY(1,1) NOT NULL,
[Link] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
CONSTRAINT [PK_be_PingService] PRIMARY KEY CLUSTERED
(
[PingServiceID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF

/****** Object:  Table [dbo].[be_PostCategory]    Script Date: 06/24/2007 22:20:22 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[be_PostCategory](
[PostCategoryID] [int] IDENTITY(1,1) NOT NULL,
[PostID] [uniqueidentifier] NOT NULL,
[CategoryID] [uniqueidentifier] NOT NULL,
CONSTRAINT [PK_be_PostCategory] PRIMARY KEY CLUSTERED
(
[PostCategoryID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

/****** Object:  Table [dbo].[be_PostComment]    Script Date: 06/24/2007 22:21:03 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[be_PostComment](
[PostCommentID] [uniqueidentifier] ROWGUIDCOL  NOT NULL CONSTRAINT [DF_be_PostComment_PostCommentID]  DEFAULT (newid()),
[PostID] [uniqueidentifier] NOT NULL,
[CommentDate] [datetime] NOT NULL,
[Author] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[Email] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[Website] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[Comment] [varchar](max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[Country] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[Ip] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
CONSTRAINT [PK_be_PostComment] PRIMARY KEY CLUSTERED
(
[PostCommentID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF

/****** Object:  Table [dbo].[be_Posts]    Script Date: 06/24/2007 22:21:51 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[be_Posts](
[PostID] [uniqueidentifier] ROWGUIDCOL  NOT NULL CONSTRAINT [DF_be_Posts_PostID]  DEFAULT (newid()),
[Title] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[Description] [varchar](max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[PostContent] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[DateCreated] [datetime] NULL,
[DateModified] [datetime] NULL,
[Author] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[IsPublished] [bit] NULL,
[IsCommentEnabled] [bit] NULL,
[Raters] [int] NULL,
[Rating] [real] NULL,
CONSTRAINT [PK_be_Posts] PRIMARY KEY CLUSTERED
(
[PostID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

GO
SET ANSI_PADDING OFF

/****** Object:  Table [dbo].[be_PostTag]    Script Date: 06/24/2007 22:22:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[be_PostTag](
[PostTagID] [int] IDENTITY(1,1) NOT NULL,
[PostID] [uniqueidentifier] NOT NULL,
[Tag] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
CONSTRAINT [PK_be_PostTag] PRIMARY KEY CLUSTERED
(
[PostTagID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF

/****** Object:  Table [dbo].[be_Settings]    Script Date: 06/24/2007 22:23:13 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[be_Settings](
[SettingName] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[SettingValue] [varchar](max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
CONSTRAINT [PK_be_Settings] PRIMARY KEY CLUSTERED
(
[SettingName] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF

/***  Load initial Data ***/
INSERT INTO be_Settings (SettingName, SettingValue)
VALUES ('storagelocation', '~/app_data/');
INSERT INTO be_Settings (SettingName, SettingValue)
VALUES ('enablecountryincomments', 'True');
INSERT INTO be_Settings (SettingName, SettingValue)
VALUES ('searchcommentlabeltext', 'Include comments in search');
INSERT INTO be_Settings (SettingName, SettingValue)
VALUES ('enablerelatedposts', 'True');
INSERT INTO be_Settings (SettingName, SettingValue)
VALUES ('removewhitespaceinstylesheets', 'True');
INSERT INTO be_Settings (SettingName, SettingValue)
VALUES ('endorsement', 'www.dotnetblogengine.net/syndication.axd');
INSERT INTO be_Settings (SettingName, SettingValue)
VALUES ('showlivepreview', 'True');
INSERT INTO be_Settings (SettingName, SettingValue)
VALUES ('enablesearchhightlight', 'True');
INSERT INTO be_Settings (SettingName, SettingValue)
VALUES ('feedburnerusername', '');
INSERT INTO be_Settings (SettingName, SettingValue)
VALUES ('authorname', '');
INSERT INTO be_Settings (SettingName, SettingValue)
VALUES ('displaycommentsonrecentposts', 'True');
INSERT INTO be_Settings (SettingName, SettingValue)
VALUES ('theme', 'Standard');
INSERT INTO be_Settings (SettingName, SettingValue)
VALUES ('iscommentsenabled', 'True');
INSERT INTO be_Settings (SettingName, SettingValue)
VALUES ('language', 'en-GB');
INSERT INTO be_Settings (SettingName, SettingValue)
VALUES ('postsperpage', '10');
INSERT INTO be_Settings (SettingName, SettingValue)
VALUES ('htmlheader', '<link rel="example" />');
INSERT INTO be_Settings (SettingName, SettingValue)
VALUES ('syndicationformat', 'Rss');
INSERT INTO be_Settings (SettingName, SettingValue)
VALUES ('geocodinglatitude', '0');
INSERT INTO be_Settings (SettingName, SettingValue)
VALUES ('email', 'user@example.com');
INSERT INTO be_Settings (SettingName, SettingValue)
VALUES ('dayscommentsareenabled', '0');
INSERT INTO be_Settings (SettingName, SettingValue)
VALUES ('enablecommentsearch', 'True');
INSERT INTO be_Settings (SettingName, SettingValue)
VALUES ('blogrollvisibleposts', '3');
INSERT INTO be_Settings (SettingName, SettingValue)
VALUES ('timezone', '1');
INSERT INTO be_Settings (SettingName, SettingValue)
VALUES ('smtpusername', 'user@example.com');
INSERT INTO be_Settings (SettingName, SettingValue)
VALUES ('searchdefaulttext', 'Enter search term');
INSERT INTO be_Settings (SettingName, SettingValue)
VALUES ('iscocommentenabled', 'False');
INSERT INTO be_Settings (SettingName, SettingValue)
VALUES ('trackingscript', '');
INSERT INTO be_Settings (SettingName, SettingValue)
VALUES ('description', 'Short description of the blog');
INSERT INTO be_Settings (SettingName, SettingValue)
VALUES ('enableopensearch', 'True');
INSERT INTO be_Settings (SettingName, SettingValue)
VALUES ('numberofrecentposts', '10');
INSERT INTO be_Settings (SettingName, SettingValue)
VALUES ('displayratingsonrecentposts', 'True');
INSERT INTO be_Settings (SettingName, SettingValue)
VALUES ('searchbuttontext', 'Search');
INSERT INTO be_Settings (SettingName, SettingValue)
VALUES ('name', 'Name of the blog');
INSERT INTO be_Settings (SettingName, SettingValue)
VALUES ('culture', 'Auto');
INSERT INTO be_Settings (SettingName, SettingValue)
VALUES ('contactformmessage', '<p>I will answer the mail as soon as I can.</p>');
INSERT INTO be_Settings (SettingName, SettingValue)
VALUES ('smtppassword', 'password');
INSERT INTO be_Settings (SettingName, SettingValue)
VALUES ('smtpserverport', '25');
INSERT INTO be_Settings (SettingName, SettingValue)
VALUES ('smtpserver', 'mail.example.dk');
INSERT INTO be_Settings (SettingName, SettingValue)
VALUES ('contactthankmessage', '<h1>Thank you</h1><p>The message was sent.</p>');
INSERT INTO be_Settings (SettingName, SettingValue)
VALUES ('postsperfeed', '15');
INSERT INTO be_Settings (SettingName, SettingValue)
VALUES ('geocodinglongitude', '0');
INSERT INTO be_Settings (SettingName, SettingValue)
VALUES ('enablereferrertracking', 'False');
INSERT INTO be_Settings (SettingName, SettingValue)
VALUES ('blogrollupdateminutes', '60');
INSERT INTO be_Settings (SettingName, SettingValue)
VALUES ('sendmailoncomment', 'True');
INSERT INTO be_Settings (SettingName, SettingValue)
VALUES ('blogrollmaxlength', '23');
INSERT INTO be_Settings (SettingName, SettingValue)
VALUES ('enablehttpcompression', 'True');

DECLARE @postID uniqueidentifier, @catID uniqueidentifier

SET @postID = NEWID();
SET @catID = NEWID();

INSERT INTO be_Categories (CategoryID, CategoryName)
VALUES (@catID, 'General');

INSERT INTO be_Posts (PostID, Title, Description, PostContent, DateCreated, Author, IsPublished)
VALUES (@postID,
'Welcome to BlogEngine.NET',
'The description is used as the meta description as well as shown in the related posts. It is recommended that you write a description, but not mandatory',
'<p>If you see this post it means that BlogEngine.NET is running and the hard part of creating your own blog is done. There is only one thing you need to do from this point on to take full advantage of the blog and that is to set up the first author profile.</p>
<h2>Setup</h2>
<p>Find and open the users.xml file which is located in the App_Data folder. Edit the default user and provide your own name as the username and a password of your choice. Save the users.xml file with the new username and password and you are now able to log in and start writing posts.</p>
<h2>Write permissions</h2>
<p>To be able to log in to the blog and writing posts, you need to enable write permissions on the App_Data folder. If you are blog is hosted at a hosting provider, you can either log into your account&amp;rsquo;s admin page or call the support. You need write permissions on the App_Data folder because all posts and comments are saved as XML files and placed in the App_Data folder.</p>
<h2>On the web </h2>
<p>You can find BlogEngine.NET on the <a href="http://www.dotnetblogengine.net">official website</a>. Here you will find tutorials, documentation, tips and tricks and much more. The ongoing development of BlogEngine.NET can be followed at <a href="www.codeplex.com/.../a> where the daily builds will be published for anyone to download.</p>
<p>Good luck and happy writing.</p>
<p>The BlogEngine.NET team</p>',
'05/06/07',
'admin',
1);

INSERT INTO be_PostCategory (PostID, CategoryID)
VALUES (@postID, @catID);

INSERT INTO be_PostTag (PostID, Tag)
VALUES (@postID, 'blog');
INSERT INTO be_PostTag (PostID, Tag)
VALUES (@postID, 'welcome');


  

Mark Catheline United States |

Comments are closed
Recent Comments