среда, 9 октября 2013 г.

Как обновить Composite C1 CMS версии 3.2 к версии 4.0 вручную

На днях вышли инструкции по обновлению Composite C1 CMS версии 3.2 к версии 4.0 вручную.

Напомню, что Composite C1 CMS распространяется по двум лицензиям: платной и бесплатной. Причем версия этой CMS - одна и та же без каких-либо ограничений.

Одним из приятных преимуществ платной версии является автоматическое обновление системы к новой версии с помощью пакета расширения доступного из административной консоли (раздел "Система", подраздел "Пакеты"). Обновление происходит буквально в несколько кликов.

Если же вы пользуетесь бесплатной лицензией, то обновить вы систему тоже можете, но только вручную. Для этого компания Composite обычно публикует пошаговые инструкции.

Далее я представлю свой вольный перевод этих инструкций на английском языке. При разночтениях и недостающей информации, обращайтесь к оригиналу инструкций - на английском.

Это пошаговое руководство предназначено для технических специалистов. Перед тем как, начать обновление вручную, рассмотрите еще таких два варианта.
  1. Если вам нужно обновить коммерческий веб-сайт, и вам необходим инструмент для автоматического обновления, а также поддержка, вы можете выбрать один из планов для платной лицензии. Деньги, которые потратит ваш клиент, будет использоваться для финансирования этого проекта с открытым исходным кодом.
  2. Если вы хотите обновить частный сайт, некоммерческий сайт или сайт, связанный с сообществом, отправьте письмо на maw(собака)composite(точка)net, указав в нем идентификатор вашей инсталляции (в админке: Помощь / О Composite C1 / Installation ID) и веб-адрес вашего сайта. Вы можете получить доступ к автоматическому обновлению бесплатно.
Перед тем, как обновить свой сайт с помощью указанного ниже руководства, прочтите его целиком, чтобы иметь представление о том, что вам понадобиться для успешного обновления.


1. Подготовьтесь к обновлению

  1. Обязательно сделайте резервную копию своего сайта. Если ваш сайт работает на SQL, еще сделать резервную копию базы данных, которая им используется.
  2. Загрузите чистую версию Composite C1 4.0 c CodePlex: http://compositec1.codeplex.com/releases/view/107254 


2. Удалите некоторые пакеты расширения

  • Удалите пакет расширения Composite.Tools.PackageCreator, если он установлен.
После этого остановите сайт на веб-сервере (IIS, IIS Express и т.п.)


3. Обновите конфигурационные файлы


Загрузите и примените трансформационные файлы XSLT к конфигурационным файлам системы:
Для применения XSLT-файлов к файлам конфигурации, используйте Visual Studio:
  1. Откройте скачанный файл composite_config.xsl в Visual Studio.
  2. В меню "XML" выберите пункт "Start XSLT without debugging".
  3. Укажите файл ~/App_Data/Composite/Composite.config в качестве исходного документа для трансформации.
  4. Полученным в результате файлом (composite_config.xml), перезапишите ~/App_Data/Composite/Composite.config на сайте.
  5. Повторите шаги 1-4 для web_config.xsl и ~/Web.config.
  6. Полученным в результате файлом (web_config.xml), перезапишите ~/Web.config на сайте.
Для трансформации файлов конфигурации с помощью XSLT вы можете также воспользовться другими инструментами, например, http://www.xsltcake.com.

Важно! Так как обновление этих файлов конфигурации включает некоторые возможности, доступные только в версии 4.1, измените также следующие настройки в полученных файлах конфигурации:
  1. В файле ~/App_Data/Composite/Composite.config найдите и удалите атрибут со значением imageQuality="80"
  2. В файле  ~/Web.config найдите атрибут со значением targetFramework="4.5" и замените значение на "4.0": targetFramework="4.0"


4. Замените файлы и папки

  1. Распакуйте скачанный дистрибутив Composite C1 с CodePlex (см. выше "1. Подготовка")
  2. Скопируйте из дистрибутива и замените на сайте следующие файлы:

    ~\Bin*.* (Важно!  Кроме Composite.Generated.dll)
    ~\Composite*.* (Важно! Только файлы, папки - не нужно)
    ~\Renderers*.*
    ~\App_Data\Composite\app_offline.htm
    ~\App_Data\Composite\TreeDefinitions\UrlConfiguration.xml
    ~\App_Data\Composite\Configuration\C1ConsoleAccess.xml
    ~\App_Data\PageTemplates\web.config
    ~\App_Data\Razor\web.config
    ~\App_Data\UserControls\web.config
    ~\Frontend\Config\VisualEditor\Styles\core.css
    ~\Frontend\Config\VisualEditor\Images\smalltext.png
    ~\default.aspx
    ~\Global.asax
  3. Удалите следующие папки на вашем сайте, а затем скопируйте те же папки из дистрибутива на ваш сайт:

    ~\Composite\content\~\Composite\controls\
    ~\Composite\images\
    ~\Composite\localization\
    ~\Composite\schemas\
    ~\Composite\scripts\
    ~\Composite\services\
    ~\Composite\skins\
    ~\Composite\styles\
    ~\Composite\templates\
    ~\Composite\transformations\
  4. Удалите следующие папки и файлы на сайте, если они там есть:

    ~\App_Data\Composite\DataMetaData\IPageTemplate_7b54d7d2-6be6-48a6-9ae1-2e0373073d1d.xml~\App_Data\Composite\DataMetaData\Composite.Data.Types.IPageTemplate_7b54d7d2-6be6-48a6-9ae1-2e0373073d1d.xml
    ~\bin\CompositeC1Contrib.RazorFunctions.dll
    ~\bin\CompositeC1Contrib.Rendering.MasterPage.dll
    ~\Composite\flash\

5. Удалите устаревшие типы данных


При удалении указанных типов данных (см. ниже), используйте следующие шаги:
  1. Удалите связанный с типом данных XML файл из ~/App_Data/Composite/DataMetaData/*.xml
  2. Удалите хранилище данных:
    1. Если сайт работает на XML:
      1. Удалите связанную с типом данных запись в ~/App_Data/Composite/Configuration/DynamicXmlDataProvider.config
      2. Удалите связанный XML-файл хранилища из ~/App_Data/Composite/DataStores/*.xml
    2. Если сайт работает на SQL:
      1. Удалите связанную с типом данных запись в ~/App_Data/Composite/Configuration/DynamicSqlDataProvider.config
      2. Удалите связанную с типом данных таблицу в базе данных.
Удалить нужно устаревший тип данных:

Composite.Data.Types.IWhiteListedLocale

Если же при компиляции / в журнале системы будут возникать ошибки, проверьте существуют ли в вашей системе следующие устаревшие типы данных, и если существуют, тоже удалите их указанным выше способом:

Composite.Data.Types.ILogEntry
Composite.Data.Types.IAggregationDescription
Composite.Data.Types.ICompositionDescription
Composite.Data.Types.IPageAssociationVisability
Composite.Data.Types.IXhtmlEditorElementClassConfiguration
Composite.Data.Types.IDataFieldDescriptor
Composite.Data.Types.IDataFieldDescriptor_FormRenderingProfile
Composite.Data.Types.IDataFieldDescriptor_ValidatorFunctionMarkup
Composite.Data.Types.IDataTypeAssociationDescriptor
Composite.Data.Types.IDataTypeDescriptor
Composite.Data.Types.IDataTypeDescriptor_DataScope
Composite.Data.Types.IDataTypeDescriptor_KeyFieldName
Composite.Data.Types.IDataTypeDescriptor_StoreSortOrderFieldName
Composite.Data.Types.IDataTypeDescriptor_SuperInterface


6 . Обновите Razor-функции


Если сайт использовал CompositeC1Conrib для создания и использования Razor-функций:
  1. Откройте для редактирования каждую такую функцию и выполните шаги 2-5:
  2. Удалите:

    @using CompositeC1Contrib.RazorFunctions;@using CompositeC1Contrib.RazorFunctions.FunctionProvider;
    @using CompositeC1Contrib.RazorFunctions.Html;

  3. Замените:

    @inherits CompositeC1WebPage

    и

    @inherits CompositeC1Contrib.RazorFunctions.CompositeC1WebPage

    на:

    @inherits RazorFunction
  4. Замените:

    @Html.C1().Body(...)

    на:

    @Html.C1().Markup()
  5. Конвертируйте параметры функций по образцу с:

    [FunctionParameter("Include Parent Page", "Check the box if you want parent page to be displayed in navigation", false)]

    на:

    [FunctionParameter(Label = "Include Parent Page", Help = "Check the box if you want parent page to be displayed in navigation", DefaultValue = false)]

7. Обновите Главные страницы (Master Pages)


А. Если сайт использовал CompositeC1Conrib для создания и использования Главных страниц (Master Pages):
  1. Откройте для редактирования все файлы ~/App_Data/PageTemplates/*.master и выполните шаги 2-3 для каждого.
  2. Замените по образцу вставки заголовков страницы с:

    <rendering:Title ID="title" runat="server" />

    на:

    <c1:Title ID="title" runat="server" />
  3. Замените по образцу заполнители контента с:

    <rendering:Placeholder ID="aside" Title="Aside" [Default="true"] runat="server" />

    на:

    <c1:Render Markup="<%# aside %>" runat="server"  />
Б. А также:
  1. Откройте для редактирования все файлы ~/App_Data/PageTemplates/*.master.cs и выполните шаг 2 для каждого.
  2. Замените или добавьте по образцу пространства имен, наследование главных страниц MasterPagePageTemplate, информацию о заполнителях контента  с:

    public partial class _1_column__full_width : System.Web.UI.MasterPage
    {
    }

    на:

    using Composite.Core.Xml;
    using Composite.Plugins.PageTemplates.MasterPages;
    using Composite.Core.PageTemplates;
    public partial class Simple : MasterPagePageTemplate
    {
        public override Guid TemplateId
        {
            get { return new Guid("54d5a744-c31e-422d-8885-acd96721a351"); }
        }
        public override string TemplateTitle
        {
            get { return "Simple (master page)"; }
        }
        [Placeholder(Title="Content", IsDefault=true)]
        public XhtmlDocument content { get; set; }
        [Placeholder(Title="Aside")]
        public XhtmlDocument aside { get; set; }
    }
В. И еще:
  1. Откройте для редактирования все файлы ~/App_Data/PageTemplates/Frontpage.master.
  2. Замените:

    ... AutoEventWireup="true" CodeFile="1 column, full width.master.cs" Inherits="_1_column__full_width" %>

    на:

    ... AutoEventWireup="true" CodeFile="Frontpage.master.cs" Inherits="Frontpage" %>

8.  Завершите обновление

  • После обновления, запустите сайт на веб-сервере (IIS, IIS Express и т.п.)

Комментариев нет:

Отправить комментарий