4D-jp 4D Japan Technical Support Team

複数のインタスタンスを起動


Windows 64ビット版は,ダブルクリックするだけで,アプリケーションのインスタンスがいくつでも起動できるようになりました。この改良により,マルチクライアントまたはマルチテナントを想定したビジネスアプリケーションであれば,同一のマシン上で複数のクライアントアプリケーションを起動し,それぞれ別のユーザーアカウントで同一のサーバーに接続する,といったことが容易になりました。

17r4以前のバージョンでは,同一のマシン上で複数のクライアントを起動し,同一のサーバーに接続するためには,ClientLocalという名称のフォルダー(ローカルリソースのキャッシュフォルダー)をそれぞれのクライアントをアプリケーションと同じフォルダーに作成する必要がありました。標準のキャッシュフォルダーは,サーバーの公開名・アドレス・ポート番号が同じであれば,同じものが使用されるためです。

ローカルリソースのキャッシュフォルダー(17r4)

\AppData\Local\{ApplicationName}\{DBName}_{ServerIP}_{ServerPort}

17r5以降,ローカルリソースのキャッシュフォルダーパスには,クライアントアプリケーションのフルパスから計算されたハッシュ値(10進数3桁)が追加され,コリジョンが検出された場合には,利用できるディレクトリがみつかるまで,自動的に値をインクリメントされるようになっています。使用中のキャッシュフォルダーには,inuse.txtおよびuuid.txtというテキストファイルが作成されます。前者には,アプリケーションのプロセス番号(pid)とアプリケーションのフルパスが改行コード(\n)で区切られて書き込まれています。後者には,クライアントのUUIDが書き込まれています。

17r5以降,ClientLocalという名称のフォルダーを作成する必要はありません。

ローカルリソースのキャッシュフォルダー(17r5)

\AppData\Local\{ApplicationName}\{DBName}_{ServerIP}_{ServerPort}_{hash}

注記: キャッシュフォルダーのパスは,Get 4D folder(4D Client database folder)で取得することができます。

ビルドされたアプリケーションは,デフォルトの設定で複数インスタンスの起動が禁止されています。具体的には,info.plistファイルに下記のキーが書き込まれています。

<key>SingleInstance</key>
<string>0</string>

このキーは,BUILD APPLICATIONで指定するプロジェクトのキーで設定することができます。

<Preferences4D>
   <BuildApp>
      <CS> 
         <ClientWinSingleInstance>False</ClientWinSingleInstance>
      </CS> 
   </BuildApp>
</Preferences4D>

このキーは,Windows版のビルドされたクライアントアプリケーションで有効です。Windows版のビルドされたスタンドアロンアプリケーションは,常に複数インスタンスの起動が禁止されています。

注記: Macでは,コマンドラインからopen -nと命令することにより,同一アプリケーションのインスタンスを起動することができます。


関連記事

リンク