Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

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

この章では、特定の Caché 構成を記したインストール・マニフェストを作成し、これを使用して Caché インスタンスを構成するコードを生成するための %Installer ユーティリティの使用法について説明します。以下の項目について説明します。

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

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

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

マニフェストを定義するクラスの作成

インストール・マニフェストを定義するクラスを作成するため、以下のようなクラスを作成します。

  • %occInclude インクルード・ファイルを含める必要があります。

  • インストールの詳細を指定する XData ブロックを含める必要があります。

    XData ブロックには正当な名前を任意に指定することができ、この名前を後に引数として使用します。

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

    XData ブロックのルート要素は <Manifest> とする必要があります。詳細は、“<Manifest> タグ” を参照してください。

  • 以下の例で示すように、setup() メソッドを定義する必要があります。

  • setup() メソッドは、以下の例で示すような名前で XData ブロック を参照する必要があります。

以下に例を示します。

Include %occInclude
Class MyPackage.MyInstaller
{
XData MyInstall [ XMLNamespace = INSTALLER ]
   {
   <Manifest>
      <Var/>
      <If/>
      <Log/>
      <User/>
      <Resource/>
      <Role/>
      <SystemSetting/>
      <ForEach>
         <!--Code for each iteration of named Index key while looping through values-->
      </ForEach>
      <CopyDir/>
      <CopyFile/>
      <Namespace>
         <Configuration>
            <Database/>
            <ForEach>
               <!--Code for each iteration of named Index key while looping through values-->
            </ForEach>
            <Log/>
            <GlobalMapping/>
            <RoutineMapping/>
            <ClassMapping/>
         </Configuration>
         <Compile/>
         <CopyClass/>
         <CSPApplication/>
         <ForEach>
            <!--Code for each iteration of named Index key while looping through values-->
         </ForEach>
         <If/>
         <Import/>
         <Invoke/>
      </Namespace>
   </Manifest>
   }

ClassMethod setup(ByRef pVars, pLogLevel As %Integer = 3, 
   pInstaller As %Installer.Installer, 
   pLogger As %Installer.AbstractLogger) 
   As %Status [ CodeMode = objectgenerator, Internal ]
   {
   #; Let XGL document generate code for this method. 
   Quit ##class(%Installer.Manifest).%Generate(%compiledclass,
      %code, "MyInstall")
   }
}

キー・オプション

1 番外側の xml タグ (<Manifest>) には、コード生成に関するすべての情報が格納されています。マニフェストでネームスペースを定義するために必要な数の <Namespace> タグを <Manifest> タグ内に入れることができます。

<Namespace> タグ内にある <Configuration> タグは、データベースおよびマッピング (またはこのいずれか) が定義されている場合にのみ必要です。ネームスペースを定義するために必要な数の <Database> タグを <Configuration> タグ内に入れる必要があります。また、以下の各 <Database> タグに続けて、必要に応じて <GlobalMapping> タグ、<RoutineMapping> タグ、および <ClassMapping> タグを追加できます。</Configuration> タグは、定義されたマッピングを有効化します。

データベースおよびそのマッピングが定義された後に、<Namespace> タグのコンテキスト内で、<Import> タグを使用して、グローバルをロードし、ルーチンおよびクラスをロードしてコンパイルできます。クラス・メソッドは、<Invoke> タグを使用して呼び出せます。呼び出したクラス・メソッドは、ルーチンを実行し、インポート済みのグローバルにアクセスできます。

必要に応じて、<Var> タグで変数の組み合わせを定義できます。各変数は、名前と値を指定する必要があります。<Var> の値が必要な場合、その名前が ${NameAssigned} 構文で参照されます。

使用例は、この章で後述する “” を参照してください。

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

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

  • インストール完了後に管理ポータルを使用 ("Caché セキュリティ管理ガイド" を参照)。

  • マニフェストで <User> タグを使用 ("<Manifest> タグ" を参照)。

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

  • Caché や Ensemble のステージング・インスタンスで 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>"/>

ログのレベルは 0 から 3 までの範囲になる必要があります。0 は “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.AbstractLogger) により指定できます。例えば、オペレーティング・システム・ファイルを参照する %Installer.FileLogger オブジェクトをインスタンス化する場合、すべての %Installer およびログ・メッセージはそのファイルに書き込まれます。(この引数がないと、setup() が直接呼び出された場合には、すべてのメッセージがプライマリ・デバイスに書き込まれ、インストーラによって実行された場合には無視されます。)

<Manifest> タグ

以下にマニフェスト・クラスの XData ブロック内で使用できるタグについて (アルファベット順に) 説明します。

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

  • ${<var_name>}

    指定されたユーザ変数 (このセクションの説明に従って <Var> タグで定義) または事前定義変数 ("<Manifest> 内で使用できる変数" のセクションにリスト) の値に展開します。この種の式の例はこのセクション内にあります。

  • ${#<param_name>}

    XDATA を含むクラスの指定されたパラメータの値に展開します。

  • #{<COS_expression>}

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

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

Important:

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

Note:

角括弧 ([ ]) 内に表示される値は、プロパティが明示的に指定されていない場合に使用される既定値です。

<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.Compile(Class, Flags)Opens in a new tab を呼び出して、指定されたクラス名をコンパイルします。

  • 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]。

<CopyDir  
    Src="${MGRDIR}\cconsole.log"
    Target="F:\${INSTANCE}_log"
    IgnoreErrors="0"/>
<Credential>

親タグ : <Production>

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

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

  • Username—ユーザ名。

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

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

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

親タグ : <Namespace>

Security.ApplicationsOpens in a new tab クラス内で定義されている 1 つ以上の CSP アプリケーションを定義します。

  • 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—ファイルを提供するかどうかを指定します。

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

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

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

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

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

親タグ : <Configuration>

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

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

  • 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>

親タグ : <Manifest><Namespace>

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

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

<Error>

親タグ : <Manifest>

子タグ : <arg>

エラーを生成します。

  • Status : エラー・コード。

  • Source : エラーの発生源。

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

<ForEach>

親タグ : <Manifest>

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

  • Index—変数名。

  • Values—変数値のリスト。

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

<GlobalMapping>

親タグ : <Configuration>

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

  • Global : グローバル名。

  • From : グローバルのソース・ネームスペース。

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

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

親タグ : <Manifest><Namespace>

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

  • 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.Load(File,Flags)Opens in a new tab.を呼び出してファイルをインポートします。

  • 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="Cache.cer"/>
</Invoke>
<LoadPage>

親タグ : <Namespace>

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

  • Name—CSP ページの URL。

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

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

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

<Log>

親タグ : <Manifest>

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

  • Level—ログのレベル。0 (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—Ensemble 対応のネームスペースかどうかを指定します [0]。

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

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

親タグ : <Namespace>

子タグ : <Credential><Setting>

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

  • 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 Name="MyRoutine"
    Type="ALL" From="${NAMESPACE}" /> 

<Setting>

親タグ : <Production>

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

  • 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>

Modify メソッドを実装している任意の Config クラスのプロパティの値を設定します。

  • NameConfig クラスの Class.property

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

<SystemSetting 
    Name="Config.Miscellaneous.EnableLongStrings"
    Value="1"/>
<User>

親タグ : <Manifest>

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

  • Username—ユーザ名。

  • PasswordVar—ユーザ・パスワードが含まれる変数の名前。

  • 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}"/> 

ユーザ定義のインストーラ・クラスの総合的な例については、SAMPLES ネームスペースの "Sample.InstallerOpens in a new tab" を参照してください。

タグと属性の最新リストについては、%Installer クラス・リファレンス・ドキュメントを参照してください。

<Manifest> 内で使用できる変数

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

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

マニフェストの使用

以下のように、マニフェストを使用できます。

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

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

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

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

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

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

    エクスポートする方法では、引数を setup() メソッドに直接渡せないことに注意してください。ただし、以下の操作を実行できます。

    • Microsoft Windows システムでは (“Microsoft Windows への Caché のインストール” の章を参照)、.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)、およびアンダースコア (_) のみを含めることができますが、先頭をアンダースコアにすることはできません。

    • UNIX®、Linux、および macOS システムでは (“UNIX®、Linux、および macOS への Caché のインストール” の章を参照)、以下の例に示すように、cinstall または cinstall_silent のいずれかを実行する前に環境変数を設定して、エクスポートされるマニフェスト・クラスの場所、変数の名前と値のペア、ログ・ファイル名、およびログのレベルを定義できます。

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

以下のクラスは、ネームスペース (MyNamespace) および 3 つのデータベースを作成します。このうち 2 つのデータベースは、グローバル (MyDataDB) およびルーチン (MyRoutinesDB) の既定のデータベースとして定義され、3 番目のデータベース (MyMappingDB) は、MyNamespace ネームスペースにある t* グローバルの既定のデータベース・マッピングをオーバーライドするグローバル・データベースです。

Note:

総合的な例については、SAMPLES ネームスペースの Sample.InstallerOpens in a new tab クラスを参照してください。

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")
}

}

クラスがコンパイルされると、そのクラスは以下に示すようにターミナルで呼び出せます (USER ネームスペースにクラスを作成したと仮定しています)。

%SYS>znspace "USER"
USER>do ##class(MyInstallerPackage.SimpleManifest).setup()
FeedbackOpens in a new tab