Windows Web アプリケーション ギャラリー向けアプリケーション パッケージング ガイド

公開日: 2009 年 3 月 18 日 (作業者: iisteam (英語))

更新日: 2009 年 9 月 24 日 (作業者: iisteam (英語))

概要

本ドキュメントおよび関連ソフトウェアの Beta または RC バージョンのユーザーの皆様へ

本ドキュメントおよび Web アプリケーション ギャラリーの Beta および RC バージョンのテストにご協力いただきありがとうございます。 貴重な多くのフィードバックをいただいております。 これらのアプリケーション パッケージのインストールに使用する 2 つの主要コンポーネント (Web 配置ツールおよび Web Platform Installer) の Release To Web (RTW) バージョンに、いくつかのフィードバックを組み入れました。

manifest.xml と parameters.xml のさまざまな要素および属性を熟知されているユーザーは、いくつかの変更点にお気付きになると思います。 本ガイドの全体に数多くの新機能が記載されています。 追加部分については、NEW というタグを付けています。

Web サイトの作成者は Windows Web アプリケーション ギャラリーを使用して、IIS で使用できる無料の共有アプリケーションを簡単に検索、学習、インストールすることができます。 また、ご自身で作成したアプリケーションの既存の配布パッケージに構成ファイルをいくつか追加するだけで、ギャラリーに掲載できます。

NEWパッケージングの概要

ユーザーは、ギャラリーで見つけたアプリケーションを自分のシステムで可能な限り簡単かつ迅速に実行したいと考えます。 マイクロソフトは、ユーザーの環境とアプリケーションを設定する際に役立つ 2 つの製品を提供します。

Web Platform Installer (WebPI) は、Microsoft Web Platform のダウンロード、インストール、および最新コンポーネントについての最新情報の入手を簡単に実行できるようにする無料のツールで、 アプリケーションをインストールするユーザーのメインのインターフェイスです。 WebPI は、前提条件となるすべてのソフトウェアがシステムにインストールされ、構成されていることを確認し、 ユーザーが提供したデータに基づいてアプリケーションをインストールして構成します。 Web 配置ツールは、WebPI がこれらのアプリケーションをインストールする際に使用されます。

Web 配置ツール (WDT) は、ギャラリーから利用できる ASP.NET および PHP アプリケーションの配置とインストールに使用するツールです。 WDT は、ファイルとディレクトリの設定、データベースとの連携、ファイル ACL の設定、およびユーザーが入力したデータ (パラメーター) の適切な場所への置き換えを担当します。 本ガイドの大部分の情報は、アプリケーション開発者が、自分のアプリケーションを WDT と連携するように構成する作業の支援を目的としています。 WDT には、ここで説明した使用方法以外にも、多くの機能があります。

パッケージングのプロセス

以下の手順の一覧は、正常に機能するアプリケーションを Web アプリケーション ギャラリーに掲載するための最も一般的なプロセスです。

  1. Web アプリケーション ギャラリーの基本方針 を確認します。 ギャラリー内のすべてのアプリケーションは、これらの基本方針に従っている必要があります。
  2. 本ガイドを活用して、WDT アプリケーション パッケージを作成しテストします。これには以下が含まれます。
    • IIS 上でアプリケーションを実行する方法について学習します。
    • 基本アプリケーション パッケージを作成します。
    • データベースの構成をパッケージに追加します。
    • この配布物からファイルをコピーします。
    • ファイルおよびディレクトリの ACL (アクセスとアクセス許可の規則) を理解して設定します。
    • パッケージ リファレンスを参照し、以下を行います。
      • パラメーター値の検証について学習します。
      • アプリケーションのインストール パラメーターをローカライズします。
      • アプリケーション パッケージを構成するファイルおよび形式について学習します。
    • すべてを圧縮します。
    • アプリケーション パッケージをテストします。
  3. 提出フォーム を使用し、パッケージをテスト用にギャラリーに提出します。
  4. 問題を解決する必要がある場合は、アプリケーション ギャラリー チームとやり取りします。
  5. Windows Web アプリケーション ギャラリーで、自分のアプリケーションを確認します。

IIS 上でアプリケーションを実行する

IIS 7.0 では、web.config という構成ファイルが導入されました。このファイルは、アプリケーションのどこにでも配置でき、該当ディレクトリおよびその下のディレクトリに影響する Web サーバー ディレクティブを含めるために使用されます。 現在、多くのアプリケーションで .htaccess というファイルが配布されていますが、これは同様の一連の機能を提供します。 「.htaccessファイルをweb.configに変換する際の注意事項」を参考にしてください。

既定のドキュメントを設定する

web.config ファイルを使用して、IIS 向けの自分のアプリケーションの既定のドキュメントを指定できます。 通常、以下のようになります。

<configuration> 
  <system.webServer> 
    <defaultDocument> 
      <files> 
        <remove value="index.php" /> 
        <add value="index.php" /> 
      </files> 
    </defaultDocument> 
  </system.webServer> 
</configuration> 


この例にある太字の remove エントリは必須です。 index.php に以前の定義がある場合は、このエントリによってその定義が削除され、既定のドキュメントの一覧の一番上に新しい定義が配置されます。 以前の定義がない場合は、この remove は無視されます。

URL の書き換え

IIS 7.0 には、URL 書き換えというモジュールがあります。 これは完全な正規表現に基づく、書き換えルール エンジンです。 これらのルールは、IIS マネージャーを使用して構成したり、直接構成したりできます。 URL 書き換え モジュールで、mod_rewrite ルールのインポートと変換を実行できます。 ** http.example.com へのすべての要求を ** http://www.example.com に変換するシンプルな書き換えルールは、以下のコードになります。

<configuration> 
  <system.webServer> 
    <rules> 
      <rule name="Imported Rule 1" stopProcessing="true"> 
        <match url="^(.*)$" ignoreCase="false" /> 
        <conditions> 
          <add input="{HTTP_HOST}" pattern="^example\.com$" /> 
        </conditions> 
        <action type="Redirect" redirectType="Permanent" url="http://www.example.com/{R:1}" /> 
      </rule> 
    </rules> 
  </system.webServer> 
</configuration> 


NEW要求のフィルタリング

IIS は、要求のフィルタリング モジュールを使用し、指定された条件に基づいてファイルやディレクトリへのブラウザー アクセスを制限します。 URL フィルタリング モジュールは、さまざまな URL へのアクセスおよび要求のセキュリティを確保するための強力なエンジンです。 詳細については、iis.net の「要求フィルターの使用方法」を参照してください。

要求のフィルタリングを使用し、インクルード ファイル、ログ ファイルなどの特定の種類のファイルに対するアクセスをブロックする場合は、以下のようなコードになります。

<configuration> 
  <system.webServer> 
    <security> 
      <requestFiltering> 
        <denyUrlSequences> 
          <add sequence=".inc"/> 
          <add sequence=".log"/> 
        </denyUrlSequences> 
      </requestFiltering> 
    </security> 
  </system.webServer> 
</configuration> 


詳細については、「Apache mod_rewrite ルールのインポート」を参照してください。

IIS 6.0 および 5.1

IIS の過去のバージョンには、URL 書き換えモジュールが存在しません。このモジュールの主な用途は、特定のファイルまたはディレクトリに対するアクセスを制限することです。IIS の旧バージョンでも、同様の保護を行うことができます。これらの保護の設定方法の詳細については、IIS パスのロックについての記事 (英語) を参照してください。

基本パッケージを作成する

アプリケーション パッケージを作成するには、パッケージに含まれている項目を説明する簡単な Manifest.xml ファイルから始めます。

<MSDeploy.iisApp> 
  <iisApp path="application" /> 
</MSDeploy.iisApp> 


既存パッケージ内のファイルのみをインストールする場合は、この単純な XML マニフェストで十分です。 配布パッケージのルート ディレクトリにこのファイルを含めると、アプリケーションを WebPI でインストールできるようになります。 この例での ** path の値は、パッケージ内にアプリケーション ファイルが格納されているディレクトリの名前、およびアプリケーションがインストールされる Web サイトの名前の両方に使用されます。

インストール中にユーザーから追加情報を得る場合は、以下の任意のオプションを追加できます。

インストールする場所をユーザーにたずねる

既定では、アプリケーションは Manifest.xml ファイル内の iisapp ディレクティブの path 要素と同じ名前の Web サイトにインストールされます。 これと同様のパラメーターを parameters.xml ファイルに追加する必要があります。 parameterEntry には、"ProviderPath" の type と "iisapp" の scope が必要です。 このパラメーターは、ユーザーに Web サイトおよびアプリケーション名の指定を求めるために使用されます。

<parameters>  
  <parameter  
    name="AppPath" 
    defaultValue="Default Web Site/application"  
    tags="iisapp"  
    >  
    <parameterEntry  
      type="ProviderPath"  
      scope="iisapp"  
      match="application"  
    />  
  </parameter>  

この scope では、パラメーター化される Manifest.xml ファイル内のディレクティブの種類が特定され、match には、変更されるディレクティブを指定する正規表現が含まれています。 正規表現は、iisApp プロバイダーの path 属性に基づいて評価されます。

メモ: IIS 5.1 にアプリケーションをインスールするユーザーには、このパスの Web サイト部分の選択肢はありません。 IIS 5.1 では、単一の Web サイト (常に Default Web Site) のみがサポートされます。

データベースを追加する

ほとんどの Web アプリケーションは、データベースを使用して情報を格納します。 WebPI を使用してインストールされるアプリケーション パッケージでは、MS SQL または MySQL データ ストアのサポート、データベース スクリプトの実行、データベースの作成を実行できます。 SQL データベースを追加するには、Manifest.xml を確認し、dbfullsql ディレクティブを追加します。 MySQL の場合は、dbmysql を使用します。

<msdeploy.iisapp> 
  <iisapp path="Application" /> 
  <dbfullsql path="install.sql" /> 
</msdeploy.iisapp> 


この Install.sql スクリプトはパッケージのルートに置かれ、任意の SQL スクリプトを含めることができます。単にデータベースの存在を確認することのみが目的であれば、空でも問題ありません。 アプリケーションのセットアップに必要な数のスクリプトを使用できます。 複数の SQL スクリプトを使用する場合は、それぞれについて manifest.xml にデータベース プロバイダーを指定する必要があります。 これらのスクリプトすべての実行において、単一のデータベース資格情報セットを使用する必要があります。

Parameters.xml ファイルに格納されている、一般的に使用されるパラメーターを持つデータベースに接続する方法を次の例に示します。 これらのパラメーターは、データベース接続に使用する接続文字列の作成に使用されます。 接続文字列の作成に使用されるこの接続文字列および 4 個のパラメーターは、すべて必須のパラメーターです。

メモ - 以下の例のすべてのパラメーターには、過去のバージョンからの変更点があります。 最も重要な変更点は次のとおりです。

  • すべての description が削除されました。 これらのパラメーターすべては、タグと関連付けられた既定の description を持ちます。 詳細については、ローカライズに関するセクションを参照してください。
  • タグが追加され、その多くは必須になりました。 詳細については、タグに関するセクションを参照してください。
  • パラメーター検証のコンセプトが導入されました。 詳細については、パラメーターの検証に関するセクションを参照してください。
  • 多くのパラメーターに関して、コメントが詳細になりました。 既定以外を選択する場合に、コメント内の詳細説明の一部が、これらのパラメーターの説明として役立つことがあります。
<parameters >  

   <! -- General Note - If you are using MySQL, you will need to change 
  the "SQL" tag to "MySQL" for all of the parameters below.-- >  

   <! -- The Database Server parameter is used to identify the database 
  server that the Web Deployment Tool will connect to for execution of 
  the SQL script(s) required for installation. For SQL (Express or 
  Server) this field points to the server and database instance being 
  used. Typically, this will be './SQLEXPRESS' or './SQLSERVER', where 
  the '.' specifies the local machine, and 'SQLEXPRESS' and 
  'SQLSERVER' are the default instance names. For MySQL Databases, the 
  Database Server will be a host name for the system that the database 
  is running on. In many cases, this will be 'localhost' to specify 
  that MySQL is running on the local machine. -- >  

   <parameter   
     name = "dbServer"   
     defaultValue = ".\SQLEXPRESS"   
     tags = "SQL, dbServer" >  
   </parameter>  

   <! -- The Database Name parameter specifies the name of the database 
  on the server that will be used by the application. If this database 
  doesn't exist, the Web Deployment Tool will attempt to create it 
  using the specified credentials. This parameter can also be applied 
  to configuration files or SQL scripts as needed.-- >  

   <parameter   
     name = "dbName"   
     defaultValue = "Application"   
     tags = "SQL, dbName" >  
     <parameterEntry   
       type = "TextFile"   
       scope = "install.sql"   
       match = "PlaceholderForDbName"  />  
   </parameter>  

   <! -- Prompts for the database username and fills it into the 
  database scripts. The SQL tag indicates it is a parameter required 
  for SQL, the DbUsername tag indicates this is a Db username Note 
  that this is the User Name that the application uses to communicate 
  with the database. If the user does not exist prior to the 
  installation, this user will be created by the install.sql scripts. 
  -- >  

   <parameter   
     name = "dbUsername"   
     defaultValue = "ApplicationUser"   
     tags = "SQL, dbUsername" >  
     <parameterEntry   
       type = "TextFile"   
       scope = "install.sql"   
       match = "PlaceholderForDbUsername"  />  
   </parameter>  

   <! -- Prompts for the database password and fills it into the 
  database scripts. The SQL tag indicates it is a parameter required 
  for SQL, the DbUserPassword tag indicates this is a Db password. 
  Since this is a new password being set for SQL or SQL Express, we 
  use a Regular Expression validationString to make sure that the 
  password meets the minimum complexity requirements. This Regular 
  Expression ensures that Passwords will contain at least (1) upper 
  case letter, at least (1) lower case letter, at least (1) number or 
  special character, and be least (8) characters in length. While 
  MySQL does not have password strength restrictions by default, it is 
  considered a good security practice to enforce this minimum level of 
  password complexity for MySQL as well. -- >  

   <parameter   
     name = "dbUserPassword"   
     tags = "New, Password, SQL, dbUserPassword" >  
     <parameterValidation   
       type = "RegularExpression"   
       validationString = "(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$"  />  
     <parameterEntry   
       type = "TextFile"   
       scope = "install.sql"   
       match = "PlaceholderForDbUserPassword"  />  
   </parameter>  

   <! -- Prompts for the Database Administrator's user name. This is 
  'sa' by default for SQL, and 'root' by default for MySQL. When using 
  the Web PI, the user will only be prompted for this information if 
  the user is creating a new database for the application. If the user 
  is specifying an existing database to use, then the Database 
  Username and Password are substituted for the Administrator's 
  credentials to run the SQL scripts. -- >  

   <parameter   
     name = "dbAdminUsername"   
     defaultValue = "sa"   
     tags = "SQL, dbAdminUsername" >  
   </parameter>  

   <! -- Prompts for the Database Administrator's password. This is used 
  in conjunction with the Database Administrator's user name under the 
  same circumstances. The SQL tag indicates it is a parameter required 
  for SQL. The DbAdminPassword tag indicates it should be used when 
  the user is creating a new database. -- >  


   <parameter   
     name = "dbAdminPassword"   
     tags = "Password, SQL, dbAdminPassword" >  
   </parameter>  

   <! -- This is the hidden database connection string used to run the 
  database scripts. The SQLConnectionString tag identifies this as a 
  connection string for SQL or SQL Express to the UI. The Validate tag 
  tells the UI to validate that this connection string works before 
  proceeding with the rest of the installation. The credentials used 
  for this connection string are the Administrative credentials if the 
  user is creating a new database, and the application user's 
  credentials if the user is not. Note that when using any 
  installation mechanism other than the WebPI, this connection string 
  will use the Administrative credentials only.-- >  

   <parameter   
     name = "ConString"   
     defaultValue = "Server={dbServer};Database={dbName};uid={dbAdminUsername};Pwd={dbAdminPassword};"   
     tags = "SQL, Hidden, SQLConnectionString, Validate" >  
     <parameterEntry   
       type = "ProviderPath"   
       scope = "dbfullsql"   
       match = "install.sql"  />  
   </parameter>  
</parameters> 

データベースについてのメモ

SQL および MySQL の両方のデータベースについて、アプリケーション パッケージと共に使用する際のメモを利用できます。 これらのメモでは、SQL と MySQL の両方のデータベースについて、パッケージと共に使用する際にさまざまなデータベースで最も効果的だった方法が詳しく説明されています。

NEWアプリケーションで VistaDB、SQLite、またはフラット ファイルをデータベース オプションとして使用できる場合は、アプリケーション パッケージを構成する方法についてのメモを参照してください。

ファイルをコピーする

セットアップ前に新しい名前でコピーする、または新しい場所にコピーする必要がある構成ファイルがアプリケーションに含まれている場合は、Manifest.xml ** ファイル内の alias ディレクティブを使用してその処理を行うことができます。 パスは両方ともパッケージ内の該当ファイルの場所への相対パスです。 コピー先のファイルは、元のパッケージ内にあった場合は、該当ファイルが取り出される場所として指定されます。

<alias 
  from="Application\sites\default\sample.settings.php" 
  to="Application\sites\default\settings.php" /> 


ファイルとディレクトリのアクセス許可を設定する

既定では、WDT は既存のアクセス許可を変更することなくすべてのファイルとディレクトリをインストールします。 この方法では、ほとんどの場合、アプリケーションはインストールされたファイルおよびディレクトリに対して読み取りアクセスのみを持ちます。 アプリケーションがファイルまたはディレクトリに対して書き込みを行う必要がある場合は、setAcl ディレクティブを使用して該当するファイルまたはディレクトリを Manifest.xml ファイルに指定できます。 setAclResourceType 要素は、パスがファイルなのかディレクトリなのかを定義します。

  <setAcl 
    path="application/sites/default/settings.php" 
    setAclResourceType="File" 
    setAclAccess="Modify" 
    setAclUser="anonymousAuthenticationUser" /> 


適切なディレクトリに ACL が確実に適用されるようにするには、隠しパラメーターを記述して、インストールされる場所である AppPath に対して相対的に指定したディレクトリに ACL が確実に適用されるようにする必要があります。

  <!-- This is the parameter that is used to set ACLs, it's set to the application path filled in by the user --> 
  <parameter 
    name="SetAclParameter1" 
    defaultValue="{AppPath}/sites/default/settings.php" 
    tags="Hidden"> 
    <parameterEntry 
      type="ProviderPath" scope="setAcl" 
      match="Application/sites/default/settings.php" /> 
  </parameter> 


ファイルやディレクトリに ACL を設定しないと、ほとんどの場合 ACL は "Read" になります。 ACL は限定的なので、書き込みアクセスを許可しても、必ずしも読み取りアクセスが許可されるわけではありません。 ファイルやディレクトリに書き込む必要がある場合は、"Read" と "Write" を追加する必要があります。 ディレクトリ内のファイルを列挙できるようにする場合は、"ListDirectory" を追加する必要があります。 書き込みアクセスでは、変更アクセスは許可されないことに注意してください。 ディスクにいったん書き込んだファイルを変更する必要がある場合は、明示的に "Modify" アクセスを設定する必要があります。 一部のアクセス許可には他のアクセス許可が含まれています。 たとえば、"Modify" には "Read"、"Write"、"Execute"、および "Delete" が含まれます。

メモ: アプリケーションのルートに ACL を適用して、アプリケーション ツリー全体に "Write" または "Modify" を許可することは、セキュリティ上のリスクが高いと考えられます。 ACL は、アプリケーションのすべての必須機能を許可しながら、できる限り限定して細分化する必要があります。

NEWUnix や Linux 形式のアクセス許可になじみがある方向けに、ここで設定される特権は、"Owner" アクセス許可に相当します。 Group および World 特権は、Web 展開ツール外でさまざまな ACL を使用して設定できますが、"Owner" クラスのアクセス許可はここでのみ設定できます。 以下の表に、Linux のさまざまなビット マスクでのアクセス許可に相当する、Windows のアクセス許可を示します。

Linux Windows Linux Windows
0 "許可なし" に相当するものはありません 4 Read
1 Execute 5 ReadAndExecute
2 Write 6 Read、Write
3 Write、Execute 7 Modify

各種のユーザー権限およびその説明の一覧を参照できます。 アプリケーションが正しく機能するために必要とされる以外のアクセス権を許可しないでください。「ファイル システム ACL を介した IIS のコンテンツのセキュリティ保護」を参考にしてください。

anonymousAuthenticationUser というトークンは、Web サイトで匿名認証用に構成された ID として自動的に評価されます。 この ID は Web サイト管理者が構成するので、アプリケーションがファイルの所有権を処理するために独自のユーザーを必要としない限りは、PHP アプリケーションに対しては anonymousAuthenticationUser を使用し、ASP.NET アプリケーションに対しては setAclUser を使用しないことが最善です。

PHP アプリケーションは、通常、FastCGI 設定で偽装が "True" (匿名ユーザーとして実行) に設定されるので、匿名ユーザーとして実行されます。 ASP.NET アプリケーションは、通常、ワーカー プロセス ID (アプリケーション プール ID) として実行されます。 setAclUser が指定されていなければ、setAcl ディレクティブはアプリケーションのアプリケーション プール ID を認証用の ID として使用します。

すべてを圧縮する

まだ作成していない場合は、アプリケーションの Zip パッケージを作成します。 この Zip ファイルは、Windows Explorer、WinZip、または Linux の zip コマンドのみで作成できます。 manifest.xml、parameters.xml、および install.sql の各ファイルはすべて、パッケージのルート ディレクトリに配置します。 アプリケーションの残りの部分は、以下の略図のように、ルートの下のサブフォルダーに配置します。


MyApp.zip 
\ 
 +--MyApp root folder 
 +--Manifest.xml (required) 
 +--Parameters.xml (required) 
 +--Install.sql (provisioning script for the database if you need it) 
    \ 
     +--MyApp-admin sub folder 
     |--MyApp-content sub folder 
     |--MyApp-includes sub folder 
     |--readme.txt 
     |--license.text 
     |--web.config 
     |--various other files  

サブディレクトリのレイアウトは、作成者が自由に決定できることに注意してください。 この例は、アプリケーション用の各 WDT XML ファイルの場所を示したものであり、サブツリーの形式を規定したものではありません。

パッケージが完成したら、ファイルの SHA-1 ハッシュ署名を生成する必要があります。この署名は、Web Platform Installer によって使用され、ユーザーがダウンロードしたパッケージが作成者が意図したものと同一であることが確認されます。SHA-1 ハッシュを生成するツールをお持ちでない場合は、https://www.microsoft.com/downloads/details.aspx?FamilyID=B3C93558-31B7-47E2-A663-7365C1686C08&displaylang=en (英語) から File Checksum Integrity Verifier を入手できます。

NEWメモ ギャラリー内のすべてのパッケージを MD5 ハッシュから SHA-1 ハッシュに変更する予定です。

パッケージをテストする

Web 配置ツールを使用して、パッケージをテストできます。 Web 配置ツールの最新のリリースは、Web Platform Installer を使用して入手できます。 Web 展開ツールは、Windows オペレーティング システムの Windows XP 以降で実行できます。 Web 配置ツールは、.Net 5.2 用の MySQL Connector を使用して MySQL と通信します。 このコネクタは、MySQL の Web サイト (英語) からダウンロードできます。

Web 配置ツールの UI

Windows Vista、Windows 7、Windows Server 2008 または Windows Server 2008 R2 上で実行している場合は、IIS マネージャー内から Web 配置ツールを使用してパッケージをテストできます。 その他の Windows バージョンでは、コマンド ライン バージョンを使用してテストする必要があります。

  1. システムに変更を加える前に、必ずバックアップを作成してください。 IIS 7.0 サーバーをバックアップするには、次のコマンドを実行します。

    %windir%\system32\inetsrv\appcmd add backup "PreMsDeploy" 
    

    このコマンドを実行すると、主要な IIS 構成ファイルが含まれている %windir%\system32\inetsrv\config ディレクトリのバックアップが作成されます。 他のアプリケーションや Web サイトが実行されているサーバー上でパッケージをテストする場合は、テストを開始する前にこれらもバックアップする必要があります。

  2. [スタート] ボタンをクリックし、[ファイル名を指定して実行] をクリックします。次に、「inetmgr」と入力して IIS マネージャーを開きます。

  3. IIS マネージャーで、サーバーのノードおよびサイトのノードを展開し、[Default Web Site] を選択します。

  4. 右側の [操作] ウィンドウで、[アプリケーションのインポート...] リンクをクリックして、パッケージ ウィザードを起動します。

  5. 作成したパッケージを選択します。

  6. [アプリケーション パッケージのインストール] ダイアログに、アプリケーションとデータベースが表示されます。

  7. パラメーター ページで、パラメーターとその説明を検討し、それらが目的に一致していること、およびユーザーがすべて記述するのに十分な情報が提供されていることを確認します。

  8. [次へ] をクリックし、パッケージをインストールします。

  9. [概要] ページに、パッケージからインストールされたアイテムについての概要が表示されます。 [詳細] タブには、追加されたアイテムについての詳細情報が表示されます。

Web 配置ツールのコマンド ライン

Web 配置ツールをコマンド プロンプトで使用して、パッケージをテストすることもできます。 これは、Windows XP および Windows Server 2003 での唯一のテスト方法です。コマンド ラインからアプリケーションをテストする最も簡単な方法は、Web 展開ツールを呼び出してパラメーターの値を設定するバッチ ファイルを使用する方法てす。

NEW - 簡略的な構文:

"C:\Program Files\IIS\Microsoft Web Deploy\msdeploy.exe" ^
 -verb:sync -source:Package="application.zip" ^
 -dest:auto ^
 -setParam:dbAdminUsername="root" ^
 -setParam:dbAdminPassword="<password>" ^
 -setParam:dbUsername="appuser" ^
 -setParam:dbUserPassword="<password>" ^
 -setParam:dbServer="localhost" ^
 -setParam:dbName="application"  ^
 -setParam:AppPath="Default Web Site/application" 

バッチ ファイルの使用についてのメモ

  • 使用するパラメーター名は、Parameters.xml ファイルのパラメーター名と一致させます。
  • すべての値が環境と一致していることを確認します。
  • 既定値を使用する場合、DefaultValue が定義されているパラメーターは省略できます。
  • "Hidden" のタグが付けられたパラメーターであっても、DefaultValue が定義されていない場合は、必ず設定する必要があります。
  • このバッチ ファイルを実行するには、Application Path で使用されている Web サイトが存在している必要があります。
  • スクリプトを実行するコマンド プロンプト セッションは、管理者権限で実行する必要があります。
  • 各行の末尾の "^" は、コマンドが次の行に続いていることをバッチ ファイル プロセッサに伝えるためのものです。

msdeploy.exe -help を実行すると、Web 展開ツールのコマンド ライン引数の完全なドキュメントを参照できます。

アプリケーションを登録する

パッケージの準備が整ったら、Windows アプリケーション ギャラリーのフォームに記入し、作成したアプリケーションをギャラリーに通知することができます。

CodePlex についてのメモ

アプリケーションが CodePlex でホストされている場合は、パッケージ固有の URL が提供されます。 次のような URL になります。

http://YourApplicationName.codeplex.com/Project/Download/FileDownload.aspx?DownloadId=nnnnn 

URL の先頭のアプリケーション名、および DownloadID の「nnnnn」の部分は自分のアプリケーションに置き換えられます。

次の段階

アプリケーションがギャラリーに受け付けられたら、そのアプリケーションのギャラリー ページへの直接リンクを自分の Web サイトに掲載できます。 さらに、自分のアプリケーションと、インストールすることを選択した前提要素を指定して Web Platform Installer を起動するリンクを掲載できます。 これらのリンク、および一緒に使用できるグラフィックの詳細については、このページを参照してください。

更新プログラム

アプリケーションの更新プログラムをリリースするときは、以下の手順に従っていただけるようお願いいたします。

  1. スケジュールが許す限り、新しいパッケージについて事前に当社に通知します。
  2. すべてのリンクが新しいバージョンに向けられているという確認を当社から受け取るまで、旧バージョンを削除しないようにします。
  3. 新しいアプリケーション パッケージを作成してテストします。
  4. 新しいパッケージの名前が前のパッケージと異なっていることを確認します。
  5. 新しいパッケージの SHA-1 ハッシュを生成します。
  6. 当社とのやり取りの際に使用したアドレス宛てに、新しいパッケージについての以下の情報を含む電子メールを送信します。
    • 該当する場合は、セキュリティ リリースとしての更新プログラムであることを示すメモ
    • パッケージの URL
    • パッケージの SHA-1 ハッシュ
    • パッケージのファイル サイズ
    • 更新プログラムのリリース ノートや変更ログへのリンク (任意)
  7. 新しいパッケージのテストと発行に最長で 1 週間かかります。
  8. すべてのテストが完了し、パッケージが利用可能になったら、当社からパッケージ作成者に通知します。 この時点で、必要に応じて旧パッケージを安全に削除できます。

Web アプリケーション パッケージの基本および参考情報

Windows にアプリケーションを簡単に展開するために、Web アプリケーション ギャラリー内の各アプリケーションには、Web Platform Installer で Web 配置ツールを使用できるようにする XML ファイルが少なくとも 2 つ含まれています。 これらのファイルは、manifest.xml および parameters.xml です。 さらに、多くのアプリケーションは、セットアップ前のインストール中に WDT によって実行される SQL スクリプトを追加します。 PHP アプリケーションには、先に述べたように web.config ファイルが含まれています。 ASP.NET アプリケーションには、ASP.NET の設定用の web.config が含まれています。 これら 4 種類のファイルについて、以下で説明します。

manifest.xml

manifest.xml ファイル ("マニフェスト" と呼ぶこともあります) は、WDT にアプリケーションの処理方法を伝えるメイン ファイルです。 これは、"プロバイダー" と呼ばれる要素から構成される XML ファイルです。 これらのプロバイダーは、ユーザー入力で変更できます。 この入力は、parameters.xml ファイルに記述します。 一般的なルールとして、マニフェスト内の各プロバイダーに対して少なくとも 1 つのパラメーターが存在する必要があります。 使用できるプロバイダーを以下に示します。

  • iisapp - これはマニフェスト内で唯一の必須プロバイダーです。 iisapp 要素は、単一の必須属性である path を持っています。 この path には、アプリケーション パッケージ (Zip ファイル) 内に存在する、アプリケーションの実行に必要とされるファイルとディレクトリを含むサブフォルダーを指定します。 アプリケーションがインストールされるときに、指定したフォルダーの中身が Web サイトのアプリケーション フォルダーのルートに配置されます。 アプリケーションごとに 1 つしか存在できません。
  • dbfullsql - このプロバイダーは、SQL または SQL Express データベース インスタンスへの接続を示します。 この path 属性は必須で、データベースに対して実行される SQL スクリプトを示します。 データベースへの接続に必要な資格情報およびデータベース情報は、ユーザーがパラメーターを使用して指定します。 既定では、このプロバイダーは、各 SQL ファイルを、必要に応じてコミットまたはロールバックできる単一のデータベース トランザクションであるかのように扱います。 スクリプトの内容が、独自のトランザクションを保持するものである場合、またはトランザクション外で実行する必要があるコンポーネントが含まれている場合は、transacted 属性を指定し、その値を false に設定できます。 このプロバイダーの詳細については、本ガイド内の詳しい説明、およびデータベースについてのメモも参照してください。
  • dbmysql - このプロバイダーは、MySQL データベース エンジンへの接続を示します。 この path 属性は必須で、データベースに対して実行される SQL スクリプトを示します。 データベースへの接続に必要な資格情報およびデータベース情報は、ユーザーがパラメーターを使用して指定します。 MySQL の既定であるセミコロン (;) とは異なるコマンド区切り文字の定義が必要なストアド プロシージャが SQL スクリプトに含まれている場合は、新しい区切り文字を任意指定の commandDelimiter 属性で指定できます。 commandDelimiter を指定した場合、removeCommandDelimiter 属性を指定してその値を true に設定することで、区切り文字を SQL から削除できます。 セミコロン (;) 以外の区切り文字を使用する場合に、removeCommandDelimiter を使用することになります。 このプロバイダーの詳細については、本ガイド内の詳しい説明、およびデータベースについてのメモも参照してください。
  • setacl - このプロバイダーは、アクセス制御リスト (ACL) をファイルまたはディレクトリに適用するために使用されます。 ACL は、ユーザーまたはアプリケーションがファイルやディレクトリに対して持つアクセス権を定義するために使用されます。 既定では、WDT によってインストールされるものはすべて、アクセス権の変更なしにインストールされます。 このようにすると、ほとんどの場合、ASP.NET および PHP でこれらのファイルを読み取ることはできますが、書き込むことはできません。 アプリケーションに追加のアクセス権が必要な場合は、このプロバイダーを使用して設定できます。
  • alias - アプリケーション パッケージ内のファイルを別の名前でコピーする、または別の場所にコピーする必要がある場合に、alias を使用します。 このプロバイダーは、通常、サンプル構成ファイルを提供するアプリケーションで使用されます。 WDT が登場する前は、こういったアプリケーションの多くで、ユーザーがサンプル ファイルをコピーして手動で編集する必要がありました。 alias プロバイダーを使用すれば、WDT がコピーを作成し、パラメーターを使用して必要な任意の値を適用します。

parameters.xml

parameters.xml ファイルは、エンド ユーザーと WDT および WPI とのやり取りを定義します。 ユーザーの環境用にアプリケーションのインストールをカスタマイズできるように、記入が必要なフォームとしてユーザーにパラメーターが提示されます。 Parameters.xml は、パラメーターという要素から構成される XML ファイルです。 各パラメーターは、WDT がインストールを実行するために収集する必要があるデータ アイテムを示します。 これらのパラメーターは、マニフェスト プロバイダーの属性の変更やアプリケーション配布内の任意のファイルの対象テキストの置換に使用したり、他のパラメーターの値のコンポーネントとして使用することができます。

パラーメーター要素には、以下のような多くの属性があります。

  • name - これは、parameters.xml ファイルのスコープ内でパラメーターを一意に識別する必須属性です。 パラメーターの変数名としても使用されます。
  • friendlyName - friendlyName は、パラメーターが定義するフォーム要素上の名前として、ほとんどの UI で使用されます。 friendlyName が定義されていない場合は、初期値としてパラメーターの名前が UI に表示されます。
  • description - description は、フォーム要素のキャプションを指定します。 これらは、パラメーターに何が期待されるのか、またそれがどのように使用されるかについての説明をユーザーに提供するために頻繁に使用されます。
  • defaultValue - ユーザーに表示されるパラメーターにおいて、パラメーターの値の提案として defaultValue がフォームに挿入されます。 ユーザーに非表示のパラメーター (後述の hidden タグの説明を参照してください) では、パラメーターの値の計算に defaultValue が使用されます。
  • tags - tags とは、WDT および WPI に追加情報を提供し、パラメーターの分類に役立てるための単語または語句をコンマで区切ったリストです。 詳細については、タグに関するセクションを参照してください。

パラメーターに、以下の既知の 10 個のタグのうちのいずれかを付けると、そのパラメーターの friendlyName および description が自動的に UI に表示されます。 これらの要素を指定した場合、XML に記述した値が既定値よりも優先されます。 ただし、特段の理由がない限りは、既定値を使用するようにしてください。

既知のパラメーター タグ

  • MySqlConnectionString
  • SqlConnectionString
  • DbAdminPassword
  • DbAdminUsername
  • DbName
  • DbServer
  • DbUsername
  • DbUserPassword
  • IisApp
  • SetAcl

各パラメーターには、上記の属性以外に、さまざまな機能を実行するサブ要素を含めることができます。 これらの要素について、以降で説明します。

NEW ParameterEntry の type

パラメーター代入を指定する場合に、4 種類の ParameterEntry の type を使用できます。 開発者は、これらの type それぞれをパラメーター代入の対象を識別するための別々の方法として使用できます。

ParameterEntry 要素には、インスタンスごとに以下に示す必須の 3 つの属性があります。

  • type - type は、パラメーター置換の対象を識別する機構を指定します。
  • scope - scope は、対象を検索するファイルまたはコンポーネントを識別します。
  • match - match は、対象を識別するための検索パラメーターを指定します。

ParameterEntry の type それぞれに、scope 属性および match 属性を定義するための固有の形式があります。 3 つの要素すべてを組み合わせたときに、アプリケーション パッケージ内の少なくとも 1 つと一致して識別できる必要があります。 parameterEntry はアプリケーションに必要な数だけ含めることができます。 代入の type が複数の場合、または代入の対象が複数の場合 (代入が必要なファイルが 2 つある場合など) は、それぞれについて個別の parameterEntry 要素が必要です。

TextFile

type が TextFile の場合、scope は、ファイルまたは一連のファイルを対象として識別する正規表現です。 match は、置換される文字列を示す正規表現です。 WDT は、scope で識別されるすべてのファイルに対して、match で見つかったすべての文字列にパラメーターの代入を適用します。 parameterEntry の type が TextFile のものに対して正規表現を定義する場合は、match と scope の両方をできる限り精密な表現に制限することが重要です。

本ガイド内の例のほとんどで、ParameterEntry の type に TextFile が使用されています。 ソースに対する完全な制御が可能で、かつ対象となる文字列を定義できる場合は、ファイル内の対象を識別する方法として TextFile が最も信頼性の高い方法になります。 ソースに対する完全な制御ができない場合は、対象を一意に識別するために、parameterEntry の type に TextFilePosition を使用できます。 この状況は、ファイルの変更済みおよび未変更のバージョンの両方の中に特定のデータを期待するという、アプリケーションの別の側面を持つ構成ファイルに対して、最も一般的に発生します。

たとえば、WDT で使用するために記述された SQL スクリプト内に配置する必要のある、データベースのユーザー名を指定できます。 WDT は、「PlaceholderForDbUsername」という文字列を探し、その文字列にユーザーのパラメーター入力を代入します。 このスクリプトは次のようになります。

  <parameter name="dbUsername" defaultValue="appUser" tags="MySQL">
    <parameterEntry type="TextFile" scope="install.sql" match="PlaceholderForDbUsername" />
  </parameter>
XmlFile

多くのアプリケーションでは、データや構成に XML ファイルが使用されています。 .NET アプリケーションのすべて、および PHP アプリケーションの多くで、Web サイトとアプリケーションの構成情報を格納するために web.config ファイルが使用されています。 XML ファイル内で対象を識別するときに使用できる、最も信頼性の高い機構は XPath クエリです。

type が XmlFile エントリの場合、TextFile と同様に、対象ファイルの識別に正規表現を使用してスコープを定義します。 match は XPath クエリとして指定します。XmlFile エントリでは、ファイル内の一致する XPath すべてが置換されます。 つまり、対象とする一致のみが置換されるように、詳細な XPath クエリを使用する必要があります。

たとえば、アプリケーションの web.config ファイル内に SQL 接続文字列が含まれていることがあります。 このファイルには、異なる種類のデータベースを使用可能にするために、複数の connectionString が存在することがあります。

<connectionStrings>
  <clear />
  <add name="SQLiteDbConnection" connectionString="Data Source=|DataDirectory|application_data.sqlite;Version=3;" />
  <add name="SqlServerDbConnection" connectionString="Data Source=(local);Initial Catalog=Application;Integrated Security=true;Application Name=Application" />
</connectionStrings> 

次の例で生成される接続文字列パラメーターを使用して、構成ファイル内の値をユーザーが入力した値で置換できます。 この場合、XPath クエリは、クエリ内の要素のパスに従って、configuration 要素の下の connectionString の下で、name 属性が SqlServerDbConnection である最初の add 要素を検索します。 次に、その要素の connectionString 属性の値を、パラメーター化された値で置換します。

<parameter 
  name="ConnectionString For Config" 
  defaultValue="DataSource={dbServer};Database={dbName};uid={dbUsername};Pwd={dbPassword};" 
  tags="Hidden"> 
  <parameterEntry 
    type="XmlFile" 
    scope="\\web.config$" 
    match="/configuration/connectionStrings/add[@name='SqlServerDbConnection']/@connectionString" /> 
</parameter> 

詳細については、XPath および XPath クエリの構築方法についての記事を参照してください。

ProviderPath

ProviderPath の type は、manifest.xml ファイル内で指定されているプロバイダーにパラメーターを適用する際に使用されます。 アプリケーション パッケージを開発しているときに、ユーザーのシステム環境の詳細すべてを知ることはできません。 そのため、プロバイダーを指定するときは、期待されるプロバイダーの種類に一致するものそれぞれに対して既定値を関連付けます。 多くの場合、manifest.xml ファイル内の各ディレクティブに対して、parameters.xml ファイル内に parameterEntry 要素が 1 つずつ存在します。

ProviderPath エントリの scope は、パラメーター化されるプロバイダーの種類を示します。 match は、そのプロバイダー要素の path 属性の値を一意に識別する正規表現を指定します。 次の表で、マニフェスト内で許可される各プロバイダー用の置換を説明します。

プロバイダー パラメーターが適用される要素 既定値 置換される値
iisApp path アプリケーションのファイルとフォルダーを含んでいるパッケージ内のフォルダー名に一致する、指定されたパス このパスは、アプリケーションのファイルとフォルダーがインストールされるディレクトリへのシステム パスで置換されます。 これは、通常、iisApp をタグの 1 つとして持つ Application Path という名前のパラメーターとして指定されます。
setAcl path ACL が適用される、パッケージ内のファイルまたはフォルダーへのパスに一致する、指定されたパス このパスは、setAcl プロバイダーを識別するパラメーターの値で置換されます。 setAcl パラメーターは、通常、タグの 1 つとして hidden を含んでいます。 この値は、Application Path パラメーターにファイルまたはディレクトリへの残りのパスを追加したものを使用し、defaultValue を設定して構築されます。
dbFullSql および dbMySql connectionString - 属性指定なし インストールの一部として実行する SQL ファイルのパスと名前に一致する、指定されたパス connectionString は、parameters.xml ファイル内で構築されたもので置換されます。 このパラメーターは、通常 hidden であり、データベースおよびデータベースに接続するための資格情報を識別する他のパラメーターから構築されます。 WebPI および WDT では、すべての関連パラメーターが指定されているときに、接続文字列を構築するためのインテリジェント UI が提供されます。 一致するパラメーターが存在しない場合は、connectionString は空白のままになり、データベース接続はシステムの既定値で行われます。
TextFilePosition

ファイル内の文字列を置換するために正規表現を使用しても、十分な正確さが得られない場合があります。 たとえば、ある文字列を、ファイルのある部分では置換し、他の部分では置換しない場合があります。 また、正規表現では、変更する文字列を一意に識別できないこともあります。 これらの状況が存在する場合に、parameterEntry の type である TextFilePosition を使用できます。

type が TextFilePosition エントリの場合、TextFile と同様に、対象ファイルの識別に正規表現を使用してスコープを定義します。 match には、3 つの整数をセミコロン (;) で区切って続けて指定します。 最初の整数には、ファイル内の行番号を指定します。 2 番目の整数には、その行の先頭からの文字数を指定します。 3 番目の整数には、置換する文字数を指定します。 match の数値で指定した対象の長さに改行文字が含まれる場合、改行文字を越えてパラメーター置換が行われるので、注意して対象を指定する必要があります。

たとえば、TextFile の例でのデータベース ユーザー名も構成ファイルに含めるように指定する場合があります。 このファイル内の対象は、正規表現では一意に識別できません。 TextFilePosition を使用すれば、ファイルの内容ではなく、ファイル内での位置に基づいて特定の文字列を対象にできます。

  <parameter name="dbUsername" defaultValue="appUser" tags="MySQL">
    <parameterEntry type="TextFile" scope="install.sql" match="PlaceholderForDbUsername" />
    <parameterEntry type="TextFilePosition" scope="application\\config.php" match="22;20;12" />
  </parameter>

パラメーターのタグ

さまざまな UI に対してパラメーターの表示および使用方法を伝えるために、パラメーターのタグを使用します。 これらのタグの中には、特定の状況で必須となるものがあります。 特定のタグが必須になる場面と、タグの使用方法を以下に説明します。

  • iisapp - アプリケーションをインストールするアプリケーション パスとしてパラメーターを示します。 defaultValue は、ほとんどのインストーラーで表示されます。 defaultValue には、「Default Web Site/application1」のように指定する必要があります。ここで「Default Web Site」はサーバーの既定の Web サイト、「application1」はその Web サイトの下のサブディレクトリまたは仮想ディレクトリです。 Web PI およびその他のインストーラーは、ユーザーが希望するアプリケーションのインストール場所が未知の場合に、このデータを使用してインストール先の Web サイトの場所を提示します。 これは必須タグです。 このタグを持ち、対象として iisApp プロバイダーが指定されているパラメーターが少なくとも 1 つ必要です。 NOTE: IIS 5.1 では、この Web サイト部分は常に「既定の Web サイト」です。 ユーザーは、この Web サイトに対して既定の下のディレクトリを選択して、アプリケーションを分離しておくことができます。
  • Hidden - Hidden パラメーターは、インストール UI でユーザーに表示されません。 Hidden パラメーターには、defaultValue が設定されている必要があります。 これらのパラメーターは、ハードコーディングされた既定値の設定、または計算される既定値の設定に使用されます。 ハードコーディングされた既定値は、将来の使用のためにパラメーターを定めるときに使用されることがあります。 計算値は、他のパラメーターからパラメーターを構築するために使用されます。 計算値を構築するときは、他のパラメーターの値が必要な場所に、そのパラメーターの名前を {} で囲んで配置することで、そのパラメーター値を参照できます。 このタグの一般的な使用方法については、例の中の接続文字列パラメーターを参照してください。
  • SQL または MySQL - これらのパラメーターは、特定のデータベースとの関連で使用されます。 マニフェストに SQL と MySQL の両方のパラメーターが含まれている場合は、どちらのデータベースを使用するかを UI で選択でき、選択したデータベースに関連するパラメーターのみ提示されます。  
  • Password - 既知のパスワードとして使用されるフィールドを示します。 UI では、パスワードの値が隠されます。
  • New - Password タグと一緒に使用したときに、新しいパスワードの設定に使用されるフィールドを示します。 UI ではパスワードの値が隠され、ユーザーに確認が求められます。 「New,Password」のように使用します。
  • dbUsername、dbUserPassword、dbAdminUsername、dbAdminPassword、dbServer、dbName - アプリケーション パッケージをインストールする UI の中には、データベース作成を UI 自体で処理するものがあります。 ユーザーが既にデータベースを作成している場合は、ユーザーがデータを 2 回入力する必要がないように、こうした UI は管理資格情報をシームレスに隠して埋め込む操作を正しく行います。 UI がデータベース作成を処理する場合は、変更する必要のあるパラメーターがこれらのタグで識別されます。 メモ - manifest.xml 内に SQL または MySQL プロバイダーが存在する場合は、それぞれこれらのタグの 1 つを含む 6 つのパラメーターが parameters.xml に存在する必要があります。
  • NEW SQLConnectionString、MySQLConnectionString - フィールド (通常は Hidden のもの) がデータベースへの接続文字列として使用されることを示します。 UI の中には、この接続文字列を上記の dbXxxx タグと共に使用して、特定のダイアログ ボックスを表示するものがあります。
  • NEW Validate - Validate は、接続文字列のタグのいずれかと一緒に指定する場合にのみ使用できます。 Validate は、インストールの正しい実行、およびインストール中に実行される SQL スクリプトのための、有効な接続文字列を指定します。 この機能の実装方法は、UI に任されています。 Web PI では、データベース資格情報が検証されてから、ユーザーが残りのインストールに進むことが許可されます。
  • NEW VistaDB、SQLite、FlatFile - これらのタグは、これらのフラット ファイル データの種類で使用されるパラメーターを識別します。 相当するプロバイダーは manifest.xml にはありません。 WebPI およびその他の UI は、parameters.xml ファイル内でこれらのタグを認識します。 データベース タグの種類が複数の場合 (たとえば SQL、MySQL、SQLite、VistaDB すべてが同じ parameters.xml にある場合)、UI はユーザーに対して、アプリケーション用データベース エンジンの選択肢を提示します。 ユーザーがデータベース エンジンを選択すると、他のエンジンのタグが付けられていて選択されなかったすべてのパラメーターが無視されます。

NEW パラメーターの検証

パラメーターの検証には 3 つの種類があります。 これらのいずれも指定されていない場合、ユーザーに対して、パラメーターの値を入力するためのシンプルなテキスト ボックスが表示されます。 これら 3 つの検証の種類およびその構文について以下で説明します。

  • AllowEmpty - ほとんどの UI で、隠されていないパラメーターに対しては値が必要とされます。 検証の type に AllowEmpty を指定すると、値が存在しない、または空の値を許容することを指定できます。 AllowEmpty は、他のパラメーター検証の種類と一緒に使用することも、単独で使用することもできます。 AllowEmpty の構文は、次のとおりです。

      <parameter name="AllowEmptyParameter"> 
        <parameterValidation type="AllowEmpty" /> 
      </parameter> 
    
    
    
  • Boolean - Boolean パラメーターは、シンプルな True/False の 2 値の選択です。 UI によって異なりますが、これらの選択のために、チェックボックスが 1 つ、またはラジオ ボタンが 2 つユーザーに提示されます。 Boolean の値の置換は、他のパラメーターの方法と同じです。 Boolean の置換値は、True または False のいずれかです。 True または False 以外の Boolean 値が必要な場合は、値を 2 つのみ設定した Enumeration を使用します。 Boolean の構文は次のとおりです。

      <parameter name="BooleanParameter"> 
        <parameterValidation type="Boolean" /> 
      </parameter> 
    
    
    
  • Enumeration - Enumeration を使用すると、ユーザー入力を、許容される明確な値のリストに制限できます。 これは、ほとんどの UI でドロップダウン リスト ボックスで実装され、ユーザーがリストから値を 1 つ選択できるようになっています。 validationString 内では、すべての空白文字は許容される値の一部として含められます。 したがって、パラメーター代入に空白文字を含める場合以外は、コンマの両側に空白文字を入れないでください。 Enumeration の構文は、次のとおりです。

      <parameter name="Enumeration Parameter"> 
        <parameterValidation type="Enumeration" validationString="value1,value2,value3,value4" /> 
      </parameter> 
    
    
    

    現時点では、コンマ (,) をエスケープして列挙の値の一部にコンマを含める方法はありません。

  • Regular Expression - 正規表現での検証を使用すると、ユーザーには、検証されないパラメーターを入力するときのようなシンプルなテキスト ボックスが表示されます。 次に、ユーザーがそのフォームを送信してインストールの次の部分に進むときに、テキスト ボックス内のエントリが RegularExpression の validationString と比較されます。 正規表現を指定する方法の詳細については、MSDN の正規表現についてのドキュメント、またはRegular-Expressions.Info の Web サイト (英語) を参照してください。 正規表現による検証の構文は、次のとおりです。

      <parameter name="RegEx Parameter"> 
        <parameterValidation type="RegularExpression" validationString=".+" /> 
      </parameter> 
    
    
    

    正規表現の場合、空の値を許容する正規表現を指定しても、ほとんどの UI では値が要求されます。値が存在しないまたは空の値になることがある値を指定するには、以下の例のように、parameterValidation の type に allowEmpty を追加します。

      <parameter name="RegEx Parameter2"> 
        <parameterValidation type="RegularExpression,allowEmpty" validationString="^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$" /> 
      </parameter> 
    
    
    

    ここで、先の 2 つの例における正規表現を説明します。

    1. ".+" - これは、パラメーター エントリに、任意の種類の文字が少なくとも 1 文字 "必ず ** " 含まれている必要があることを指定します。 また、".*" を使用して、パラメーター エントリに、任意の種類の文字が 1 文字以上含まれていても "よい ** " (つまり存在しなくてもよい) ということを指定します。
    2. "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$" - これは、電子メール アドレスを検証するためのシンプルな表現です。 不正確なアドレスをすべて捕らえることはできませんが、ほとんどを捕らえることができる優れた基本表現です。 この正規表現自体は、値が存在しないまたは空の値のパラメーターを許容しませんが、 ここでは type 属性に allowEmpty を含めたので、空の値のパラメーターも受け入れられます。

NEW データベース資格情報の検証

アプリケーション パッケージに SQL または MySQL データベース プロバイダーが含まれている場合は、インストール処理の他のステップの前に UI で検証される一連のデータベース資格情報を指定できます。 WebPI では、アプリケーション用のすべてのパラメーターが記入されて、ユーザーが [次へ] ボタンを押したときに、タグ付けされた接続文字列が検証されます。 指定したデータベースおよびサーバーに接続するために提供された資格情報を使用して、WebPI によって検証が行われます。 検証に失敗した場合、ユーザーにその旨が通知され、必要に応じてデータベース パラメーターを更新するために前の画面に戻されます。 他の UI では、同様の機能を提供する検証ボタン、検証ダイアログなどの機構が提供されます。 検証に使用するパラメーターは、タグに関するセクションで説明した Validate タグで識別されます。

NEWパラメーターの国際化

WebPI および Web 配置ツールには、英語および以下の言語を含む10 種類の言語にローカライズされたバージョンが用意されています。

  • 日本語
  • スペイン語
  • ドイツ語
  • フランス語
  • イタリア語
  • 韓国語
  • ロシア語
  • 中国語 (中国)
  • 中国語 (台湾)

ユーザーのシステムの既定の場所が "en" 以外であることを WebPI が検出すると、翻訳を利用できるパラメーターすべてがユーザーのシステム ロケールを使用して表示されます。

WDT には、各パラメーターの friendlyName の翻訳が含まれていて、パラメーターのキャプションとして使用されます。 また、WDT には "description" の翻訳も含まれています。これらは、パラメーターの目的についてユーザーに情報を伝えるために、キャプションの下に表示されます。

特定のパラメーターは、ユーザーのシステムの言語に基づいて、これらの言語の 1 つに自動的に翻訳されます。 以下の一覧にあるタグが付けられたパラメーターは、自動的に翻訳されます。 パラメーター内に description または friendlyName 属性が存在する場合は、この自動翻訳が行われないことに注意してください。

  • MySqlConnectionString
  • SqlConnectionString
  • DbAdminPassword
  • DbAdminUsername
  • DbName
  • DbServer
  • DbUsername
  • DbUserPassword
  • IisApp
  • SetAcl

上記の、既知の 10 個のパラメーターに対しては、WDT が自動的に生成するパラメーターの description と friendlyName を使用することを強く推奨します。 こうすることで、ユーザー側のエクスペリエンスがより一貫性のあるものになり、今後 WDT に追加される新しい言語を活用できるという利点もあります。 必要に応じて、既定の翻訳が存在しないパラメーターに対して独自の翻訳を指定できます。 これを行うには、parameters.xml ファイルのパラメーター要素内で、代替の description および friendlyName を提供します。 パラメーターの既定の description はパラメーター要素の属性の 1 つとして指定しますが、翻訳は個別の要素として指定します。 以下に、その例を示します。

<parameters>
  <parameter 
    name="AppPath" 
    friendlyName="Application Path" 
    description="Full site path where you want to install your application (for example, Default Web Site/Application)."
    tags="iisApp"
    >
    <description 
      culture="en">Full site path where you want to install your application (for example, Default Web Site/Application).</description>
    <description 
      culture="de">Vollständiger Pfad, unter dem Sie Ihre Anwendung installieren möchten (z.B. Standardwebsite/Anwendung).</description>
    <friendlyName
      culture="en">Application Path</friendlyName>
    <friendlyName
      culture="de">Anwendungs Pfad</friendlyName>
  </parameter>
</parameters> 


例についてのメモ:

  • UI には、システム ロケールと culture 属性が一致する description が表示されます。 一致するものがない場合は、UI には既定の description が表示されます。
  • 上の例のように「de」とだけ指定した場合、de-DE、de-AT などの「de」を含むすべての cluture で、この翻訳が使用されます。
  • iisApp は、自動的に翻訳される 10 個のパラメーターの 1 つなので、既定の翻訳が必要性を満たしていない場合を除いて、このパラメーターには翻訳を指定しないようにします。
  • friendlyName と description の両方に翻訳を指定する必要があります。 friendlyName をどこかに指定しないと、UI では常にパラメーター名が使用されます。

一般的な ISO カルチャ コードについては、MSDN で確認できます。

xxxx.sql

アプリケーション パッケージには、パッケージのインストール中に実行される任意の数の SQL スクリプトを含めることができます。 これらの SQL スクリプトには、すべての DDL、DML、ストアド プロシージャなど、指定したデータベース エンジンのための任意の有効なコマンドを含めることができます。 本ガイドには、マニフェストおよびパラメーター ファイルのセットアップ方法について、注釈つきの例が記載されています。 WDT とデータベースの連動の詳細については、データベースについてのメモを参照してください。

web.config

web.config ファイルは、アプリケーションのディレクトリ ツリーの任意のレベルに配置できます。 このファイルの最も一般的な用途については、既に記述しました。 web.config ファイルの詳細に関心がある場合は、コンフィギュレーション リファレンス(英語)を参照してください。

サンプルのライブラリ

アプリケーション パッケージに必要とされる各種ファイルの注釈つきバージョンを配置するサンプルを集めた場所としてライブラリを開設しました。 このライブラリに対しては、継続的に作業を行っています。 サンプルを確認したいアプリケーションまたは機能がある場合は、ライブラリページにコメントを投稿してください。

おわりに

ギャラリーについての質問、またはギャラリー向けにアプリケーション パッケージを準備する方法について質問がある場合は、フォーラム (英語) をご利用ください。