著作一覧 |
今までと同じ方法でMSI化しても、なぜかインストールに失敗する。 よーく動作を眺めていると、最後にバッチファイルへパス名を埋め込む処理(一瞬rubyを実行するためのコンソールが表示される)の直後だということがわかる。
が、%TMP%へ作成しているはずのログが存在しない。
ってことは、post-install.rbを起動していないってことか?
はて。
でさらに何度か実行しながら%TMP%の内容を確認していると、MSIで始まるファイルが増えていることを発見。名前から行くとMSIのログだろう、というわけで中を見ると、うーん、わからん。
エラー 1722。 この Windows インストーラー パッケージには問題があります。セット アップの一部として実行されるプログラムは正しく完了しませんでした。サポート担当者 またはパッケージのベンダーに問い合わせてください。 操作 _3939ABBB_71C9_4592_B43D _6ED4B52BC86D, 場所: C:\Program Files (x86)\Ruby-1.9.1\bin\ruby.exe, コマンド: " C:\Program Files (x86)\Ruby-1.9.1\bin\post-install-1.9.rb" "C:\Program Files (x8 6)\Ruby-1.9.1\bin" === ログ終了: 2010/07/04 21:26:27 ===
しばらく考えてみるに、引数に与えているパス名がくさいということに気づく。
実は、MSIがエラーダイアログを表示した時点ではロールバックは行われていない。OKしてからだ。ということは、この時点でのインストールイメージは展開されていることになる。
ならば、post-installを手で実行してみるチャンスがある。
c:\PROGRA~2\Ruby-1.9.1\bin>ruby "C:\Program Files (x86)\Ruby-1.9.1\bin\post-install-1.9.rb" "C:\Program Files (x86)\Ruby-1.9.1\bin" Error loading gem paths on load path in gem_prelude unknown encoding name - filesystem <internal:gem_prelude>:69:in `find' <internal:gem_prelude>:69:in `set_home' <internal:gem_prelude>:38:in `dir' <internal:gem_prelude>:76:in `set_paths' <internal:gem_prelude>:47:in `path' <internal:gem_prelude>:286:in `push_all_highest_version_gems_on_load_path' <internal:gem_prelude>:355:in `<compiled>' ruby: unknown encoding name - Windows-31J (RuntimeError)
なんか、とてつもなく厄介そうだということはわかった。
あと、どうでも良い気もするけど、Web時代のエラーメッセージには、<は使わないほうが、開発者フレンドリーだよな。
ジェズイットを見習え |