この Zip ファイル スクリプト パッケージ ファイルは通常の .ms ファイルと同じように実行できます。ツールで必要な二次的なファイルは、メインのツール スクリプトの実行前に、パッケージ内で自動的に検出されるか、指定した場所に自動的に抽出されます。
スクリプト パッケージのファイル タイプは .mzp です。これらのスクリプト パッケージが、実行可能なスクリプト ファイルとして認識されるのは次のような場合です。
MAX の起動時のオートロード。scripts¥startups や stdplugs¥stdscripts などに格納されている .mzp ファイルが実行されます。
メインの [MAXScript]メニューまたは[リスナー](Listener)メニューのメニュー項目の[スクリプトを起動](Run Script)を選択すると、実行可能なファイルの既定の種類の 1 つとして .mzp ファイルが [スクリプトを開く](Open Script) ダイアログ ボックスに表示されます。 ファイルを選択すると、.mzp ファイルが起動されます。
fileName の指定:コールバック スクリプトを追加する場合のパラメータ。
fileIn <fileName> 関数を使用するとき、.mzp パッケージを fileIn に指定できます。
パッケージのスタートアップ コントロール ファイルは mzp.run です。mzp パッケージを開くと、パッケージ内で mzp.run ファイルが検索されます。 ファイルが見つかると、その中のパッケージ コマンドが順番に実行されます。
パッケージ内に mzp.run コントロール ファイルがない場合、MAXScript ではすべてのファイルをシステムの Temp ディレクトリ内にある個別の一時ディレクトリに解凍し、その中の実行可能ファイルをすべて実行します。 このときの実行順序は決まっていません。mzp パッケージ内のスクリプト ファイルの種類には、ms、 .mse および ネストされた .mzp ファイルがあります
.mzp ファイルの内容が、既定の一時フォルダまたは mzp.run コントロール ファイルで定義された抽出先フォルダに抽出されるとき、MAXScriptでは、mzp ファイル内のフォルダ構造がすべてそのまま構築および複製されます。
mzp.run ファイル内の 「run」コマンドまたは前項で説明した既定の実行方法でパッケージ内のスクリプト ファイルを実行すると、.bmp イメージ ファイルや include ファイルなどのスクリプト実行中に開かれるファイルがパッケージ内で検索されます。 パッケージ内で検索されるのは相対パス名のファイルのみで、完全に指定されたパス(先頭にデバイス名が付くパス)の場合は指定された場所で検索されます。
コマンドに指定するファイル名やディレクトリ名は、次のような文字だけで構成されている場合であれば二重引用符で囲む必要はなくなりました
英数字、_、$、*、.、-、\。途中にスペースがあるファイル名や、上記のリストにない記号を使用するファイル名の場合は二重引用符で囲む必要があります。
zip パッケージは、次のコマンドを 1 つ以上含むテキストファイルです。すべてオプションで省略可能です。
パッケージに関する説明です。通常、パッケージ内の readme ファイルで実行に関する追加指示を提供します。
パッケージ内のファイルを抽出する場所を指定します。これは(ドライブ文字または から始まる)絶対パス名または相対名のどちらにすることもできます。相対名は、既定の一時ディレクトリに対して相対的であると解釈されます。MAX のメインの実行可能ディレクトリを指定するには、特別なプレフィックス $max を使用できます。
パッケージが MAXScript のメニュー項目[スクリプトを起動](MAXScript run)または fileIn() 関数を通して起動された場合に、指定されたスクリプト ファイルを実行します。複数の run コマンドを使用でき、コマンドは順番に実行されます。実行する明示的なスクリプト ファイルで指定された、 fileIn() 呼び出しを使用してパッケージが起動された場合、run コマンドは無視されます。 mzp.run ファイルの実行中は、「 run 」コマンドはすべて無視されます。詳細は、.mzp ドロップ プロトコルを参照してください。
パッケージが MAX へのドラッグアンドドロップで起動された場合に、指定された dropScript ファイルを実行します。指定できるファイルは 1 つの msp.startup ファイル内に 1 つだけです。
指定された 1 つまたは複数のファイル(<files> の文字列にワイルドカードが入っている場合)を所定のディレクトリにコピーします。ここでは特別なプレフィックス、 $max を使用できます。
指定されたスクリプトがすべて実行または解除されたときに、一時的に抽出したファイルを削除します。
現在実行されている MAX セッションが終了したときに、一時的に抽出したファイルを削除します。
ファイルを開くかリセットが実行されたときに、一時的に抽出したファイルを削除します。
1 つの mzp.run ファイルで使用できる「 open 」または「 import 」コマンドは 1 つだけです。使用できる「 merge 」コマンドと「xref」コマンドの数に制限はありません。
現在のパッケージ ファイル内で相対ファイル名として指定されているファイルの検索は、次の関数によって行われます。
loadMAXFile <filename> mergeMAXFile <filename> ... getMAXFileObjectNames <filename> importFile <filename> ... loadMaterialLibrary <filename>
指定された .bmp ビットマップ ファイルのパッケージ内での検索は、次の UI 項目によって行われます。
bitmap <name> fileName:<filename> button <name> images:<image_spec_array> checkButton <name> images:<image_spec_array>
相対ファイル名には、次のようなパス名を入れることができます。
例: |
この場合、抽出されたパッケージの「libs」フォルダ内で「myFns.ms」が検索されます。パッケージ内の内容は、必要に応じてネストしたどのフォルダにも配置することができます。実行スクリプトまたは mzp.run コントロール ファイル内のファイルの名前は、パッケージのディレクトリ構造に対して相対的に解釈されます。 |
copy "<from>" to "<to>" [noReplace] move "<from>" to "<to>" [noReplace] treeCopy "<from>" to "<to>" [noReplace] treeMove "<from>" to "<to>" [noReplace]
これらは、パッケージ内のファイルを指定されたとおりにコピーまたは移動します。treeCopy と treeMove の場合は、ファイルの格納されているネストされたディレクトリ全体を移動します。既定の設定では、コピー先または移動先の場所に既存ファイルがある場合には、新しく抽出されたファイルで置き換えられます。これを防止するには、「noReplace」キーワードを追加します。
<to> には必ずディレクトリを指定します。treeCopy/Move は、ソース サブディレクトリを <to> で指定されたディレクトリ内に複製します。コピーおよび移動の <from> の指定には、相対ファイル名、絶対ファイル名、またはワイルドカード パターンを使用できます。相対ファイル名の場合は、パッケージ内の相対的な位置が検索されます。完全に指定された名前は、メインのファイルシステム内で検索されます。
treeCopy/Move の <from> には、ディレクトリのパスを指定できます。この場合、ディレクトリ全体およびそのサブディレクトリがコピー/移動されます。ワイルドカードによるパス名を指定した場合には、それに一致するファイルやディレクトリ ツリーのみがコピー/移動されます。
各種コマンド(extract to、run、copy、move など)には、$ で始まる特別なパス名も指定できます。 特別なパス名によって、現在実行されている MAX の中の場所を指定します。
$max - main MAX executable directory $maps - first directory in Maps directory config $scenes - scenes directory $fonts - fonts directory $imports - imports directory $sounds - sounds directory $matlibs - matlibs directory $scripts - scripts $startupScripts - auto-load startup scripts $plugins - first in the Plug-ins directory config $plugcfg - plugcfg $images - images $ui - UI $macroScripts - macroScripts in UI directory $web - web directory $temp - system temp directory
これらのディレクトリは、ユーザが各種ユーザ設定ダイアログ ボックスで設定したカスタマイズを反映します。
例: |
複数のディレクトリのシーン ファイル、プラグイン ファイルとマップファイルを含むパッケージを構成した場合、次のように move コマンドを使用して、mzp.run ファイル内でこれらのファイルをインストールすることができます。 |
.mzp は、WinZip のような zip ユーティリティで作成できます。その後、ユーティリティを .mzp タイプと関連付ければ、.mzp ファイルをダブルクリックするだけでそれをエディタで開けます。この関連付けは一度だけ行えば十分です。これには、Windows エクスプローラで .mzp ファイルを選択し、[Shift]を押しながら右クリックして、表示されるポップアップ メニューで[アプリケーションから開く...](Open with...)を選択します。表示されるアプリケーションのリストで必要な zip ユーティリティを見つけ、ダイアログ ボックスの最下部にある[この種類のファイルを開くときは、いつもこのアプリケーションを使う...](Always use this program ...)チェックボックスにチェックマークを付けます。
MAXScript zip パッケージ インタフェースでは、スクリプタから呼び出し可能な 2 つの MAXScript 関数を公開しています。
「fileInPackage」関数は、本質的に次の関数と同じです。
成功した場合は true、失敗した場合または .mzp ファイルが存在しないか無効な場合は false を返します。また、パッケージ ファイルの抽出先のディレクトリを参照渡しの引数 <extractDirVar> に返します。
「unloadPackage」関数は、抽出を行ってから、その中の mzp.run ファイル内にあるファイル コピー コマンドと移動コマンドをすべて実行します。ただし、パッケージ内のスクリプトは実行しません。extractTo ディレクトリと「ドロップ」コマンド ファイルは参照渡し引数で返されます。