InstallShieldで作ったインストーラが信じられないくらい遅いので調べたところ、どうもセキュリティ更新プログラム KB2918614 に問題があるようなのです。
作ったインストーラはDVD-ROMから4GBくらいインストールするのですが、インストールを開始してすぐ、準備段階でプログレスバーが止まったまま10分程度まったく動かなくなります。それを過ぎるとファイルのコピーが始まり、最終的には正常にインストールが完了するのですが、以前はこんなこと起きなかったのにどうなっているんだろうと思い色々調べてみました。
タスクマネージャでmsiexec.exe(.msiを実際に実行するプロセス)のI/O読み取りバイト数を見てみると、止まっている間でもガンガン何かを読み込んでいることが分かります。4GBくらい読み込んだところでプログレスバーが動き始めコピーをしていると表示があり、また4GBくらい読み込むとインストールが終了します。インストールするファイル(もちろん無圧縮、アーカイブ無し)を計2回も読み込んでいるようなのです。そりゃ遅いはずです。それもそのうち最初の1回はプログレスバーが全く動きません。DVD-ROMから4GB読み込むのに10分くらいかかりますから、その間止まっているように見えるわけです。
試しにHDDにインストーラをコピーしてから実行したり、新しくWiX Toolsetでmsiを作ってみたりしましたが、やはりWindows Installerを使う限り二回読み込むことには変わりないようです。
同じインストーラの作り方で以前はこのようなことは起きませんでした。なので以前作ったインストーラを調べてみたのですが、今実行するととてつもなく遅い! 同じ問題が起きています。これはOS側、Windows Installer側に何かあったのでは無いか、と思いました。
Webで色々調べているとKB2918614という単語を見かけました。
【至急】KB2918614適用後、アプリケーションの画像データのインストールに非常に時間がかかるようになった - マイクロソフト コミュニティ
一般コンシューマ向けパッケージソフト製品開発を行っている企業で、開発者をしております。
8/13のWindows UpdateでKB2918614適用後、以下のようなコンポーネントのインストールに非常に時間がかかるようになってしまいました。
環境によっては数時間同じ画面で停止しているという状況になりますので、エンドユーザーから見るとインストールが停止したような形になります。
おそらくは問い合わせが多数寄せられると思いますので、まずはユーザーへの対応策を検討する必要があります。
..略…
膨大なロットを市場に出荷しており、発売直後に第1の売り上げのピークを記録するというソフトウェア製品の性格上、
対応次第ではかなりの損害が出てしまいかねない状況ですので、大至急ご確認をお願いいたします。
なかなか生々しいですね……。
KB2918614はMS14-049の脆弱性を解決するためのセキュリティ更新プログラムのようです。出たのは今年の8月。
筆まめやウィルスバスターなど、いくつかの製品のサポート情報では対策としてKB2918614のアンインストールを挙げています。
- 【筆まめネット】サポート「筆まめVer.25」製品 Q&A「イラスト・個人法人電子電話帳のインストールが進まない」
- ウイルスバスター クラウド (Ver. 8.0) をインストールするとインストールエラー #1603,0,0x00000000 が表示される | サポート Q&A:トレンドマイクロ
その他Twitterを検索してみると8月にKB2918614が出て以降、様々なアプリケーションがインストール不能に陥っているようですね。
試しにKB2918614をアンインストールして再度インストーラの動きを確認してみました。するとすぐにコピーが始まりますし、msiexec.exeは1回分(4GB)しか読み込みません。再度KB2918614を入れると遅くなります。KB2918614の有無で動作が変わるのは間違いないようです。
msiexec /L*v log.txt /i hoge.msi
としてログを取ってみましたが、KB2918614が入っているときは止まって見える間に SECREPAIR: CryptAcquireContext succeeded
のようにSECREPAIRという単語を含むログが出力されます。KB2918614が入っていないときは出力されません。セキュリティ上の確認処理か何かをしているのでしょうか。
結局対策としては、
- エラーが出ない限り待てばインストールは完了する
- 待てない場合はKB2918614をアンインストールするか手動でインストール
- エラーが出る場合もKB2918614をアンインストールするか手動でインストール
ということですね。
セキュリティ更新プログラムなのでアンインストールするとセキュリティ上の問題MS14-049が残ってしまうので注意が必要だと思います。
KB2918614で挙げられている既知の問題について、マイクロソフトは現在調査中としています。「遅い」というのは既知の問題として挙げられていませんが、近いうちに修正されることを祈るしか無いでしょう。修正されなければWindows Installerは死んだも同然でしょうね。プログレスバーが数十分も止まったままになるインストーラなんて使い物になりません。msiではない古き良きスクリプト駆動型インストーラに戻るしかありません。