BLOGas.lt
Sukurk savo BLOGą Kitas atsitiktinis BLOGas

Nuosava diegimo repozitorija Web Platform Installer pagrindu

Parašė Sergejus | 2011-04-26 14:56

Paskutiniu metu su kolegomis vystome idėją, kaip sukurti mūsų sistemos centrinę diegimo repozitoriją. Kadangi sistema yra kompleksinė ir sudaryta iš daugelio modulių, aplikacijų ir trečių šalių programinės įrangos (IIS, SQL Server ir panašiai), sistemos diegimas į naujus serverius nėra trivialus uždavinys su daug priklausomybių ir griežtai apibrėžta diegimo tvarka. Mums norėtųsi visą serverio diegimo procesą suvesti iki kelių mygtukų paspaudimo.

Kadangi dviračio išradinėti nesinorėjo, pradėjome analizuoti kokius egzistuojančius sprendimus mes galime pernaudoti. Iš karto krito į akis Microsoft Web Platform Installer 3.0.

image

Web Platform Installer, arba sutrumpintai WebPI, atlieka labai panašią užduotį: leidžia instaliuoti produktus ir aplikacijas, sužiūri visas priklausomybes ir automatiškai parsiunčia trūkstamus komponentus. Atrodo patraukliai, bet kaip WebPI praplėsti pagal mūsų poreikius? Pasirodo, WebPI produktų metaduomenų aprašymui naudoja Atom ir turi galimybę praplėsti produktų sąrašą nurodant nuosavus Atom failus. Dar daugiau, visą tai galima daryti ne tik iš grafinės sąsajos, bet ir iš komandinės eilutės, tereikia parsisiųsti WebPI Command Line.

Įsitikinę, kad WebPI vertas tolimesnio nagrinėjimo, perėjome prie jo funkcionalumo ir galybių analizės. Geriausias būdas išmokti kaip veikia ir ką gali WebPI – išanalizuoti esamus Atom failus kataloge %localappdata%\Microsoft\Web Platform Installer. Taip pat labai padėjo WebPI schemos aprašas. Žemiau pateiksiu tokio Atom failo pavyzdį:

<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <webpiFile version="3.0.0.0" />

  <title>Tools Platform Installer 3.0 Feed</title>
  <link href="http://www.microsoft.com/web/webpi/3.0/ToolsProductList.xml" />
  <updated>2009-3-17T16:30:00Z</updated>
  <author>
    <name>Microsoft</name>
    <uri>http://www.microsoft.com/</uri>
  </author>
  <id>http://www.microsoft.com/web/webpi/3.0/ToolsProductList.xml</id>

  <!-- Resources -->
  <resourcesList>
    <resources>
      <culture>en</culture>
      <!-- included in file -->
    </resources>
    <resources>
      <culture>de</culture>
      <url>http://www.microsoft.com/web/webpi/3.0/resources/ToolsProductList_de.xml</url>
    </resources>
  </resourcesList>

  <!--Language Codes-->
  <languages>
    <language default="true">
      <languageId>en</languageId>
      <name resourceName="Lang_en_Name">English</name>
    </language>
  </languages>

  <!-- Windows Azure SDK -->
  <entry>
    <productId>WindowsAzureSDK</productId>
    <title resourceName="Entry_WindowsAzureSDK_Title">Windows Azure SDK</title>
    <version>1.4</version>
    <summary resourceName="Entry_WindowsAzureSDK_Summary">
	The Windows Azure SDK Version 1.4 provides developers with tools and APIs for building
    scalable services for deployment to Windows Azure.
	</summary>
    <longSummary resourceName="Entry_WindowsAzureSDK_LongSummary">
	The Windows Azure Platform is an Internet-scale cloud services platform hosted through
    Microsoft data centers. The platform includes the Windows Azure operating system and a
    set of rich developer services.
	</longSummary>
    <link href="http://msdn.microsoft.com/en-us/library/dd179367.aspx" />
    <author>
      <name>Microsoft Corporation</name>
      <uri>http://www.microsoft.com/</uri>
    </author>
    <images>
      <icon>http://www.microsoft.com/web/media/gallery/apps-screenshots/wa_vs_graphic.png</icon>
    </images>
    <published>2011-04-11T12:00:00Z</published>
    <discoveryHint>
      <or>
       <discoveryHint>
        <registry>
          <keyPath>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\ServiceHosting\v1.0</keyPath>
          <valueName>FullVersion</valueName>
          <valueValue>1.4.20227.1419</valueValue>
        </registry>
       </discoveryHint>
       <discoveryHint>
        <registry>
          <keyPath>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\ServiceHosting\v1.0</keyPath>
          <valueName>FullVersion</valueName>
          <valueValue>1.4.20407.2049</valueValue>
        </registry>
       </discoveryHint>
      </or>
    </discoveryHint>
    <dependency>
      <and>
        <dependency>
          <productId>ASPNET</productId>
        </dependency>
        <dependency>
          <productId>CGI</productId>
        </dependency>
        <dependency>
          <productId>NETFramework35</productId>
        </dependency>
        <dependency>
          <productId>PowerShell</productId>
        </dependency>
        <dependency>
          <productId>IISManagementConsole</productId>
        </dependency>
      </and>
    </dependency>
    <updates>
      <productId>AzureSDKRefresh_14</productId>
    </updates>
    <installers>
      <installer>
        <id>1</id>
        <languageId>en</languageId>
        <architectures>
          <x86 />
        </architectures>
        <osList>
          <os>
            <minimumVersion>
              <osMajorVersion>6</osMajorVersion>
              <osMinorVersion>0</osMinorVersion>
              <spMajorVersion>0</spMajorVersion>
            </minimumVersion>
            <osTypes>
              <Server />
              <Ultimate />
              <Enterprise />
              <Business />
              <HomePremium />
            </osTypes>
          </os>
        </osList>
        <eulaURL>http://www.microsoft.com/web/webpi/eula/EulaWindowsAzureSDKFINAL.htm</eulaURL>
        <installerFile>
          <!-- size of the package in KBs -->
          <fileSize>9349</fileSize>
          <installerURL>http://download.microsoft.com/download/3/3/2/3321A9FA-64C3-463F-981A-4E17FC29B15B/WindowsAzureSDK-x86.exe</installerURL>
          <displayURL>http://msdn.microsoft.com/en-us/library/dd179367.aspx</displayURL>
        </installerFile>
        <helpLink>http://msdn.microsoft.com/en-us/library/dd179367.aspx</helpLink>
        <installCommands>
          <cmdline>
            <exe>%InstallerFile%</exe>
            <commandLineArguments>/quiet /norestart</commandLineArguments>
          </cmdline>
        </installCommands>
      </installer>
      <installer>
        <id>2</id>
        <languageId>en</languageId>
        <architectures>
          <x64 />
        </architectures>
        <osList>
          <os>
            <minimumVersion>
              <osMajorVersion>6</osMajorVersion>
              <osMinorVersion>0</osMinorVersion>
              <spMajorVersion>0</spMajorVersion>
            </minimumVersion>
            <osTypes>
              <Server />
              <Ultimate />
              <Enterprise />
              <Business />
              <HomePremium />
            </osTypes>
          </os>
        </osList>
        <installerFile>
          <!-- size of the package in KBs -->
          <fileSize>9264</fileSize>
          <installerURL>http://download.microsoft.com/download/3/3/2/3321A9FA-64C3-463F-981A-4E17FC29B15B/WindowsAzureSDK-x64.exe</installerURL>
          <displayURL>http://msdn.microsoft.com/en-us/library/dd179367.aspx</displayURL>
        </installerFile>
        <helpLink>http://msdn.microsoft.com/en-us/library/dd179367.aspx</helpLink>
        <installCommands>
          <cmdline>
            <exe>%InstallerFile%</exe>
            <commandLineArguments>/quiet /norestart</commandLineArguments>
          </cmdline>
        </installCommands>
      </installer>
    </installers>
  </entry>
</feed>

Kaip matyti, failo struktūra yra aiški ir nereikalaujanti išsamaus paaiškinimo. Norėtųsi aptarti tik keletą elementų:

  • productId – unikalus produkto ID, kuris bus naudojamas tiek norint instaliuoti produktą, tiek jį įtraukiant kaip priklausomybę ar atnaujinimą;
  • discoveryHint – naudojamas tikrinant ar produktas jau yra suinstaliuotas, nusakant registry, file ar msiProductCode;
  • dependency – nurodo nuo kokių kitų produktų priklauso duotasis produktas; gali būti naudojami or/and operatoriai; visos priklausomybės bus sudiegtos (jeigu dar nėra) prieš diegiant duotąjį produktą;
  • updates – nurodo kokius atnaujinimus reikia sudiegti duotajam produktui; gali būti naudojami or/and operatoriai; visi atnaujinimai bus sudiegti sudiegus duotąjį produktą;
  • installers – išvardinami visi įmanomi diegėjai, nurodant kokia architektūra ir operacijų sistema yra palaikomos; jeigu diegėjas yra universalus – viską galima sutraukti į vieną įrašą;
  • installCommands – naudojamas elemento installers viduje ir nusako kaip bus vykdomas produkto diegimas; galimos reikšmės: cmdline, msiInstall ar msuInstall; praktikoje mums užteko cmdline.

Žinodami kaip atrodo ir iš ko susideda WebPI Atom failas, nesunkiai pasirašėme savo. Dabar tik reikėjo prijungti nuosavą Atom failą prie WebPI ir WebPI Command Line. Pirmu atveju, tai daroma iš nustatymų:

image

image

Antru atveju, tiesiogiai komandinėje eilutėje:

WebpiCmdLine.exe /AcceptEula /XML:http://localhost/products.xml /Products:MyProduct

Aukščiau pateikta komanda sudiegs MyProduct ir visas meta duomenyse nurodytas priklausomybes bei atnaujinimus. Paprasta ir efektyvu!

Jeigu susidomėjote, dar keletas naudingų nuorodų:

Rodyk draugams

Konferencija Lietuvos Agile diena

Parašė Sergejus | 2011-04-25 10:52

Gegužės 11 dieną vyks konferencija skirta IT specialistams, vadovams, projektų vadovams ir kitiems besidomintiems Agile metodų naudojimo patirtimi Lietuvoje - Lietuvos Agile diena. Konferencijoje aš darysiu techninį pranešimą “Kaip Agile skatina gerųjų praktikų panaudojimą”. Pranešimo metu šnekėsiu apie tai, kaip Agile skatina naudoti tokias praktikas kaip:

  • nuolatinė integracija (continuous integration);
  • naktinis surinkimas (nightly build);
  • modulių (unit) testai;
  • automatizuoti funkciniai testai;
  • automatizuotas diegimas ir diegimo paketai;
  • nuolatinis diegimas (continuous deployment);
  • ir kitos.

Jeigu susidomėjote – daugiau informacijos konferencijos puslapyje.

Rodyk draugams

Skaidrės iš .NET naudotojų grupės susitikimo

Parašė Sergejus | 2011-04-18 17:00

Su uždelsimu, bet talpinu skaidres iš paskutinio Lietuvos .NET naudotojų grupės susitikimo:

Rodyk draugams

Naujienos iš MIX11

Parašė Sergejus | 2011-04-17 16:07

Štai ir pasibaigė MIX11, tad nusprendžiau glaustai apibendrinti pagrindines konferencijos naujienas.

Internet Explorer 10 Preview 1 (parsisiųsti)

Microsoft ir toliau tęsia iteracinį Internet Explorer kūrimą. Apart IE 10 Preview 1 versijos anonso taipogi buvo pranešta, kad komanda pereina prie 12 savaičių iteracijų, t. y. naujas tarpinės IE versijas nuo šiol matysime kas 3 mėnesius.

ASP.NET MVC 3 Tools Update (parsisiųsti)

Kaip ir seka iš pavadinimo, atsinaujino MVC įrankiai, o ne pats MVC. Iš pagrindinių patobulinimų verta paminėti:

  • HTML5 schemos palaikymas Visual Studio;
  • jQuery nuo šiol automatiškai įtraukiamas kaip NuGet paketas;
  • šalia jQuery Microsoft pridėjo ir kitą atviro kodo JavaScript biblioteką Modernizr, skirtą nustatyti ar naršyklė palaiko nurodytas HTML5 galimybes;
  • Entity Framework 4.1 (prieš tai žinomas kaip Entity Framework Code First);
  • Scaffolding galimybės prieinamos tiesiogiai iš Visual Studio dialogo lango.

Orchard 1.1 (parsisiųsti)

Atsinaujino ir Microsoft atvirojo kodo turinio valdymo sistema Orchard. Lyginant su ankstesne 1.0 versija, bent jau man Orchard 1.1 atrodo žymiai solidžiau ir arčiau konkurentų.

Windows Azure atnaujinimai

Windows Azure produktų šeimoje buvo irgi nemažai anonsų:

  • atsinaujino Windows Azure SDK, kuris leidžia naudoti Visual Studio Web Deploy iteratyviam aplikacijų diegimui į Windows Azure;
  • prieinama galutinė antroji Windows Azure AppFabric Access Control Services (ACS) versija su galimybe naudotis Microsoft Live, Google, Yahoo, Twitter ir kitomis autentifikavimo priemonėmis;
  • Windows Azure AppFabric Caching paskirstytas duomenų kešavimas perėjo į CTP stadiją;
  • Windows Azure CDN nuo šiol „iš dėžutės“ palaiko IIS Smooth Streaming galimybę (CTP stadijoje);
  • anonsuotas naujas produktas Windows Azure Traffic Manager (CTP stadijoje), skirtas valdyti lankytojų srautą tarp skirtingų duomenų centrų.

Windows Phone 7 „Mango“ atnaujinimas

Pagal pristatytų naujų galimybių kiekį, būtų galima drąsiai „Mango“ pavadinti Windows Phone 7.5, kuris turėtų pasirodyti šį rudenį. Svarbiausi atnaujinimai:

  • Multi-tasking galimybės palaikymas naudojant audio/video/įspėjimo/foninius/parsisiuntimo ir kitus virtualius agentus;
  • Silverlight 4 for Windows Phone;
  • SQL CE palaikymas (įskaitant ir LINQ-to-SQL);
  • soketų palaikymas (galimybė kurti TCP naudojančias aplikacijas);
  • ženklūs patobulinimai susiję su greitaveika bei atminties valdymu;
  • plytelių (tiles) ir pranešimų (push notifications) funkcionalumas gerokai praplėstas;
  • galimybė paprasčiau integruoti XNA su Silverlight.

Kartu su Windows Phone 7 „Mango“ atnaujinimu atsinaujins ir Windows Phone 7 programavimo įrankiai:

  • Isolated Storage Explorer;
  • atminties ir procesoriaus profiliuotojas;
  • palaikomas sensorių, geo-lokacijos ir kelių paspaudimų emuliavimas;
  • galimybė daryti emuliatoriaus ekrano nuotraukas;
  • suderinamumas su Visual Studio Async CTP SP1 Refresh (async raktažodžio palaikymas Windows Phone 7 įrenginiuose).

Kitos naujienos

Tiek trumpai tų naujienų!

Rodyk draugams

MIX11 pagrindiniai pristatymai gyvai 12 ir 13 dienomis

Parašė Sergejus | 2011-04-12 09:11

Jau šį antradienį ir trečiadienį (12-13) 19:00 valandą Lietuvos laiku vyks gyva transliacija iš konferencijos MIX11 pagrindinių pristatymų. Nepraleiskite ir žiūrėkite!

ATNAUJINTA

Visi MIX11 įrašai prieinami čia.

Rodyk draugams

Mano skaidrės "Web Scale with NoSQL"

Parašė Sergejus | 2011-04-09 17:40

Mano skaidrės “Web Scale with NoSQL” iš Infoshow Web konferencijos:

Rodyk draugams

IIS 7 diegimo automatizavimas

Parašė Sergejus | 2011-04-03 22:55

Ar kada nors norėjote automatizuoti IIS 7 ir jo modulių diegimą? Žinokite, tai yra be galo paprasta, tereikia pasinaudoti standartne Windows programa Package Manager Command-Line (pkgmgr.exe):

pkgmgr /iu:IIS-WebServerRole;IIS-WebServer;IIS-CommonHttpFeatures;IIS-StaticContent;IIS-DefaultDocument;IIS-DirectoryBrowsing; IIS-HttpErrors;IIS-HttpRedirect;IIS-ApplicationDevelopment;IIS-ASPNET;IIS-NetFxExtensibility;IIS-ASP;IIS-CGI;IIS-ISAPIExtensions;IIS-ISAPIFilter;IIS-ServerSideIncludes;IIS-HealthAndDiagnostics;IIS-HttpLogging;IIS-LoggingLibraries;IIS-RequestMonitor;IIS-HttpTracing;IIS-CustomLogging;IIS-ODBCLogging;IIS-Security;IIS-BasicAuthentication;IIS-WindowsAuthentication;IIS-DigestAuthentication;IIS-ClientCertificateMappingAuthentication;IIS-IISCertificateMappingAuthentication;IIS-URLAuthorization;IIS-RequestFiltering;IIS-IPSecurity;IIS-Performance;IIS-HttpCompressionStatic;IIS-HttpCompressionDynamic;IIS-WebServerManagementTools;IIS-ManagementConsole;IIS-ManagementScriptingTools;IIS-ManagementService;IIS-IIS6ManagementCompatibility;IIS-Metabase;IIS-WMICompatibility;IIS-LegacyScripts;IIS-LegacySnapIn;IIS-FTPPublishingService;IIS-FTPServer;IIS-FTPManagement;WAS-WindowsActivationService;WAS-ProcessModel;WAS-NetFxEnvironment;WAS-ConfigurationAPI

Kaip matote, Package Manager pagalba galima sudiegti tik jums reikalingus IIS moduliu. Paprasta ir greita – dar vienas žingsnis pilno automatizavimo link.

Rodyk draugams