4Dを使用して、クライアントの自動更新をサポートするクロスプラットフォームなクライアント/サーバーアプリケーションをビルドできます。この設定はアプリケーションビルドダイアログのクライアント/サーバー ページで行います。
クライアント/サーバーアプリケーションは、以下の3つの項目の組み合わせから成ります:
コンパイルされた4Dストラクチャー 4D Serverアプリケーション (ダブルクリックで起動可能なサーバーアプリケーション) 4D Volume Desktopアプリケーション (Mac OS / Windows) (サーバーに接続可能な専用クライアントアプリケーション) ビルドを行うと、クライアント/サーバーアプリケーションは2つのカスタマイズされたパーツ (サーバーと、各クライアントマシンにインストールするクライアント) で構成されます。比較のために記載すると、ビルドされていない標準の構成では4D Serverアプリケーション、ストラクチャーファイル、データファイル、リモートモードで使用する4Dアプリケーションが必要です。
クライアント/サーバーアプリケーションは起動や接続処理が簡易になるようカスタマイズされています:
サーバーを起動するには、サーバーアプリケーションをダブルクリックします。ストラクチャーを選択する必要はありません。 クライアントを起動するには、クライアントアプリケーションをダブルクリックします。すると、サーバーアプリケーションへの接続が直接行われるため、接続ダイアログでサーバーを選択する必要はありません。クライアントは接続対象のサーバーを名称 (サーバーが同じサブネットワーク上にある場合)、あるいはIPアドレスによって認識します。IPアドレスの指定は buildapp.xml ファイル内の IPAddress XMLキーを使用して設定されます (次章を参照ください)。接続が失敗した場合のために、代替機構を実装することができます。これについては クライアントアプリケーションによる接続の管理 の章で説明されています。 また、Option (Mac OS) や Alt (Windows) キーを押しながらクライアントアプリケーション起動すると、標準の接続ダイアログを強制的に表示させられます。 サーバーアプリケーションに対応するクライアントアプリケーションのみが接続を行えます。標準の4Dアプリケーションを使用してサーバーアプリケーションに接続を試みると、接続は拒否されエラーが返されます。 さらに、クライアント/サーバーアプリケーションにおいてはネットワーク越しにクライアント側を自動更新する設定も可能です。この点については サーバーアプリケーション内部のクライアントアプリケーションをコピー を参照ください。
また、いくつかのランゲージコマンドを使用して、サーバーアプリケーションの更新を自動化することも可能です(サーバーまたはシングルユーザー向けアプリの自動アップデート 参照)。
サーバーアプリケーションをビルド : ビルドフェーズでサーバー部分をビルドするためにはこのオプションを選択します。使用する4D Serverアプリケーションの場所を選択しなければなりません。この4D Serverはビルドを行うプラットフォームに対応していなければなりません (つまり、例えばWindows用のサーバーをビルドするためにはWindows上でビルドを実行する必要があります)。 4D Serverフォルダーを選択するには[...] ボタンをクリックします。Mac OSでは4D Serverパッケージを選択します。 現在のバージョン : 生成されるアプリケーションのバージョン番号を指定するために使用されます。このバージョン番号をもとに、クライアントアプリケーションからの接続を受け入れたり拒否したりできるようになります。クライアントとサーバーアプリケーションで互換性のある番号の範囲はXMLで設定します (パラメーターのXMLキー 参照)。 クライアントアプリケーションをビルド : ビルドフェーズでクライアント部分をビルドするためにはこのオプションを選択します。使用する 4D Volume Desktopアプリケーションの場所を選択しなければなりません。この 4D Volume Desktopはビルドを行うプラットフォームに対応していなければなりません。他方のプラットフォームのクライアントアプリケーションをビルドするためには、そのプラットフォームで実行する4Dアプリケーションを使用して追加のビルド処理を行わなければなりません。これはクライアントアプリケーションの最初のバージョンにのみ必要なものです。それ以降のアップデートは同じプラットフォーム上であれば自動アップデート機構を使用すれば直接管理する事ができるからです。この点については後述します。 4D Volume Desktopフォルダーを選択するには[...] ボタンをクリックします。Mac OSでは4D Volume Desktopパッケージを選択します。 注: 4D v15以降、4D Serverと4D Volume Desktopのバージョン番号は、4D Developer Editionのバージョン番号と合致する必要があります。例えば、4D Developer v15.4を使用している場合、4D Server v15.4および4D Volume Desktop v15.4を選択する必要があります。
クライアントアプリに、特定のアドレスを使用して(サブネットワーク上にサーバー名が公開されていない)サーバーに接続したい場合、 buildapp.xmlファイル内のWP Import document XMLキーを使用する必要があります。この点についてのより詳細な情報については、BUILD APPLICATION コマンドの詳細を参照して下さい。接続失敗時の特定の機構を実装することもできます。提案される別のシナリオについては、クライアントアプリケーションによる接続の管理 の章で説明されています。
実行可能クライアント/サーバーアプリケーションビルド中に、4Dは4D Serverフォルダーの内容をServerサブフォルダーに、4D Volume Desktopフォルダーの内容をClientサブフォルダーにコピーします。元の4D Serverと4D Volume Desktopの内容を必要に応じてカスタマイズできます。
例えば以下のようなことが可能です:
特定の言語に対応した4D Serverをインストールする PlugInsフォルダーにプラグインを追加する 注 : Mac OSでは4D Serverがパッケージとして提供されます。内容を見るためにはまず (Control+クリック してメニューから選択し) パッケージを開かなくてはなりません。
このオプションでは、組み込みアプリとローカルなデータファイルとのリンクモードを選択する事ができます。二種類のリンクモードが選択可能です。どちらも一長一短なので、必要に応じて適切なモードを選択して下さい。
注: このオプションはアプリケーション配布では新しいアーキテクチャーを使用 互換性オプションがチェックされている場合にのみ選択可能です(互換性ページ の章を参照して下さい)。
アプリケーション名 を使用(デフォルト) このモードでは、4Dアプリケーションはストラクチャーファイルに対応する、最近開かれたデータファイルを開きます。この柔軟で直感的なモードではアプリ ケーションパッケージをディスク上で自由に移動させる事ができます。このモードはアプリケーションを複製したい場合を除き、一般的には組み込みアプリに対して使用されるべきです。アプリケーションパス を使用 このモードでは、組み込み4Dアプリケーションはアプリケーションの lastDataPath.xml ファイルを解析し、アプリケーションのフルパスに合致する、"executablePath"属性を持ったデータファイルを開こうとします。そのようなエントリーが見つかった場合、それに対応する("dataFilePath"属性で定義される)データファイルが開かれます。それ以外の場合、最後に開かれたデータファイルが開かれます(デフォルトモード)。 このモードでは、データファイルへのリンクを保ったまま組み込みアプリを複製する事ができま す。しかしながら、このオプションを使用している場合、アプリケーションパッケージをディスクに移動すると、アプリケーションパスは"executablePath"属性と合致しなくなるため、ユーザーはデータファイルの場所を指定を求められます(ユーザーがデータファイルを選択すると、lastDataPath.xml ファイルはそれに基づいて更新されます)。データリンクモードについての詳細な情報については、データリンクモードを設定する の章を参照して下さい。
このエリアのオプションを使用して、新しいバージョンのアプリケーションがビルドされた際の、ネットワーク越しのクライアント/サーバーアプリケーションのクライアント部分更新メカニズムを設定できます。
Windows/Macintosh クライアントアプリケーションの自動更新を許可する: これらのオプションを選択すると、ネットワーク越しの自動クライアント更新を有効にすることができます。 クロスプラットフォームなクライアントアプリケーションを作成するには、ビルドを行うのとは別のプラットフォーム用の4D Volume Desktopアプリケーションを選択する必要があります。例えばWindows上で[...] ボタンをクリックし、Mac OS用の4D Volume Desktop.appフォルダーを選択します。 クライアントアプリケーションの更新は、新しいバージョンの4D Serverを使用する場合になどに必要となります。
ストラクチャーの更新は常に自動で各クライアントマシンに適用される点に留意してください。
自動更新機能を使用すれば、手作業で各クライアントマシンに新バージョンの4Dをインストールする手間を省くことができます。
この設定を有効にしたサーバーが更新されると、各クライアントマシン上に自動で通知が行われます。これは以下のように動作します: アプリケーションビルダーを使用して新しいバージョンのクライアント/サーバーアプリケーションをビルドする際、新しいクライアントはApplicationName Server 内のUpgrade4DClient フォルダーに圧縮して格納されます (Mac OSでは、これらのフォルダーがサーバーパッケージ内に配置されます)。クロスプラットフォームクライアントアプリケーションを生成する処理を行った場合、各プラットフォーム用に .4darchive という更新ファイルが含められます:
クライアントアプリケーション更新通知を行うために、古いサーバーアプリケーションを新しいバージョンで置き換えて起動します。残りの処理は自動で行われます。
クライアント側では古いバージョンのクライアントが更新されたサーバーに接続を試みると、新しいバージョンが利用可能な旨を表示するダイアログがクライアントマシン上に表示されます。ユーザーはダイアログを受け入れるかキャンセルできます。
ユーザーがOK をクリックすると、新バージョンがネットワーク越しにクライアントマシンにダウンロードされます。ダウンロードが完了すると古いクライアントアプリケーションが閉じられて、新しいバージョンが起動しサーバーに接続します。古いバージョンはゴミ箱に移動されます。 ユーザーがキャンセル をクリックすると、更新はキャンセルされます。古いバージョンのクライアントの接続がプロジェクトXMLで許可された番号の範囲外である場合 (後述)、アプリケーションは閉じられて、接続を行うことはできません。そうでなければ接続が行われます。 互換性に関する注意: 4D v14 以降でビルドされたクライアントアプリケーションのみが自動アップデート機能を利用することができます。
更新のダウンロードをキャンセルさせたくない場合、例えば新しいメジャーバージョンの4D Serverを使用するような場合 (この場合古い4Dが4D Serverに接続することは不可能です)、新しいバージョンのクライアントアプリケーションを各クライアントマシンに必ずインストールしなければなりません。
更新を強制するためには、サーバーアプリケーションと互換性のあるバージョン番号の範囲からクライアントアプリケーションの現在のバージョン番号を除外します。このようにすれば更新メカニズムは更新されていないクライアントからの接続を拒否します。例えばクライアントサーバーアプリケーションの新しいバージョン番号がの6の場合、バージョン番号が5以下のクライアントアプリケーションを許可しないようにできます。
現在のバージョン番号はアプリケーションビルドダイアログのクライアント/サーバーページで設定できます (前述)。接続を許可するバージョン番号の範囲はプロジェクトXMLファイルで指定します。この点に関する詳細はパラメーターのXMLキー を参照してください。
クライアントアプリケーションの更新を実行できなかった場合、クライアントマシンには以下のメッセージが表示されます: "クライアントアプリケーションの更新に失敗しました。アプリケーションは終了します。"
このエラーが発生する原因は複数ありえます。このエラーが表示されるような場合はまずいかの点をチェックしてみてください:
パス名 : アプリケーションビルドダイアログやXMLキー (例えば ClientMacFolderToWin ) で指定されたパス名の有効性をチェックしてください。特に4D Volume Desktopへのパスをチェックしてください。読み書き権限 : クライアントマシン上でカレントユーザーがクライアントアプリケーションを更新する書き込みアクセス権を持っているか確認してください。
クライアント/サーバーアプリケーションをビルドすると、保存先フォルダー内にClient Server executable という名前の新しいフォルダーが作成されているはずです。このフォルダーにはさらに2つのサブフォルダー、ApplicationName ClientとApplicationName Serverがあります:
注: エラーが発生した場合これらのフォルダーは作成されません。そのような場合はエラーの原因を特定するためにログファイル (ログファイル 参照)の内容を調べてください。
ApplicationName Client フォルダーにはアプリケーションビルダーが実行されたプラットフォームに対応するクライアントアプリケーションがコピーされます。このフォルダーを各クライアントにインストールします。ApplicationName Server フォルダーにはサーバーアプリケーションがコピーされます。
これらのフォルダーの内容はカレントのプラットフォームにより異なります:
Windowsでは各フォルダーにApplicationName Client.exe (クライアント用) あるいはApplicationName Server.exe (サーバー用) という名前の実行可能ファイル、およびそれぞれに対応する.rsrファイルが作成されます。さらにこれらのフォルダーにはアプリケーション実行のために必要な様々なファイルやフォルダー、および元の4D Serverや4D Volume Desktopに追加されたカスタマイズ項目がコピーされます。 Mac OSでは各フォルダーにApplicationName Client (クライアント用) とApplicationName Server (サーバー用) という名前のアプリケーションパッケージが作成されます。各パッケージには動作に必要なすべてのファイルが含まれます。Mac OSではアプリケーションを実行するためにパッケージをダブルクリックします。 注: ビルドされたMac OSパッケージの内容を表示するにはアイコンをControl+クリック して、"パッケージの内容を表示"を選択します。
"クライアントの自動更新を許可する"オプションを選択している場合、ApplicationName Server フォルダー/パッケージには追加でUpgrade4DClient サブフォルダーが作成されます。このフォルダーにはクライアントアプリケーションが圧縮されて格納されます。このファイルは自動クライアントアプリケーション更新時に使用されます。
サーバーやクライアントをWebサーバーとして使用する場合、Webサーバーが使用するファイルを特定の場所に配置しなければなりません:
cert.pem と key.pem ファイル (オプション): これらのファイルはSSL接続で使用されます。 デフォルトWebルートフォルダー (WebFolder) Windows
サーバーアプリケーション: これらの項目はサーバーアプリケーションフォルダー内にインストールします: Client Server executable\ApplicationName Server\Server Database サブフォルダー クライアントアプリケーション: これらの項目はクライアントアプリケーションフォルダー内にインストールします: Client Server executable\ApplicationName Client サブフォルダー Mac OS
サーバーアプリケーション: これらの項目はApplicationName Serverソフトウェアパッケージと同階層にインストールします。 クライアントアプリケーション: これらの項目はApplicationName Clientソフトウェアパッケージと同階層にインストールします。
4D ではクライアントアプリケーションにコンパイル済ストラクチャーを埋め込むことができます。この機能を使用すると、例えば、.4dlink ファイルをOPEN DATABASE コマンドで実行することでユーザーに異なるサーバーアプリケーションにアクセスできるような"ポータル"アプリケーションを提供することができるようになります。
この機能を有効化するためには、buildApp 設定ファイルに DatabaseToEmbedInClientWinFolder または DatabaseToEmbedInClientMacFolder キーを追加します。このどちらかのキーがあれば、アプリケーションビルドプロセスの途中で組み込みシングルユーザーアプリケーションが生成されます。コンパイルされたストラクチャーは、EnginedServer.4Dlink ファイル内ではなく、"Database"フォルダー内に置かれます。
シングルユーザーアプリケーション内にDefault data フォルダーがあれば、アプリケーションにはライセンスが埋め込まれます。 シングルユーザーアプリケーション内にDefault data フォルダーがなければ、アプリケーションはデータファイルとライセンスなしで実行されます。 基本シナリオは以下の通りです:
アプリケーションビルドダイアログボックス内にて、"コンパイルされたストラクチャーをビルド"オプションを選択し、シングルユーザーモードで使用されるデータベースのファイルを.4DC または .4DZ ファイルを生成します。 クライアント/サーバーアプリケーションのbuildApp.4DSettings ファイル内に、以下のxml キーを使用してコンパイルされたシングルユーザーデータベースを格納しているフォルダへのパスを支持します: DatabaseToEmbedInClientWinFolder DatabaseToEmbedInClientMacFolder クライアント/サーバーアプリケーションをビルドします。このとき以下のような結果が生まれます: シングルユーザーデータベースのフォルダー全体が、組み込みクライアントの"Database" フォルダー内にコピーされます。 Database フォルダーのEnginedServer.4Dlink ファイルは生成されません。 シングルユーザーデータベースのコピーの.4DC、.4DZ、.4DIndy ファイルは、ファイル名が組み込みクライアントの名前へと変更されます。 組み込みクライアントのinfo.plist にはPublishName キーはコピーされません。 シングルユーザーデータベースに"Default data"フォルダーがない場合、組み込みクライアントはデータなしで実行されます。 4D Server の自動アップデート機能(CurrentVers キー、SET UPDATE FOLDER コマンドなど...)はシングルユーザーアプリケーションにおいても、標準のリモートアプリケーションと同様に動きます。接続時、シングルユーザーアプリケーションはCurrentVers を4D Server バージョンレンジと比較します。もしCurrentVers がレンジの外側だった場合、アップデートされているシングルユーザーアプリケーションがサーバーからダウンロードされ、アップデーターがローカルアップデートプロセスを実行します。