Skip to main content

This documentation is for an older version of this product. See the latest version of this content.Opens in a new tab

インストール・マニフェストの作成および使用

このトピックでは、特定の InterSystems IRIS® Data Platform 構成を記したインストール・マニフェストを作成し、これを使用して InterSystems IRIS インスタンスを構成するコードを生成するための %Installer ユーティリティの使用法について説明します。

インストール・マニフェストの概要

%Installer ユーティリティによりインストール・マニフェストを定義します。これは段階的なインストール・プロセスではなく、特定の InterSystems IRIS 構成を記述および構成するものです。これには、通常インストール中 (スーパーサーバ・ポート、オペレーティング・システムなど) に指定した情報を含む変数を使用して、目的の構成を記述した XData ブロックを含むクラスを作成します。また、このクラスにインスタンス構成用のコードを生成するための XData ブロックを使用するメソッドを組み込みます。この付録では、インストール・マニフェストの例を提供します。この例をコピーして貼り付けて、作業を開始することができます。

マニフェストを定義すると、インストール中、またはターミナル・セッションやコードからマニフェストを呼び出すことができます。マニフェストは %SYS ネームスペースで実行する必要があります。

インストール・マニフェストの作成

このセクションでは、インストール・マニフェストの作成に必要な情報を以下の内容に分けて説明します。

マニフェスト・クラス定義

インストール・マニフェストを定義するクラスを作成するには、以下の条件を満たすクラスを作成します (または、以下の "インストール・マニフェストの例" のセクションの空白のテンプレートから開始します)。

  • このクラスには、%occInclude インクルード・ファイルを含める必要があります。

  • このクラスには、インストールの詳細を指定する XData ブロックを含める必要があります。XData ブロックの名前は、後で引数として使用されます。XData ブロックのルート要素は <Manifest> とする必要があります。詳細は、“<Manifest> タグのリスト” を参照してください。

    スタジオでは、XData ブロックの名前の後に [XMLNamespace = INSTALLER] を追加すると、XData ブロックの入力に応じてサポートが提供されます。

  • このクラスは、名前で XData ブロックを参照する setup() メソッドを定義する必要があります ("インストール・マニフェストの例" のセクションを参照)。

マニフェストの一般的なオプション

このセクションでは、インストール・マニフェストを使用して実行するいくつかの一般的なタスクについて説明します。以下のオプションについて説明します。

ネームスペースの定義

ネームスペースを定義するには、<Manifest> タグ内に任意の数の <Namespace> タグを追加します。

ネームスペースのデータベースまたはマッピングを定義するには、<Namespace> タグの中に <Configuration> タグを入れます。ネームスペースに含まれるデータベースごとに、<Configuration> タグ内に <Database> タグを追加します。マッピングを定義するには、該当する <Database> タグの下に、<GlobalMapping> タグ、<RoutineMapping> タグ、および <ClassMapping> タグを追加します。</Configuration> タグは、定義されたマッピングを有効化します。

さらに、<Import> タグを使用して、<Namespace> タグ内にグローバル、ルーチン、およびクラスをロードできます。<Invoke> タグでクラス・メソッドを起動してルーチンを実行し、インポートされているグローバルにアクセスすることもできます。

<Var> タグで変数を定義できます。マニフェスト内の変数を参照するには、${var_name} 構文を使用します。詳細は、以下の "<Manifest> タグ内の変数" を参照してください。

ユーザとパスワードの追加

インストールしたインスタンスにユーザ (ロールとパスワードを含む) を追加する方法は複数あります。

  • "<Manifest> タグのリスト" の説明に従って、インストール・マニフェストに <User> タグを含めます。

    <User> タグの PasswordVar パラメータはユーザのパスワードを格納した変数を指定します。例えば、PasswordVar="Pwd" を定義すると、変数 Pwd の値がユーザのパスワードに指定されます。この変数にデータを移入する方法は多様ですが、移入方法は担当者次第です。InterSystems IRIS または Web サービスの別のインスタンスに対してメソッドをリモートで呼び出すことも検討できますが、この方法の問題点は、InterSystems IRIS がインストールされているサーバでインターネット・アクセスが必要な場合があることです。インストールしているインスタンスに対して使用するメソッドをインポートするか、ユーザとパスワード (マニフェストに渡すことができます) の入力を求めるインストールにクライアント側フォームを追加する方法も考えられます。

  • インストール完了後に管理ポータルでユーザを編集します ("ユーザ" を参照)。

  • InterSystems IRIS のステージング・インスタンスで Security.UsersOpens in a new tab クラスを使用します (以下を参照)。

    1. Security.Users.Export()Opens in a new tab メソッドを使用して、ユーザ情報をエクスポートします。

    2. ユーザ情報をインポートするには、(%SYS ネームスペースの) マニフェスト・クラスの先頭で以下を追加します。

      <Invoke Class="Security.Users" Method="Import" CheckStatus="true">
      <Arg Value="PathToExportedUserInformation"/>
      </Invoke>
      

      PathToExportedUserInformation は、Security.Users.Export()Opens in a new tab メソッドで指定された出力ファイルの場所です。

マニフェスト・ログへの書き込み

次の形式でクラスに <Log> タグを組み込むことで、マニフェスト・ログに追加するメッセージを定義できます。

<Log Level="<level>" Text="<text>"/>

ログのレベルは -1 から 3 までの範囲になる必要があります。-1 は “none” (なし)、3 は “verbose” (詳細) です。setup() メソッドで指定されたログのレベルが <Log> タグの Level プロパティの値以上の場合にメッセージがログに記録されます。テキストは 32,000 文字に制限されます。

setup() メソッドの 2 番目の引数によりレベルを設定します (詳細は、この付録で後述の “マニフェストの使用” を参照)。これはインストールからマニフェストへ渡すことはできないため、次のようにクラスに設定する必要があります。

ClassMethod setup(ByRef pVars, pLogLevel As %Integer = 3, 
   pInstaller As %Installer.Installer, 
   pLogger As %Installer.AbstractLogger) 
   As %Status [ CodeMode = objectgenerator, Internal ]

メッセージの表示位置を setup() メソッドの 4 番目の引数 (%Installer.AbstractLoggerOpens in a new tab) により指定できます。例えば、オペレーティング・システム・ファイルを参照する %Installer.FileLoggerOpens in a new tab オブジェクトをインスタンス化する場合、すべての %Installer およびログ・メッセージはそのファイルに書き込まれます。(この引数がないと、setup() が直接呼び出された場合には、すべてのメッセージがプライマリ・デバイスに書き込まれ、インストーラによって実行された場合には無視されます。)

アップグレード後のタスクの実行

InterSystems IRIS のインスタンスをアップグレードする際、インストール・マニフェストを使用して、コードのリコンパイルなど、必要なアップグレード後のタスクを自動的に実行できます。そのためには、<Invoke> タグを使用して、このドキュメントの “InterSystems IRIS のアップグレード” の章の "ネームスペースのコンパイル方法" のセクションに記載されているクラス・メソッドを呼び出します。

アップグレード時に使用できるマニフェストの例は、この付録の "インストール・マニフェストの例" のセクションを参照してください。

<Manifest> タグ内の変数

一部のタグは、マニフェストが実行されると展開される式 (文字列) を含めることができます。展開できる式には 3 種類あります (下記参照)。

${<var_name>} — 変数

変数の値に展開されます。このセクションで説明する事前定義変数のほかに、<Var> タグで追加の変数を指定できます。

${#<param_name>} — クラス・パラメータ

マニフェスト・クラスの指定されたパラメータの値に展開します。

#{<ObjectScript_expression>} — ObjectScript 式

指定された InterSystems IRIS Object Script 式に展開します (正しく引用符を付ける必要があります)。

Note:

パラメータの式はコンパイル時に展開されます。つまり、変数および ObjectScript 式の内側で入れ子にできます。また、変数の式は ObjectScript 式の前に展開されるため、後者の内側で入れ子にできます。

以下のテーブルに、マニフェストで使用できる事前定義変数を示します。

変数名 説明
SourceDir (インストーラ実行中にのみ使用可能) インストール (setup_irisdb.exe または irisinstall) の実行元となるディレクトリ。
ISCUpgrade (インストーラ実行中にのみ使用可能) 新規インストールまたはアップグレードであるかを示します。この変数は 0 (新規インストール) または 1 (アップグレード) のいずれかになります。
CFGDIR "INSTALLDIR" を参照してください。
CFGNAME インスタンス名。
CPUCOUNT オペレーティング・システムの CPU の数。
CSPDIR CSP ディレクトリ。
HOSTNAME ホスト・サーバの名前。
HTTPPORT Web サーバのポート。
INSTALLDIR InterSystems IRIS がインストールされるディレクトリ。
MGRDIR 管理者用 (mgr) ディレクトリ。
PLATFORM オペレーティング・システム。
PORT InterSystems IRIS スーパーサーバ・ポート。
PROCESSOR プロセッサ・チップ。
VERSION InterSystems IRIS のバージョン番号。

<Manifest> タグのリスト

コード生成に関するすべての情報は、最も外側の XML タグ (<Manifest>) 内に含まれます。<Manifest> 内の各タグは、InterSystems IRIS の特定の構成を記述します。このセクションでは、これらのタグとその関数のリストを示します。ここでは、すべてのタグと属性は記載されていません。完全なリストについては、%Installer クラスリファレンスのドキュメントを参照してください。属性に既定値がある場合は、各属性の横に角括弧で囲んでリストされています。

Important:

NULL 引数はマニフェスト・クラスのタグで渡すことはできません。例えば、<Arg/> タグは空の文字列を渡すので、<Arg=""/> と同等となります。NULL ではありません。

<Arg>

親タグ : <Invoke><Error>

<Invoke> または <Error> から呼び出されるメソッドに引数を渡します。

  • Value—引数の値。

<Error Status="$$$NamespaceDoesNotExist">
        <Arg Value="${NAMESPACE}"/>
/>

<ClassMapping>

親タグ : <Configuration>

データベースからこの <Configuration> 項目を含むネームスペースへのクラス・マッピングを作成します。

  • Package—マップするパッケージ。

  • From—マッピングに使用するソース・データベース。

<ClassMapping Package="MYAPP"
     From="MYDB"/>
<Compile>

親タグ : <Namespace>

%SYSTEM.OBJ.CompileOpens in a new tab(Class, Flags) を呼び出して、指定されたクラス名をコンパイルします。

  • Class—コンパイルするクラスの名前。

  • Flags—コンパイル・フラグ [ck]。

  • IgnoreErrors—エラー時に続行するかどうかを指定します [0]。

<Compile  
    Class="MyPackage.MyClass"
    Flags="ck"
    IgnoreErrors=0/>
<Configuration>

親タグ : <Namespace>

子タグ : <ClassMapping><Database><GlobalMapping><RoutineMapping>

<Namespace> 内で構成タグの親タグとして記述する必要があります。終了タグ (</Configuration>) は、ネームスペース内のデータベースのマッピングを有効化して、.cpf ファイルを更新します。

プロパティはありません。

<Configuration>
    <Database> . . . />
    <ClassMapping> . . . />
/>
<CopyClass>

親タグ : <Namespace>

ソース・クラス定義をターゲットにコピーまたは移動します。

  • Src—ソース・クラス。

  • Target—ターゲット・クラス。

  • Replace—ターゲット・クラスを上書きするかどうかを指定します [0]。

<CopyClass  
    Src="MyPackage.MyClass"
    Target="NewPackage.NewClass"
    Replace="0"/>

<CopyDir>

親タグ : <Manifest>

ソース・ディレクトリをターゲットにコピーします。

  • Src—ソース・ディレクトリ。

  • Target—ターゲット・ディレクトリ。

  • IgnoreErrors—エラー時に続行するかどうかを指定します [0]。

<CopyDir  
    Src="${MGRDIR}"
    Target="F:\MyTargetDir"
    IgnoreErrors="0"/>
<CopyFile>

親タグ : <Manifest>

ソース・ファイルをターゲットにコピーします。

  • Src—ソース・ファイル。

  • Target—ターゲット・ファイル。

  • IgnoreErrors—エラー時に続行するかどうかを指定します [0]。

<CopyFile  
    Src="${MGRDIR}\messages.log"
    Target="F:\${INSTANCE}_log"
    IgnoreErrors="0"/>
<CSPApplication>

親タグ : <Namespace>

Security.ApplicationsOpens in a new tab クラス内で定義されている 1 つ以上の Web アプリケーションを定義します (これらの各フィールドの詳細は、"アプリケーションの作成および編集" も参照してください)。

  • AuthenticationMethods—有効な認証方法。(サポートされている認証方法と、対応する提供値については、"Security.Applications" の "AutheEnabled" プロパティを参照してください)。例えば、一般的に使用される値として、4=Kerberos、32=password、64=unauthenticated があります。

  • AutoCompile—(CSP 設定で) 自動コンパイルするかどうかを指定します[1]。

  • CSPZENEnabled—CSP/ZEN を有効にするかどうかを指定します [1]。

  • ChangePasswordPage—パスワード変更ページへのパス。

  • CookiePath—セッション cookie パス。

  • CustomErrorPage—カスタム・エラー・ページへのパス。

  • DefaultSuperclass—デフォルト・スーパークラス。

  • DefaultTimeout—セッション・タイムアウト。

  • Description—説明。

  • Directory—CSP ファイルへのパス。

  • EventClass—イベント・クラス名。

  • Grant—システムにログインするときに割り当てられるロールのリスト。

  • GroupById—ID でグループ化するかどうかを指定します。

  • InboundWebServicesEnabled—着信 Web サービスを有効にするかどうかを指定します[1]。

  • IsNamespaceDefault—ネームスペースの既定のアプリケーションかどうかを指定します[0]。

  • LockCSPName—CSP名をロックするかどうかを指定します[1]。

  • LoginClass—ログイン・ページへのパス。

  • PackageName—パッケージ名。

  • PermittedClasses—許可されるクラス。

  • Recurse—繰り返す (サブディレクトリを提供する) かどうかを指定します[0]。

  • Resource—Web アプリケーションにアクセスするために必要なリソース。

  • ServeFiles—ファイルを提供するかどうかを指定します。[1]。

    • 0—提供しない

    • 1—常に提供する

    • 2—常に提供し、キャッシュする

    • 3—CSP セキュリティを使用する

  • ServeFilesTimeout—静的ファイルをキャッシュする時間を秒単位で指定します。

  • TwoFactorEnabled—2 ステップ認証を有効にするかどうかを指定します[0]。

  • Url—Web アプリケーションの名前。

  • UseSessionCookie—セッションに cookie を使用するかどうかを指定します。

<CSPApplication 
    Url="/csp/foo/bar"
    Description=""
    Directory="C\InterSystems\IRIS\CSP\Democode1"
    Resource=""
    Grant="%DB_%DEFAULT"
    Recurse="1"
    LoginClass=""
    CookiePath="/csp/demo1"
    AuthenticationMethods="64"/>
<Credential>

親タグ : <Production>

アクセス資格情報を作成またはオーバーライドします。

  • Name—アクセス資格情報の名前。

  • Username—ユーザ名。

  • Password—ユーザ・パスワード。

  • Overwrite—アカウントが既に存在する場合は上書きします。

<Credential  
    Name="Admin"
    Username="administrator"
    Password="123jUgT540!f3B$#"
    Overwrite="0"/>
<Database>

親タグ : <Configuration>

ネームスペース内でデータベースを定義します。

以下のプロパティで制御するデータベース設定の詳細は、"システム管理ガイド" の “InterSystems IRIS の構成” の章にある "データベースの構成" を参照してください。

  • BlockSize—データベースのブロック・サイズ (40968192163843276865536)。

  • ClusterMountMode—起動時にクラスタの一部としてデータベースをマウントするかどうかを指定します。

  • Collation—データベース内に作成される、グローバルの既定の照合。

  • Create—新しいデータベースを作成するかどうかを指定します (yes/no/overwrite) [yes]

  • Dir—データベース・ディレクトリ。

  • Encrypted—データベースを暗号化するかどうかを指定します。

  • EncryptionKeyID—暗号化キーの ID。

  • InitialSize—データベースの初期サイズを MB 単位で指定します。

  • ExpansionSize—必要な場合にデータベースを拡張するサイズを MB 単位で指定します。

  • MaximumSize—データベースを拡張できる最大サイズ。

  • MountAtStartup—インストールされたインスタンスを起動するときにマウントするかどうかを指定します。

  • MountRequired—インスタンスを起動するたびにデータベースをマウントする必要があるかどうかを指定します。

  • Name—データベース名。

  • PublicPermissions—リソースを作成する必要がある場合、リソースに割り当てられる許可の値。リソースが既に存在する場合は無視されます。読み取り専用または読み書き可能です。

  • Resource—データベースへのアクセスを制御するリソース。

  • StreamLocation—データベースに関連付けられているストリームが格納されるディレクトリ。

<Database Name="${DBNAME}" 
    Dir="${MGRDIR}/${DBNAME}"  
    Create="yes"
    Resource="${DBRESOURCE}"
    Blocksize="8192"
    ClusterMountMode="0"
    Collation="5"
    Encrypted="0"
    EncryptionKeyID=
    ExpansionSize="0"
    InitialSize="1"
    MaximumSize="0"
    MountAtStartup="0"
    MountRequired="0"
    StreamLocation=
    PublicPermissions=""/>
<Database Name="MYAPP" 
    Dir="${MYAPPDIR}/db"  
    Create="no"
    Resource="${MYAPPRESOURCE}"
    Blocksize="8192"
    ClusterMountMode="0"
    Collation="5"
    Encrypted="0"
    EncryptionKeyID=
    ExpansionSize="0"
    InitialSize="1"
    MaximumSize="0"
    MountAtStartup="0"
    MountRequired="0"
    StreamLocation=
    PublicPermissions=""/>
<Default>

親タグ : <Manifest>

変数値がまだ設定されていない場合に、変数値を設定します。

  • Name—変数名。

  • Value—変数値。

  • Dir—フォルダまたはファイルのパスを示す変数値。

<Default Name="blksiz"
    Value="8192" />

<Else>

親タグ : <If>

先行する <If> 文で定義される条件文が false の場合に実行されます。

プロパティはありません。

<If Condition='#
{##class(%File).Exists(INSTALL_"mgr\iris.key")}
'>
<Else/>
<CopyFile Src="C:\\InterSystems\key_files\iris300.key" Target="${MGRDIR}\iris.key" IgnoreErrors="0"/>
</If>
<Error>

親タグ : <Manifest>

子タグ : <Arg>

エラーを生成します。

  • Status : エラー・コード。

  • Source : エラーの発生源。

<Error Status="$$$NamespaceDoesNotExist" Source=>
    <Arg Value="${NAMESPACE}"/>
</Error>

<ForEach>

親タグ : <Manifest>

指定されたインデックス・キーの繰り返しに使用する値を定義します。

  • Index—変数名。

  • Values—変数値のリスト。

<ForEach 
    Index="TargetNameSpace"
    Values="%SYS,User">
    <!--Code for each iteration of TargetNameSpace-->
</ForEach>

<GlobalMapping>

親タグ : <Configuration>

グローバルを現在のネームスペースにマップします。

  • Global : グローバル名。

  • From : グローバルのソース・データベース。

  • Collation : グローバル照合 [IRIS Standard]。

<GlobalMapping Global="MyAppData.*"
    From="MYAPP" Collation="30"/> 
<GlobalMapping Global="cspRule" 
    From="MYAPP"/>
<If>

親タグ : <Manifest><Namespace>

子タグ : <Else>

条件付きアクションを指定します。

  • Condition : 条件文。

<If Condition='$L("${NAMESPACE}")=0'>
    <Error Status="$$$NamespaceDoesNotExist" Source=>
        <Arg Value="${NAMESPACE}"/>
    </Error>
</If>
<IfDef>

親タグ : <Manifest><Namespace>

変数が設定されている場合の条件付きアクションを指定します。

  • Var : 変数名。

<IfDef Var="DBCreateName">
   <Database Name="${DBNAME}" 
       Dir="${MGRDIR}/${DBNAME}"  
       Create="yes"
       ...
</IfDef>
<IfNotDef>

親タグ : <Manifest><Namespace>

変数が設定されていない場合の条件付きアクションを指定します。

  • Var : 変数名。

<Import>

親タグ : <Namespace>

%SYSTEM.OBJ.ImportDirOpens in a new tab(File,Flags,Recurse) または %SYSTEM.OBJ.LoadOpens in a new tab(File,Flags) を呼び出してファイルをインポートします。

  • File—インポートするファイルまたはフォルダ。

  • Flags—コンパイル・フラグ [ck]。

  • IgnoreErrors—エラー時に続行するかどうかを指定します [0]。

  • Recurse—再帰的にインポートするかどうかを指定します [0]。

<Invoke>

親タグ : <Namespace>

子タグ : <Arg>

クラス・メソッドを呼び出して、実行結果を変数の値として返します。

  • Class—クラス名。

  • Method—メソッド名。

  • CheckStatus—返されたステータスをチェックするかどうかを指定します。

  • Return—結果の書き込み先の変数の名前。

<Invoke Class="SECURITY.SSLConfigs" Method="GetCertificate" CheckStatus="1" Return="CertContents"> 
    <Arg Value="iris.cer"/>
</Invoke>
<LoadPage>

親タグ : <Namespace>

%SYSTEM.CSP.LoadPageOpens in a new tab(PageURL,Flags) または %SYSTEM.CSP.LoadPageDirOpens in a new tab(DirURL,Flags) を呼び出して CSP ページをロードします。

  • Name—CSP ページの URL。

  • Dir—CSP ページを含むディレクトリの URL。

  • Flags—コンパイル・フラグ [ck]。

  • IgnoreErrors—エラー時に続行するかどうかを指定します [0]。

<Log>

親タグ : <Manifest>

setup() メソッドで指定されたログのレベルが level プロパティの値以上の場合に、setup() メソッドで指定されたログにメッセージを記録します。

  • Level—ログのレベル。-1 (none) から 3 (verbose) までの範囲です。

  • Text—ログ・メッセージ (最大 32,000 文字の文字列)。

詳細は、"マニフェスト・ログへの書き込み" を参照してください。

<Manifest>

親タグ : なし (ルート・タグ。他のすべてのタグを含みます)

子タグ : <CopyDir><CopyFile><Default><Else><Error><ForEach><If><IfDef><IfNotDef><Log><Namespace><Resource><Role><SystemSetting><User><Var>

プロパティはありません。

<Manifest>
    <Namespace ... >
        <Configuration>
            <Database .../>
            <Database .../>
        </Configuration>
    </Namespace>
</Manifest>
<Namespace>

親タグ : <Manifest>

子タグ : <Compile><Configuration><CopyClass><CSPApplication><Else><If><IfDef><IfNotDef><Import><Invoke><LoadPage><Production>

ネームスペースを定義します。

  • Name—ネームスペースの名前。

  • Create—新しいネームスペースを作成するかどうかを指定します (yes/no/overwrite) [yes]

  • Code—コード用データベース。

  • Data—データ用データベース。

  • Ensemble—相互運用対応のネームスペースかどうかを指定します [0]。

(相互運用 Web アプリケーションには他のプロパティを適用可能)

<Namespace Name="${NAMESPACE}" 
     Create="yes" 
     Code="${NAMESPACE}"
     Data="${NAMESPACE}"> 
          <Configuration> 
               <Database Name="${NAMESPACE}" . . . />
          </Configuration>
</Namespace>
<Production>

親タグ : <Namespace>

子タグ : <Credential><Setting>

プロダクションを定義します。

  • Name—プロダクション名。

  • AutoStart—プロダクションを自動的に起動するかどうかを指定します [0]。

<Production Name="${NAMESPACE}" 
     AutoStart="1" />
<Resource>

親タグ : <Manifest>

リソースを定義します。

  • Name—リソース名。

  • Description—リソースの説明。

  • Permission—パブリック許可。

<Resource
    Name="%accounting_user" 
    Description="Accounting"
    Permission="RW"/>
<Role>

親タグ : <Manifest>

ロールを定義します。

  • Name—ロール名。

  • Description—ロールの説明 (コンマは使用できません)。

  • Resources—ロールで保持されている特権 (リソースと特権のペア)。

  • RolesGranted—指定されたロールで付与されるロール。

<Role 
    Name="%DB_USER"
    Description="Database user"
    Resources="MyResource:RW,MyResource1:RWU"
    RolesGranted= />
<RoutineMapping>

親タグ : <Configuration>

ルーチン・マッピングを定義します。

  • Routines : ルーチン名。

  • Type : ルーチン・タイプ (MACINTINCOBJALL)。

  • From : ルーチンのソース・データベース。

<RoutineMapping Routines="MyRoutine"
    Type="ALL" From="${NAMESPACE}" /> 

<Setting>

親タグ : <Production>

Ens.Production.ApplySettings()Opens in a new tab メソッドを呼び出して、プロダクション内のアイテムを構成します。

  • Item—アイテム名。

  • Target—設定タイプ (Item、Host、Adapter)。

  • Setting—設定名。

  • Value—設定の構成値。

<Production Name="Demo.ComplexMap.SemesterProduction">
    <Setting Item="Semester_Data_FileService"
        Target="Item"
        Setting="PoolSize"
        Value="1"/>
    <Setting Item="Semester_Data_FileService"
        Target="Host"
        Setting="ComplexMap"
        Value="Demo.ComplexMap.Semester.SemesterData"/>
    <Setting Item="Semester_Data_FileService"
        Target="Adapter"
        Setting="FilePath"
        Value="C:\Practice\in\"/>
</Production>

<SystemSetting>

親タグ : <Manifest>

Config.CommonSingleMethodsOpens in a new tab から Modify() メソッドを継承する任意の Config クラスのプロパティの値を設定します。

  • NameConfig クラスの Class.property

  • Value—プロパティに割り当てる値。

<User>

親タグ : <Manifest>

ユーザを定義します。PasswordVar が含まれる場合、指定された変数名でユーザのパスワードを渡す必要があります。

  • Username—ユーザ名。

  • PasswordVar—ユーザ・パスワードが含まれる変数の名前 (以下の <Var> を参照)。

  • Roles—ユーザを割り当てるロールのリスト。

  • Fullname—ユーザのフルネーム。

  • Namespace—ユーザの実行開始ネームスペース。

  • Routine—ユーザの実行開始ルーチン。

  • ExpirationDate—それ以降のユーザ・ログインが無効になる日付。

  • ChangePassword—次回ログイン時にユーザにパスワードの変更を要求するかどうかを指定します。

  • Enabled—ユーザが有効かどうかを指定します。

  • Comment—オプションコメント。

<User 
    Username="Clerk1"
    PasswordVar="clerk1pw"
    Roles="Dataentry"
    Fullname="Data Entry Clerk"
    Namespace=
    Routine=
    ExpirationDate=
    ChangePassword=
    Enabled=
    Comment=""/>
<Var>

親タグ : <Manifest>

マニフェストで使用できる変数を定義および設定します。

  • Name—変数名。

  • Value—変数に割り当てる値。

<Var Name="Namespace" Value="MUSIC"/> 
<Var Name="GlobalDatabase" Value="${Namespace}G"/> 
<Var Name="RoutineDatabase" Value="${Namespace}R"/> 
<Var Name="AppDir" Value="C:\MyApp\${CFGNAME}"/> 
<Var Name="GlobalDatabaseDir" Value="${AppDir}\${GlobalDatabase}"/> 
<Var Name="RoutineDatabaseDir" Value="${AppDir}\${RoutineDatabase}"/> 
<Var Name="Resource" Value="%DB_${Namespace}"/> 
<Var Name="Role" Value="${Namespace}"/> 
<Var Name="CSPResource" Value="CSP_${Namespace}"/> 

マニフェストの使用

マニフェストは、手動で実行することも、インストールの一部として実行することもできます。

手動で実行する場合

%SYS ネームスペースで、ターミナルに以下のコマンドを入力します。

%SYS>do ##class(MyPackage.MyInstaller).setup()

変数の配列を参照として setup() メソッドに渡すことができます。各添え字は変数名として使用され、ノードは値として使用されます。以下に例を示します。

%SYS>set vars("SourceDir")="c:\myinstaller"
%SYS>set vars("Updated")="Yes"
%SYS>do ##class(MyPackage.MyInstaller).setup(.vars,3)

この例の 2 番目の引数 (3) は、ログ・レベルです。

インストール時に実行する場合

マニフェスト・クラスを DefaultInstallerClass.xml として InterSystems IRIS インストール (.msisetup_irisdb.exe、または irisinstall) が実行されている場所と同じディレクトリにエクスポートします。これは %SYS にインポートされてコンパイルされ、setup() メソッドが実行されます。

Note:

インストールを実行するユーザが、マニフェスト・ログ・ファイル・ディレクトリへの書き込み許可を持っていることを確認します。ログ・ファイルに書き込めない場合、インストールは続行されません。

また、単一ファイル・キットを使用してインストールしている場合、想定どおりに動作するようにするには、ファイルを .exe ファイルから抽出する必要があります。

エクスポートする方法では、引数を setup() メソッドに直接渡せないことに注意してください。以下のセクションでは、Windows で、または UNIX®、Linux、および macOS で引数を渡す方法について説明します。

Windows

.msi インストール・パッケージを変更して、変数の名前と値のペアを setup() メソッドに渡すことができます。

また、以下の例に示すようにインストーラでコマンド行引数を使用して、エクスポートされるマニフェスト・クラスの場所、変数、ログ・ファイル名、およびログのレベルを渡すこともできます。

setup.exe INSTALLERMANIFEST="c:\MyStuff\MyInstaller.xml"
INSTALLERMANIFESTPARAMS="SourceDir=c:\mysourcedir,Updated=Yes"
INSTALLERMANIFESTLOGFILE="installer_log" INSTALLERMANIFESTLOGLEVEL="2"
Note:

INSTALLERMANIFESTPARAMS 引数を使用して渡される変数名には、アルファベット文字と数字 (A-Za-z0-9)、およびアンダースコア (_) のみを含めることができますが、先頭をアンダースコアにすることはできません。

詳細は、このドキュメントの “Microsoft Windows への InterSystems IRIS のインストール” の章の "コマンド行のリファレンス" のセクションを参照してください。

UNIX®、Linux、および macOS

UNIX®、Linux、および macOS システムでは、以下の例に示すように、irisinstall または irisinstall_silent のいずれかを実行する前に環境変数を設定して、エクスポートされるマニフェスト・クラスの場所、変数、ログ・ファイル名、およびログのレベルを定義できます。

ISC_INSTALLER_MANIFEST="/MyStuff/MyInstaller.xml"
ISC_INSTALLER_PARAMETERS="SourceDir=/mysourcedir,Updated=Yes"
ISC_INSTALLER_LOGFILE="installer_log"
ISC_INSTALLER_LOGLEVEL="2"
./irisinstall

詳細は、このドキュメントの “InterSystems IRIS の UNIX®、Linux、および macOS へのインストール” の章の "自動インストール・パラメータ" のセクションを参照してください。

インストール・マニフェストの例

このセクションでは、以下を行うインストール・マニフェストの例を示します。

空のテンプレート

以下に、基本的なマニフェスト・テンプレートを示します。

Include %occInclude

/// Simple example of installation instructions (Manifest)
Class MyInstallerPackage.SimpleManifest
{

XData SimpleManifest [ XMLNamespace = INSTALLER ]
{
<Manifest>
   <Log Level="3" Text="Start manifest" />
   <Namespace Name="">
      <Import File="" />
      <Invoke Class="" Method="" CheckStatus="" Return=""> 
         <Arg Value=""/>
      </Invoke> 
   </Namespace>
   <CopyFile Src="" Target="" IgnoreErrors=""/>
   <CopyDir Src="" Target="" IgnoreErrors=""/>   
   <Log Level="3" Text="End manifest" />
</Manifest>
}

/// This is a method generator whose code is generated by XGL.
ClassMethod setup(ByRef pVars, pLogLevel As %Integer = 3, 
   pInstaller As %Installer.Installer, 
   pLogger As %Installer.AbstractLogger) 
   As %Status [ CodeMode = objectgenerator, Internal ]
{
    #; Let our XGL document generate code for this method. 
    Quit ##class(%Installer.Manifest).%Generate(%compiledclass, %code, "SimpleManifest")
}

}

ネームスペースの作成

この例のマニフェストでは、ネームスペース (MyNamespace) と 3 つのデータベースを作成します。MyDataDB データベースと MyRoutinesDB データベースはそれぞれグローバルとルーチンの既定のデータベースで、MyMappingDB データベースは別のグローバル・データベースです。<GlobalMapping> タグは、MyNamespace ネームスペースにある t* グローバルに対して MyMappingDB へのマッピングを作成します。これは、既定のマッピングをオーバーライドします。

Include %occInclude

/// Simple example of installation instructions (Manifest)
Class MyInstallerPackage.SimpleManifest
{

XData SimpleManifest [ XMLNamespace = INSTALLER ]
{
<Manifest>
    <Namespace Name="MyNamespace" Create="yes" 
        Code="MyRoutinesDB" Data="MyDataDB">
      <Configuration>
        <Database Name="MyRoutinesDB" Create="yes" 
            Dir="C:\MyInstallerDir\MyRoutinesDB"/>
        <Database Name="MyDataDB" Create="yes" 
            Dir="C:\MyInstallerDir\MyDataDB"/>
        <Database Name="MyMappingDB" Create="yes" 
            Dir="C:\MyInstallerDir\MyMappingDB"/>
        <GlobalMapping Global="t*" From="MyMappingDB"/>
      </Configuration>
    </Namespace>
</Manifest>
}

/// This is a method generator whose code is generated by XGL.
ClassMethod setup(ByRef pVars, pLogLevel As %Integer = 3, 
   pInstaller As %Installer.Installer, 
   pLogger As %Installer.AbstractLogger) 
   As %Status [ CodeMode = objectgenerator, Internal ]
{
    #; Let our XGL document generate code for this method. 
    Quit ##class(%Installer.Manifest).%Generate(%compiledclass, 
    %code, "SimpleManifest")
}

}

アップグレード後のコンパイル

この例のマニフェストでは APPTEST という名前のネームスペース内のコードをリコンパイルし、アップグレード後に実行します。以下のタスクを実行します。

  1. マニフェスト・インストール・プロセスの開始を示すメッセージをマニフェスト・ログに書き込みます。

  2. 現在のネームスペースを APPTEST に設定します。これには、アップグレード後にリコンパイルする必要のあるコードが含まれます。

  3. メソッド %SYSTEM.OBJ.CompileAll() を呼び出して、ネームスペース内のクラスをコンパイルします。

  4. メソッド %Routine.CompileAll() を呼び出して、ネームスペース内のカスタム・ルーチンをコンパイルします。

  5. マニフェスト・インストール・プロセスの終了を示すメッセージをマニフェスト・ログに書き込みます。

Include %occInclude

/// Simple example of installation instructions (Manifest)
Class MyInstallerPackage.SimpleManifest
{

XData SimpleManifest [ XMLNamespace = INSTALLER ]
{
<Manifest>
    <Log Level="3" Text="The Installer Manifest is running."/>
    <Namespace Name="APPTEST">
        <Invoke Class="%SYSTEM.OBJ" Method="CompileAll" CheckStatus="1"> 
            <Arg Value="u"/>
        </Invoke>
        <Invoke Class="%Routine" Method="CompileAll" CheckStatus="1"/>
        </Namespace>
    <Log Level="3" Text="The Installer Manifest has completed."/>
</Manifest>
}

/// This is a method generator whose code is generated by XGL.
ClassMethod setup(ByRef pVars, pLogLevel As %Integer = 3, 
   pInstaller As %Installer.Installer, 
   pLogger As %Installer.AbstractLogger) 
   As %Status [ CodeMode = objectgenerator, Internal ]
{
   #; Let our XGL document generate code for this method. 
   Quit ##class(%Installer.Manifest).%Generate(%compiledclass, %code, "SimpleManifest")
}

}
FeedbackOpens in a new tab