Maxのバージョン、サービスパック、ビルド番号を取得する

投稿者: | 2018/03/10

MaxScriptから、Max本体のバージョンを知る方法として、maxVersion関数があります。
maxVersion関数を使用すると、Maxのバージョン番号、max API番号、SDK改訂番号を含む配列を取得する事が出来ます。

以下は3ds Max 2016でコマンドを実行した例です。

maxVersion()
-- > #(18000, 46, 0)

ここで、18000というのがMax 2016を表しています。

しかし困ったことに、異なるサービスパックが適用されていても、この関数は同一の値を返してきます。
MaxScriptではサービスパックによって挙動が変わる事はよくあり、それによって挙動を変えなければならない事も度々起こるので、出来ればサービスパックの番号も知りたいところです。

そこで、Maxの実行ファイルから直接バージョン情報を取得し、扱いやすい形に変換する関数を定義してやります。

-- Maxのバージョンを整数配列で取得します。
-- Return: #(version, sp number, build number)
fn getMaxVersionInfo =
(
    local verStr = getFileVersion (getDir #maxRoot + "\\3dsmax.exe")
    local tokens = filterString verStr ",\t " splitEmptyTokens:false
    for i = 1 to 3 collect tokens[i] as integer
)

この関数をサービスパックが適応されていない3ds Max 2016で実行すると、以下のような値を返します。

getMaxVersionInfo()
-- > #(18, 0, 873)

この値は、1つ目がMax番号、2つ目がサービスパック番号、3つ目がビルド番号を表しています。

SP4適応済みの2016では以下のような値に変わります。

getMaxVersionInfo()
-- > #(18, 8, 739)

3つ目の値はビルド番号なので無視するとして、2つ目の値でサービスパックが変更されている事がわかります。

残念ながら、この値が直接Maxやサービスパックの番号(SP4なら4など)を表しているわけではありませんが、少なくともこの関数で、現在の実行ファイルの実際の番号を知る事が出来ます。

Maxのバージョン、サービスパック、ビルド番号を取得する」への1件のフィードバック

コメントを残す

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