
はじめに
したがって、InterSystemsテクノロジでアプリケーションを開発しました。 ここで、クライアントにデプロイする必要があり、多くの場合、複数回デプロイする必要があります。 開発プロセス中に、インストール手順を取得しました。クラスをインポートするだけでは十分ではないため
、ファイルを
使用し
てシステムを
変更し、ニーズに合わせて環境を微調整する必要もあります。
これらの問題を解決するために、
%インストーラーユーティリティがあります。 この記事は彼女についてです。
%インストーラー
このユーティリティを使用すると、Cachéのターゲット構成を説明するインストールマニフェストを、それを実現する手順ではなく定義できます。 何をすべきかを説明すると、Cachéはこのために必要なすべてのコードを既に生成します。 したがって、マニフェスト自体のみを配布し、特定のCachéサーバのフレームワーク内でコード生成がすでに行われています。
マニフェストを作成するには、目的の構成の説明とともにXDataブロックを作成し、XDataブロックに基づいてCOSコードを生成するメソッドを作成します(常に同じです)。 マニフェストを作成したら、Cachéのインストール中に、ターミナルまたはCOSコードからマニフェストを呼び出すことができます。 マニフェストは%SYS領域で実行する必要があります。 マニフェストは、システムパラメーター(スーパーポート、OS、mgrディレクトリなど)と、ユーザーから渡された任意のパラメーターの両方で使用できます。 したがって、インストーラークラスは次の要件を満たす必要があります。
%occInclude.inc
へのリンクを含めます。- Cachéサーバー構成のある
XData
ブロックが含まれています。 - ブロックは、任意の有効な名前と呼ぶことができます。
- スタジオでプロンプトを含めるには、ブロック名の後に
[XMLNamespace = INSTALLER]
を追加します。 - ルート要素(1つのみ可能)-
<Manifest>
他のすべての要素は内部にあります。 - XDataブロックからコード生成を実行する
setup()
メソッドを定義する必要があります。
使用する
準備完了インストールマニフェストは、いくつかの
方法で起動でき
ます 。
例
簡単な例を考えてみましょう。 ユーザーから渡された名前の領域を作成する
App.Installer
クラスを作成します。
App.Installer%occIncludeを 含める
クラスApp.Installer
{
///生成されたコードは、zsetup + 1 ^ App.Installer.1で表示できます。
XData インストール[ XMLNamespace = INSTALLER]
{
< マニフェスト >
< If Condition = '(## class(Config.Namespaces).Exists( "$ {Namespace}")= 0)' >
< ログ テキスト = "名前空間の作成$ {名前空間}" レベル = "0" />
< 名前空間 名 = "$ {名前空間}" 作成 = "はい" コード = "$ {名前空間}" アンサンブル = "0" データ = "$ {名前空間}" >
< 設定 >
< データベース 名 = "$ {Namespace}" Dir = "$ {MGRDIR} / $ {Namespace}" Create = "yes" />
</ 設定 >
</ 名前空間 >
< ログ テキスト = "ネームスペースの作成を終了$ {ネームスペース}" レベル = "0" />
</ If >
</ マニフェスト >
}
///インストールを完了するために呼び出されるメソッド。
///クラスのコンパイル中に、COSコードが生成されます
///その後、インストーラーは次のパラメーターで開始します。
/// Set pVars( "Namespace")= "TempNamespace"
/// Do ##クラス(App.Installer).setup(.pVars)
ClassMethod setup( ByRef pVars 、 pLogLevel As%Integer = 0 、 pInstaller As%Installer.Installer ) As%Status [ CodeMode = objectgenerator、 Internal ]
{
##クラス ( %Installer.Manifest )を 終了し ます。 %Generate ( %compileclass 、 %code 、 "Install" )
}
}
この例では、次のことが起こります。
- Namespace変数の値と同じ名前の領域が存在するかどうかを確認します(たとえば、値はNewNamespaceです)。
- そうでない場合は、NewNamespaceエリアの作成を開始したという事実がログに記録されます。
- エリア定義:
- C name NewNamespace;
- エリアを作成する必要があります。
- コードデータベースNewNamespace;
- アンサンブルは含まれていません。
- NewNamespaceデータデータベース。
- データベース作成
- C name NewNamespace;
- mgr / NewNamespaceフォルダー(MGRDIR変数はデフォルトで使用可能です)。
- 完了エリアへのロギング。
ターミナルから起動するには、次のコマンドを実行します。
Set pVars ( "Namespace" )= "NewNamespace"
##クラス ( App.Installer )を実行します。 セットアップ ( 。pVars )
何がもたらす2015-10-16 16:26:18 0 App.Installer:2015-10-16 16:26:18からインストール、LogLevel = 0
2015-10-16 16:26:18 0:名前空間NewNamespaceを作成しています
2015-10-16 16:26:19 0:名前空間NewNamespaceの作成を終了
2015-10-16 16:26:19 0 App.Installer:インストールは2015-10-16 16:26:19に成功しました
2015-10-16 16:26:19 0%インストーラー:経過時間.605257s
アイテム一覧
マニフェストは、次の要素から形成されます。
アイテム | 親要素 | 属性(デフォルト値) | 説明 |
引き数 | 呼び出し、エラー | 値-引数値 | InvokeまたはErrorを介して呼び出されたメソッドに引数を渡します |
クラスマッピング | 構成 | パッケージ-表示するパッケージ From-表示するデータベースの名前 | データベースのクラスから斜めのクラスへのマッピングを作成します。 |
コンパイルする | 名前空間 | クラス-コンパイルするクラスの名前 フラグ-コンパイルフラグ(ck) IgnoreErrors-エラーを無視(0) | クラスをコンパイルします。 $ System.OBJ.Compileを呼び出します(クラス、フラグ) |
構成 | 名前空間 | | スコープとデータベースを作成する必要がありました。 終了タグはマッピングをアクティブにし、cpfファイルを更新します |
コピークラス | 名前空間 | Src-ソースクラス ターゲット-ターゲットクラス 置換-ソースクラスを削除(0) | ソースクラスをターゲットにコピーまたは移動する |
Copydir | マニフェスト | Src-ソースディレクトリ Targe-宛先ディレクトリ IgnoreErrors-エラーを無視(0) | ディレクトリをコピー |
コピーファイル | マニフェスト | Src-ソースファイル ターゲット-ターゲットファイル IgnoreErrors-エラーを無視(0) | ファイルをコピー |
クレデンシャル | 生産 | 名前-アクセス要件の名前 ユーザー名-ユーザー名 パスワード-パスワード 上書き-存在する場合は上書き | アクセスの詳細を作成または再定義します |
Cspapplication | 名前空間 | AuthenticationMethods-利用可能な認証方法 自動コンパイル-自動コンパイル CSPZENEnabled-CSP / ZENフラグ ChangePasswordPage-パスワード変更ページ CookiePath-Cookieセッションの方法 CustomErrorPage-カスタムエラーページ DefaultSuperclass-デフォルトのスーパークラス DefaultTimeout-セッションタイムアウト 説明-説明 ディレクトリ-CSPファイルへのパス EventClass-イベントクラス 付与-ログイン時に発行されるロールのリスト GroupById-IDによるグループ化 InboundWebServicesEnabled-インバウンドWebサービス IsNamespaceDefault-デフォルトエリアアプリケーション LockCSPName-CSP名のロック LoginClass-ログインページ PackageName-パッケージ名 PermittedClasses-許可されたクラス 再帰-サブディレクトリ(0) リソース-必要なリソース ServeFiles-サービスファイル ServeFilesTimeout-サービスファイルのタイムアウト TwoFactorEnabled-二要素認証 Url-Webアプリケーションの名前 UseSessionCookie-セッションにCookieを使用 | Webアプリケーションを作成または変更します。 ドキュメントおよびSecurity.Applicationsクラスの設定の詳細な説明 |
データベース | 構成 | BlockSize-ブロックサイズ ClusterMountMode-クラスターの一部としてデータベースをマウントします 照合-ソート 作成-データベースを作成-はい、いいえ、上書き(はい) Dir-ディレクトリ 暗号化-暗号化 EncryptionKeyID-暗号化キーID ExpansionSize-拡張機能 InitialSize-初期サイズ MaximumSize-最小サイズ MountAtStartup-起動時にマウント MountRequired-マウントが必要 名前-名前 PublicPermissions-公的権利 リソース-リソース StreamLocation-ストリームの場所 | データベースを作成または変更します。 ドキュメントおよびクラスConfig.Databasesの設定の詳細な説明 |
デフォルト | マニフェスト | 名前-変数名 値-変数の値 Dir-変数の値(これがフォルダー/ファイルへのパスの場合) | 定義されていない場合、変数の値を定義します |
その他 | マニフェスト、名前空間 | | if条件チェックが否定的に終了した場合に実行されます。 |
エラー | マニフェスト | ステータス-エラーコード ソース-エラーソース | 例外をスローします。 $ {}および#{}構文は利用できません |
Foreach | マニフェスト | インデックス-変数名 値-変数値のリスト | 共同ループ演算子 |
グローバルマッピング | 構成 | グローバル-グローバル名 From-表示するデータベースの名前Collation-sort(CachéStandard) | グローバル表示 |
もし | マニフェスト、名前空間 | 条件-条件 | 条件付きジャンプ演算子 |
Ifdef | マニフェスト、名前空間 | Var-変数名 | 変数が定義されている場合、条件付きジャンプ演算子 |
IfNotDef | マニフェスト、名前空間 | Var-変数名 | 変数が定義されていない場合の条件付きジャンプ演算子 |
インポート | 名前空間 | ファイル-インポートするファイル/フォルダー フラグ-コンパイルフラグ(ck) IgnoreErrors-エラーを無視(0) 再帰-再帰的インポート(0) | ファイルをインポートします。 原因: $ System.OBJ.ImportDir(ファイル、フラグ、再帰)および$ System.OBJ.Load(ファイル、フラグ) |
呼び出す | 名前空間 | クラス-クラス メソッド-メソッド CheckStatus-返品ステータスを確認する Return-結果を変数に書き込みます | クラスメソッドを呼び出し、引数を渡して実行結果を取得できます |
ロードページ | 名前空間 | 名前-CSPページへのパス Dir-CSPページのあるフォルダー フラグ-コンパイルフラグ(ck) IgnoreErrors-エラーを無視(0) | $ System.CSP.LoadPage(名前、フラグ)および$ System.CSP.LoadPageDir(Dir、フラグ)を介してCSPファイルをロードします。 |
ログ | マニフェスト | レベル-0(最小)から3(詳細)のロギングレベル テキスト-テキスト、最大32000文字 | ロギングレベルがlevel属性以上の場合、ログにメッセージを追加します |
マニフェスト | | | ルート要素。 マニフェスト内の唯一のもの、他のすべての要素はその中にあります |
名前空間 | マニフェスト | 名前-エリア名 作成-エリアの作成-はい、いいえ、上書き(はい) コード-コード付きDB データ-データを含むデータベース アンサンブル-の分野にアンサンブルを含める Ensemble Webアプリケーションに関連するその他の属性 | インストーラーのスコープを定義します |
生産 | 名前空間 | 名前-製品名 AutoStart-製品の自動起動 | Ensemble製品を構成します |
資源 | マニフェスト | 名前-リソース名 説明-説明 許可-公的権利 | リソースを作成または変更します |
役割 | マニフェスト | 名前-ロール名 説明-説明 リソース-「MyResource:RW、MyResource1:RWU」の形式のリソースRolesGranted-関連するロールを付与 | ロールを作成します |
ルーチンマッピング | 構成 | ルーチン-ルーチンの名前 タイプ-タイプ「MAC、INT、INC、OBJ、ALL」のいずれか From-どのデータベースから | マッピングルーチンを作成します |
セッティング | 生産 | アイテム-カスタムアイテム ターゲット-設定タイプ:アイテム、ホスト、アダプター 設定-設定の名前 値-設定値 | Ensemble製品アイテムを構成します。 Ens.Production:ApplySettingsメソッドを呼び出します |
システム設定 | マニフェスト | 名前-クラスConfigパッケージのプロパティ 値-プロパティ値 | Configパッケージのプロパティの値を設定します(Modifyメソッドを使用) |
ユーザー | マニフェスト | ユーザー名-ユーザー名 PasswordVar-パスワードを含む変数 役割-ユーザー役割リスト 氏名-氏名 名前空間-開始エリア ルーチン-開始ルーチン ExpirationDate-ユーザーがアクティブ化されなくなる日 ChangePassword-次回ログイン時にパスワードを変更 有効-ユーザーがアクティブ化されているかどうか | ユーザーを作成または変更する |
ヴァール | マニフェスト | 名前-変数名 値-変数の値 | 変数の値を定義します |
変数
変数は属性値として機能し、次の3つの方法のいずれかで定義されます。
- $ {<Variable_name>}-マニフェストの実行中に、変数の値が計算されます(ユーザーまたは環境変数のいずれかによって渡されます。以下を参照)。
- $ {#<ParameterName>}-コンパイル時に、インストーラークラスの指定されたパラメーターの値に置き換えられます。
- #{<COS_code>}-マニフェストの実行中に、指定されたCOS式の値が計算されます。 引用符を忘れないでください。
パラメーター値はコンパイル段階で決定されるため、変数またはCOS式の一部にすることができます。 COSコードを解釈する前に変数の解釈が行われるため、変数をCOS式に含めることができます。例:
#{$ZCVT("${NAMESPACE}","L")}.
環境変数
次の変数は常に使用可能です。
可変 | 説明 | 値の例 |
Sourcedir | (キャッシュのインストール時のみ)インストーラーがあるディレクトリ(setup_cache.exeまたはcinstall) | /インターシステムズ/ distr / |
ISCUpgrade | (キャッシュのインストール時のみ)インストールまたはアップグレードするかどうかを決定します | 0(インストール) 1(更新) |
CFGDIR | INSTALLDIRを参照してください。 | /インターシステムズ/キャッシュ/ |
CFGFILE | cpfファイルへのパス | /InterSystems/Cache/cache.cpf |
CFGNAME | インスタンス名 | キャッシュ |
CPUCOUNT | CPUコア | 4 |
Cspdir | CSPディレクトリ | /インターシステムズ/キャッシュ/ csp / |
ホスト名 | Webサーバー名 | SCHOOL15 |
HTTPPORT | Webサーバーのポート | 80 |
INSTALLDIR | Cachéがインストールされているディレクトリ | /インターシステムズ/キャッシュ/ |
MGRDIR | 管理ディレクトリ(mgr) | /インターシステムズ/キャッシュ/ mgr / |
プラットフォーム | オペレーティングシステム | Unix |
港 | Cachéスーパーサーバーポート | 1972 |
プロセッサー | プラットフォーム名 | x86-64 |
バージョン | Cachéバージョン | 2015.1.1 |
デバッグ
属性がどの値を取ることができるかは明確ではありません。 明確にするために、setupメソッドの生成されたintコードを見てください。 通常、メインコールはメソッドです。
tInstaller.ElementName()
、
つまり 既にシステムメソッドを直接呼び出すクラスメソッド
%Installer.Installer 。 あるいは、クラス
%Installer., . %OnBeforeGenerateCode, %OnGenerateCode, %OnAfterGenerateCode.
, . TSTART / TROLLBACK , Caché ( Caché , ).
MDX2JSON . installer.xml MDX2JSON.Installer. .
:
do ##class(MDX2JSON.Installer).setup()
GitHub-, « » MDX2JSON MDX2JSON, MDX2SJON %All, REST- /MDX2JSON , .
.
Sample.Installer Samples.
CacheGitHubCI .
SYSMON Dashboards .
DeepSee Audit .
%Installer InterSystems Caché Ensemble.
コードを見ることができます
%Installer., . %OnBeforeGenerateCode, %OnGenerateCode, %OnAfterGenerateCode.
, . TSTART / TROLLBACK , Caché ( Caché , ).
MDX2JSON . installer.xml MDX2JSON.Installer. .
:
do ##class(MDX2JSON.Installer).setup()
GitHub-, « » MDX2JSON MDX2JSON, MDX2SJON %All, REST- /MDX2JSON , .
.
Sample.Installer Samples.
CacheGitHubCI .
SYSMON Dashboards .
DeepSee Audit .
%Installer InterSystems Caché Ensemble.
%Installer., . %OnBeforeGenerateCode, %OnGenerateCode, %OnAfterGenerateCode.
, . TSTART / TROLLBACK , Caché ( Caché , ).
MDX2JSON . installer.xml MDX2JSON.Installer. .
:
do ##class(MDX2JSON.Installer).setup()
GitHub-, « » MDX2JSON MDX2JSON, MDX2SJON %All, REST- /MDX2JSON , .
.
Sample.Installer Samples.
CacheGitHubCI .
SYSMON Dashboards .
DeepSee Audit .
%Installer InterSystems Caché Ensemble.
%Installer., . %OnBeforeGenerateCode, %OnGenerateCode, %OnAfterGenerateCode.
, . TSTART / TROLLBACK , Caché ( Caché , ).
MDX2JSON . installer.xml MDX2JSON.Installer. .
:
do ##class(MDX2JSON.Installer).setup()
GitHub-, « » MDX2JSON MDX2JSON, MDX2SJON %All, REST- /MDX2JSON , .
.
Sample.Installer Samples.
CacheGitHubCI .
SYSMON Dashboards .
DeepSee Audit .
%Installer InterSystems Caché Ensemble.
%Installer., . %OnBeforeGenerateCode, %OnGenerateCode, %OnAfterGenerateCode.
, . TSTART / TROLLBACK , Caché ( Caché , ).
MDX2JSON . installer.xml MDX2JSON.Installer. .
:
do ##class(MDX2JSON.Installer).setup()
GitHub-, « » MDX2JSON MDX2JSON, MDX2SJON %All, REST- /MDX2JSON , .
.
Sample.Installer Samples.
CacheGitHubCI .
SYSMON Dashboards .
DeepSee Audit .
%Installer InterSystems Caché Ensemble.
%Installer., . %OnBeforeGenerateCode, %OnGenerateCode, %OnAfterGenerateCode.
, . TSTART / TROLLBACK , Caché ( Caché , ).
MDX2JSON . installer.xml MDX2JSON.Installer. .
:
do ##class(MDX2JSON.Installer).setup()
GitHub-, « » MDX2JSON MDX2JSON, MDX2SJON %All, REST- /MDX2JSON , .
.
Sample.Installer Samples.
CacheGitHubCI .
SYSMON Dashboards .
DeepSee Audit .
%Installer InterSystems Caché Ensemble.
%Installer., . %OnBeforeGenerateCode, %OnGenerateCode, %OnAfterGenerateCode.
, . TSTART / TROLLBACK , Caché ( Caché , ).
MDX2JSON . installer.xml MDX2JSON.Installer. .
:
do ##class(MDX2JSON.Installer).setup()
GitHub-, « » MDX2JSON MDX2JSON, MDX2SJON %All, REST- /MDX2JSON , .
.
Sample.Installer Samples.
CacheGitHubCI .
SYSMON Dashboards .
DeepSee Audit .
%Installer InterSystems Caché Ensemble.
%Installer., . %OnBeforeGenerateCode, %OnGenerateCode, %OnAfterGenerateCode.
, . TSTART / TROLLBACK , Caché ( Caché , ).
MDX2JSON . installer.xml MDX2JSON.Installer. .
:
do ##class(MDX2JSON.Installer).setup()
GitHub-, « » MDX2JSON MDX2JSON, MDX2SJON %All, REST- /MDX2JSON , .
.
Sample.Installer Samples.
CacheGitHubCI .
SYSMON Dashboards .
DeepSee Audit .
%Installer InterSystems Caché Ensemble.
%Installer., . %OnBeforeGenerateCode, %OnGenerateCode, %OnAfterGenerateCode.
, . TSTART / TROLLBACK , Caché ( Caché , ).
MDX2JSON . installer.xml MDX2JSON.Installer. .
:
do ##class(MDX2JSON.Installer).setup()
GitHub-, « » MDX2JSON MDX2JSON, MDX2SJON %All, REST- /MDX2JSON , .
.
Sample.Installer Samples.
CacheGitHubCI .
SYSMON Dashboards .
DeepSee Audit .
%Installer InterSystems Caché Ensemble.
%Installer., . %OnBeforeGenerateCode, %OnGenerateCode, %OnAfterGenerateCode.
, . TSTART / TROLLBACK , Caché ( Caché , ).
MDX2JSON . installer.xml MDX2JSON.Installer. .
:
do ##class(MDX2JSON.Installer).setup()
GitHub-, « » MDX2JSON MDX2JSON, MDX2SJON %All, REST- /MDX2JSON , .
.
Sample.Installer Samples.
CacheGitHubCI .
SYSMON Dashboards .
DeepSee Audit .
%Installer InterSystems Caché Ensemble.
%Installer., . %OnBeforeGenerateCode, %OnGenerateCode, %OnAfterGenerateCode.
, . TSTART / TROLLBACK , Caché ( Caché , ).
MDX2JSON . installer.xml MDX2JSON.Installer. .
:
do ##class(MDX2JSON.Installer).setup()
GitHub-, « » MDX2JSON MDX2JSON, MDX2SJON %All, REST- /MDX2JSON , .
.
Sample.Installer Samples.
CacheGitHubCI .
SYSMON Dashboards .
DeepSee Audit .
%Installer InterSystems Caché Ensemble.
%Installer., . %OnBeforeGenerateCode, %OnGenerateCode, %OnAfterGenerateCode.
, . TSTART / TROLLBACK , Caché ( Caché , ).
MDX2JSON . installer.xml MDX2JSON.Installer. .
:
do ##class(MDX2JSON.Installer).setup()
GitHub-, « » MDX2JSON MDX2JSON, MDX2SJON %All, REST- /MDX2JSON , .
.
Sample.Installer Samples.
CacheGitHubCI .
SYSMON Dashboards .
DeepSee Audit .
%Installer InterSystems Caché Ensemble.
%Installer., . %OnBeforeGenerateCode, %OnGenerateCode, %OnAfterGenerateCode.
, . TSTART / TROLLBACK , Caché ( Caché , ).
MDX2JSON . installer.xml MDX2JSON.Installer. .
:
do ##class(MDX2JSON.Installer).setup()
GitHub-, « » MDX2JSON MDX2JSON, MDX2SJON %All, REST- /MDX2JSON , .
.
Sample.Installer Samples.
CacheGitHubCI .
SYSMON Dashboards .
DeepSee Audit .
%Installer InterSystems Caché Ensemble.