Movable Typeのインストールウィザードが進まない場合の対処

MTQに、「Movable Typeのインストールウィザードを実行したところ、最初のステップで『進む』のボタンをクリックしても、次のステップに進まない」という質問が上がっていました。
この問題の原因と対処方法を紹介します。

1.原因

当方の手元の環境で、同じ現象が起きる場合があったので、Movable Typeのインストールウィザードをデバッガで実行しながら原因を探ってみました。
すると、「mt-staticディレクトリのmt.jsファイルにアクセスできるかどうかを確認し、アクセスできなければ、最初のステップに戻ってエラーメッセージを出力する」という処理があって、そこが問題であることが分かりました。

Webブラウザからmt.jsにアクセスすると、問題なくアクセスできました。
しかし、問題が起こっている環境では、サーバー上で同じサーバーにあるmt.jsにアクセスしようとすると、なぜか接続することができませんでした。
接続元のIPアドレスが制限されているなど、サーバーの設定に何か問題があるようです。
このような状況になっていると、インストールウィザードが先に進まなくなります。

なお、本来ならエラーメッセージが画面に表示されるはずです。
ただ、エラーになった状態でHTMLを調べてみると、エラーメッセージの部分がなぜか「display:none」の状態になっていました。
そのためエラーメッセージが表示されず、単に最初のステップに戻っているだけのように見えていました。

2.対処方法・その1

本質的な対処方法は、サーバーの設定を見直して、mt.jsに正しく接続できるようにすることです。
ただ、レンタルサーバーの場合など、サーバーの設定を変えられない場合もあります。
この時は、MT側でどうにかする必要があります。

対処方法の1つは、mt-config.cgiファイルを手動で作ることです。
Movable Typeのインストール先ディレクトリに、mt-config.cgiファイルのサンプル(mt-config.cgi-original)があります。
それを参考にして、CGIPath/StaticWebPathやデータベースの接続情報等を記述します。
mt-config.cgiファイルを設置した後で、Movable Typeのインストールウィザードを起動すれば、ウィザードの途中から作業を進めることができます。

3.対処方法・その2

もう1つの対処方法は、Movable Typeのインストーラのソースコードを書き換えて、mt.jsのチェックをスキップすることです。
この方法を取れば、mt-config.cgiを自力で作らずに、ウィザードでインストールすることができます。

Movable Typeのインストール先の中の、lib/MT/AppディレクトリにあるWizard.pmファイルを書き換えます。
Movable Type 6.0.2だと、Wizard.pmの545行目付近に、以下のような部分があります。

unless ( $app->is_valid_static_path($static_path) ) {
    $param{uri_invalid}       = 1;
    $param{set_static_uri_to} = $app->param('set_static_uri_to');
    return $app->build_page( "start.tmpl", \%param );
}

これらの各行の先頭に「#」を入れてコメント化し、この部分の処理をスキップするようにします。