ネタ元:VirutalPC上のPCにMSI形式のファイルをインストールすると怒られる?
この情報だけでは原因はわからんですねー。建前的にはw
で、バグですが、次へボタンにあるプロパティのチェック方法が間違ってると思われます。
記憶が正しければ、昔のISのデフォルトダイアログにこのバグがあったはずなんで…
#まぁバグと言っていいのか?というのはあるけどw
対策は、/qr(簡易モード)か、/qb(ベーシックモード)あるいは、/qn(サイレント)をつけるとなります。要するにそのチェックルーチンを通らないようにしてやればいいということですねw原始的ですが非常に有用な方法の一つw
#ちゃんと作ってるアプリはこれを許さないように作られていたりします
さて本題。
msi 形式のインストーラでも、意味不明なエラーが出ることはよくあることです。掲示板やMLなどでも時折見かけます。
これは、トラブルシュート全体に言えることですが、まず得られる情報を極力収集するところから始めます。
msi であれば、詳細ログを取得する作業です。
ログの取得方法は、コマンドラインで msiexec /i …\hoge.msi /l*v “%HOMEPATH%\hoge.log” とします(hogeは、対象のmsiのファイル名)。
#ログの出力先は、実際は書き込みできればどこでもOKです。ただし、権限昇格していない状態で書き込むことになる点には注意を忘れずに
で、これが英語環境なら、SDKにある、WiLogUtl.exe で参照すればいいよ!と言えるのですが、残念なことに英語版のログしか解析できないんですよねー(OSのはくログ情報の言語固有の変換テーブルがないため)。詳細ログは、英語のままにしておけよ!と思ったりもしますがw
で、仕方ないので、ログが取得できたら、「エラー」で検索します。たぶん見つかります。見つからなかったら英語の「Error」で検索します。
どっちかで見つかるので、見つかったらその付近にあるエラーコードらしきものを探します。ほとんどのエラーは Errors Reference に載っています。載っていない場合は、winerror.h に定義されている場合もあります。
あとは、ずるずると原因を探っていけば他人の作ったソフトでもたいていの場合エラーできない原因は突き止められます。
これで原因が特定できない場合は、MSI-ML に質問してください。自分の開発中のものに限らず質問はいつでも受け付けてますよーw
ま、それを回避できるかどうかは、また別の問題だったりするわけですがw