2010年12月20日月曜日

Installer error 2869 の原因が分からない場合のヒント

このエラーの解析にかなり手間取ったのでメモしておきます。

インストール中に、下記のようなエラーダイアログが出て、ロールバックしてしまいました。
何回やっても駄目で、しかも特定の環境下でしか再現しない・・・。

The dialog SetupError has the error style bit set, but is not an error dialog.

う~ん、全く意味が分かりませんね!
とりあえず、直前のエントリで書いた方法で、詳細ログを取るとエラーコードは2869。
このエラーコードを頼りに調べていくと、こちらのブログを発見。

要するに、直前のカスタムアクションが失敗しているのが原因のようです。
エラーメッセージからは全く想像つきませんね・・・。
ログから直前のカスタムアクションを調べてみます。

MSI (s) (BC:10) [13:23:12:269]: Invoking remote custom action. 
DLL: C:\Windows\Installer\MSI7330.tmp, Entrypoint: ManagedInstall

これは、どうやら.NETのInstallerクラスを呼び出している所のようです。
ProjectInstallerではレジストリの書き換えとサービス登録をやっていた
のですが、レジストリの書き換えは失敗する余地がない。
消去法で、サービス登録が失敗しているのでは?と考えて調べてみると、
サービスがアンインストールされずに残ったままでした。
今回のケースでは、手動でサービスを消したら*解決しました。

* サービスは次のコマンドで削除できます(必要なサービスを誤って消さないように注意!)
sc.exe delete [サービス名]

【参考】
Windows Installer Error Messages (MSDN)
http://msdn.microsoft.com/en-us/library/aa372835(VS.85).aspx

2010年12月19日日曜日

Setup.exeで詳細ログを出力する方法

msiで詳細ログを出力できることは知っていましたが、Setup.exeでも可能なようです。
リリースする場合は、InstallShieldなどで単一のSetup.exeにまとめている場合が
多いと思いますが、何か問題が発生した場合の解析に便利です。

まずはmsiの場合の復習。

msiexec /i Installer.msi /L*v "C:\Install.log"

setup.exeの場合は次の通り。

setup.exe /v"/L*v C:\Install.log"

/vオプションに続けてダブルクォーテーションで囲んだ形で指定すればOKのようです。

2010年12月8日水曜日

Google Chrome 8でMicrosoft Forefront TMGへ接続できない問題の回避方法

Google Chrome 8にアップデート後、Microsoft Forefront TMGへのアクセスができなくなり、
いろいろと苦労したので、忘れないようにメモ。

現象としては、TMGへアクセスするとずっとロード中のままになります。
Windows XPではキャッシュとクッキーのクリアで直ったのですが、Windows 7の場合
再インストールしても復旧せず困っていました。

いろいろ検索したところ、Chromeのフォーラムに答えを発見しました。
起動オプションとして、--use-system-sslを使えば良いみたいです。
具体的には、Chromeのショートカットのプロパティを開いて、リンク先の後ろに
これを付ければよいです。



【フォーラムの該当エントリ】