MsiInstaller 2755 で泣かされるの巻

VirtualBox を 6.0.10 から 6.0.12 に上げる際にハマったのだけど、おそらく VirtualBox は無罪。内部的には VirtualBox のインストーラが間接的に使っている msiexec.exe が出しているエラーだと思われる。エラーのスクショは取り忘れたけど、だいたいこんな感じだと思っていただければ間違いない。

環境は Windows 10 Home 1903 で、ImDisk Virtual Disk Driver を入れて RamDisk を 4GB ほど取って Z: ドライブにマウントし、TEMP や TMP 環境変数を Z:\Temp に向けている。

c:\Windows\Installer のパーミッション等を見ても問題なさげ。どうもインストーラが msi を z:\Temp\VirtualBox 配下に展開したのはいいけど、その下の *.msi にアクセスできないように見える。

環境変数を消したりとかいろいろ試してみたけどラチが明かず。最後にやってみた作戦でとりあえず切り抜けた。

  1. 通常通りインストールを行う。最後の [Install] ボタンを押してエラーを発生させる。その後[OK]で終わらせる前に、以下の作業を行う。
  2. この時点で z:\Temp\VirtualBox というディレクトリが作られ、その中に common.cab と VirtualBox-6.0.12-r133076-MultiArch_amd64.msi が展開されている。
  3. この VirtualBox ディレクトリ配下を c:\Windows\Temp 配下にコピー。
  4. [OK]をクリックし、インストーラが致命的エラーで異常終了する。z:\Temp\VirtualBox はクリーンアップされる。
  5. c:\Windows\Temp\VirtualBox\VirtualBox-6.0.12-r133076-MultiArch_amd64.msi を直接指定して実行するとうまくいった。

しかし根本原因が知りたいところ。いったん VirtualBox を消したりしたので、再インストールできなかったら Vagrant 環境が壊滅するところだった。ちなみにトラブルシュートの途中でHow to fix “Error Code 2755” when installing programs or applicationsの手順通りやってたら、

Reimage advertisement

という気になる広告を見つけて、あやうく Reimage っていう詐欺ソフトに金を払ってしまうところだった。ツライ。