簡単なMZPインストーラ作成

投稿者: | 2016/03/06

今回はMZPパッケージの作成方法について。

MZPパッケージは複雑なスクリプトや構成ファイルを、ドラッグ&ドロップだけでインストール出来るようになる、Max用のインストーラファイルです。配布する側は一々インストールの説明が要らなくなりますし、使う側も楽なので、出来ればスクリプト配布時に利用したい所です。

とはいえMZPパッケージの作成は複雑な部分も多く、最初は何となく取っ付きづらい印象があると思います。そこで今回は一般的かつ最小限の構成での作成方法を説明したいと思います。

パッケージ構成

以下は必要なファイルとその説明です。
マクロファイルとインストールスクリプトは必要ないケースもあるのですが、今回は必要なモノとして考えます。

ファイル名 説明
mzp.run パッケージを作る上で絶対に必要になるファイルです。
ファイルのコピーや外部スクリプトの起動等を記述する事が出来ます。
install.ms インストールスクリプトです。
必ずしも必要ではなく、またこの名前である必要もありません。
インストール結果ダイアログを表示したり、mzp.runだけで実現出来ない複雑な処理を行う時に使用します。
sample.mse 暗号化したスクリプト本体です。必ずしも暗号化してある必要はなく、普通の.msファイルでも問題ありません。
sample.mcr マクロファイルです。暗号化したスクリプトは手動でツールバーに登録できないので、暗号化して配布する時は作っておいた方がいいです。

最終的に上記4つのファイルをZIP形式で圧縮することで、パッケージを作成します。

mzp.run

mzp.runはパッケージがMaxにドロップされた時、最初に実行されるコマンドファイルです。
ファイルのコピー等を記述する事が出来ますが、あまり複雑な処理は出来ません。

name "SampleTool"
version 1.00

copy "sample.mcr" to "$userMacros/SampleTool"
copy "sample.mse" to "$userScripts/SampleTool"

run install.ms
drop install.ms

clear temp
コマンド
name ツール名を指定します。
version ツールバージョンを指定します。
必ずしも浮動小数である必要はありません。
copy パッケージ内の特定のファイルを、指定したフォルダにコピー(配置)します。
指定出来るフォルダについては記号パス名を参照してください。
注意点として、Maxのインストールフォルダへコピーする場合、Maxが管理者権限で起動されているか、もしくはフォルダアクセス権を取得していないとコピーに失敗します。
また、コピー先にフォルダが無かった場合、自動的に作成されます。
run .mzpがドラッグ&ドロップ以外の方法で実行された時、指定したスクリプトを実行します。
drop .mzpがMaxにドロップされた時実行されます。このコマンドは1回しか実行出来ません。
clear temp .mzpパッケージが一時的に展開されたテンポラリフォルダを削除します。

run, dropはパッケージの起動方法によってどちらが呼び出されるかが変わります。
runはmzp.run内で複数回実行出来るのに対して、dropは何故か1回しか実行出来ません。基本的にはinstall.msを呼び出すだけにしておいて、細かい処理はそちらでやるようにした方がいいと思います。

その他のコマンドはリファレンスを参照してください。

install.ms

mzp.runから呼び出されるインストールスクリプトです。
絶対に必要というわけではないですが、細かい処理を行う場合はここの中で行うのが良いと思います。
今回はインストール結果の表示に使用しています。

(
    local mcrPath = @"$userMacros/SampleTool/sample.mcr"
    if doesFileExist mcrPath then
    (
        fileIn mcrPath
        local msg = "Category: SampleCategory \nMacroName: SampleTool"
        messageBox msg title:"Installation Completed" beep:false
    )
    else
        messageBox "MacroScript not found." title:"Installation Failed" beep:true
)

メッセージ内容はお好みで。
インストール直後にfileInでマクロをロードしてやることで、Maxの再起動なしにすぐにマクロを使えるようになります。

sample.mcr

スクリプトを呼び出す為のマクロファイルです。
スクリプトファイルが存在すればfileInで実行し、無ければエラーメッセージを表示します。

macroScript SampleTool
category:"SampleCategory"
(
    on execute do
    (
        try
            fileIn @"$userScripts/SampleTool/sample.mse"
        catch
            messageBox "Script not found." title:"Sample.mse"
    )
)

sample.mse

暗号化したスクリプトファイルの本体です。

暗号化したスクリプトは単体でツールバーやショートカットに登録できないという致命的な問題が有る為、ほぼマクロスクリプトとペアでリリースする事になります。必要ないケースとして、startupScriptsに配置して起動時に1度だけ実行するケース等があります。

パッケージ作成

作成した4つのファイルを全て選択し、ZIPファイルとして圧縮します。

ここで重要なのはファイルを入れているフォルダではなく、ファイルそのものを選択して圧縮する必要があるという点です。
最後にZIPファイルの拡張子を.mzpに変更して完成です。

Maxにドロップして、無事インストール完了ダイアログが表示されるか、マクロは実行出来るかを確認してください。

コメントを残す

メールアドレスが公開されることはありません。