Visual C++ 2010 Redistributable のブートストラッパーによるインストールについて

こんにちは、Visual Studio サポートチームです。 今回は、Visual C++ 2010 Redistributable のSetup.exe などのブートストラッパーによるインストールに関し、既にインストール済の環境であっても繰り返しインストールされてしまう現象と、その回避方法をご紹介いたします。 Setup.exe などのブートストラッパーを使用して Visual C++ 2010 Redistributable をインストールする際に、対象の環境で Visual C++ 2010 Redistributable のインストールが必要かどうかをチェックし、すでにインストールされている場合には重複しインストールを実行しないといった動作をします。 しかし、Visual C++ 2010 Redistributable がインストール済の環境であっても、修復セットアップの実行を促すポップアップが表示される場合があります。 ◆ 原 ====== この現象は、Visual Studio 2010 に含まれる Visual C++ 2010 Redistributableをブートストラッパーとして追加する際に参照する設定ファイル (product.xml と package.xml) に含まれるID 等の情報が、最新の Visual C++ 2010 Redistributable のパッケージが持つ情報と一致していないことにより発生します。 Visual C++ 2010 Redistributable では、該当の環境にすでにインストールされているかどうかをチェックする際に、プロダクトコードをチェックするよう構成されています。このチェックに使用するコードが実際のパッケージのものと異なっています。 そのため、実際にはインストール済の環境であっても、プロダクトコードのチェックではインストールされていないと判断され、再度インストーラーが実行されます。 ◆ 対処方法について…


[MSI Trouble Shoot] 64 ビットのマネージ カスタム動作から System.BadImageFormatException 例外がスローされる

こんにちは、Visual Studio サポートチームのオオカワです。今日は、Visual Studio のセットアップ プロジェクトで 64bit のカスタム動作を追加した際に、BadImageFormatException がスローされてインストールが正常に完了しないという案件について、対処方法をご案内いたします。 事象 セットアップ プロジェクトに 64 ビットのマネージ カスタム動作を追加した。インストール作業の途中で、64 ビットのマネージ カスタム動作を実行するときに、BadImageFormatException 例外が発生する。 原因 Visual Studio のセットアッププロジェクトは、マネージ カスタム動作 DLL が 32bit 版でも 64bit 版でも、32bit 版の InstallUtilLib.dll をインストーラーに組み込みます。このため、カスタム動作の実行時に64bit 版のカスタム動作を実行しようとしているにもかかわらず 32bit 版の .NET Framework が読み込まれ、結果として例外が発生します。 対処策 InstallUtilLib.dll を手動で 64bit 版に差し替える必要があります。 事前準備 Windows SDK に付属している Orca エディタをインストールします。当該ツールのインストーラーは、たとえば Visual Studio 2010 がインストールされた環境であれば、”Program Files” ディレクトリ配下の…


[Step by Step Guide] MSI 詳細ログからエラーの原因を特定する例

Visual Studio サポート チームのオオカワです。 この記事では、「MSI ファイルをインストール時にエラーが発生する場合のログ採取方法」の記事で取り上げたシナリオで MSI 詳細ログを取得したとして、解析はどのように行ったらよいかを流れを追ってご説明いたします。まずはシナリオのおさらいから。 [シナリオ] Visual Studio 2005 でインストーラーを作成した。このインストーラーではカスタム動作を使っている。Windows XP まででは正常にインストールできていたのだが、Windows Vista 以降、インストールに失敗している。この原因を追究したい。 それでは、秘伝の(?)トラブルシュート、ご覧ください! [手順] 1. ログを開き、「戻り値 3」を探す MSI 詳細ログにおいて、致命的なエラーが発生した場合には、ログに「戻り値 3」が残ります。 まずはこの値をログから探していきましょう。 MSI (s) (34:30) [05:30:37:135]: Leaked MSIHANDLE (12) of type 790531 for thread 7552 MSI (s) (34:30) [05:30:37:151]: Note: 1: 2769 2: _E63CD636_00E8_493B_86CE_F277981FD258.install 3: 1 MSI (s) (34:30) [05:30:37:151]: Note:…


[便利なツール] WiLogutil (MSI ログビューワー) について

Visual Studio サポート チームのオオカワです。 先ほどは、MSI 詳細ログについての記事を投稿させていただきましたが、さっそく多数の方にご覧いただいております!ありがとうございます!先ほどの記事では、まずはログを取って内容を見てみましょう、というお話を差し上げました。でも、シナリオベースの続編を書いていて思ったのですが、MSI 詳細ログって情報がたくさん取れすぎていて、ちょっと読みにくいのですよね。 そんなときの救世主、ちょっと便利な MSI ログ ビューワーが Windows SDK に含まれておりますのでこちらを取り急ぎご紹介させていただきます! 下準備 当該ツールは、Windows SDK に含まれております。まずは以下のリンクから WIndows SDK をご導入ください。 Microsoft Windows SDK for Windows 7 and .NET Framework 4 http://www.microsoft.com/downloads/en/details.aspx?FamilyID=6b6c21d2-2006-4afa-9702-529fa782d63b&displaylang=en ツールのありか 既定の設定でインストールを行った場合、以下のパスに当該ツールはインストールされています。 C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\WiLogutil.exe ではでは、さっそく起動してみましょう! こんな感じの、淡白な画面がでてまいります。見かけは淡白ですが、意外と便利に使えます! 簡単な使い方 開いた画面の [Browse] ボタンをクリックし、OpenFileDialog より、開きたいログファイルを選択します。そしておもむろに [Analyze] ボタンをぽちっとな…、とすると、以下のような画面が開きます。 [Possible Solutions] の部分を見てください!もう、インストールに失敗した理由は一目瞭然ですね!!こんな感じで、簡単なエラーであればボタン一つで原因究明までしてくれることもあるんです。 でも、そうも行かないときもあります…。(弊社にお問い合わせいただくような案件は大概 Analyze だけではわからない難易度の高いお問い合わせです。) そんな時には、先ほどの画面の [HTML Log]…


[How to] MSI ファイルをインストール時にエラーが発生する場合のログ採取方法

Visual Studio サポート チームのオオカワです。 本日は、簡単な Tips として、MSI ファイルをインストールする際に、何かエラーが出てうまくいかない、という場合に有用なログの採取方法についてお知らせいたします。 Windows インストーラーのログの記録を有効にする方法 レジストリの設定を手動で行う方法 Windows インストーラーのログの記録を有効にするには、Regedit.exe を使用して、レジストリを開き、次のパスとキーを作成します。(既定でキーが存在していればキーの追加は不要です) 値は Installer キーを右クリックして、[新規作成] – [文字列値] を選択して以下の名前、値で作成します。 HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\Installer 名前 : Logging データ型 : 文字列値 値 : voicewarmupx 値フィールドの文字は、どのような順番でもかまいません。各文字は、異なるログ記録モードを有効にします。各文字の実際の機能は、MSI 1.1 では次のようになります。 v – 詳細出力 o – ディスク領域不足メッセージ i – 状態メッセージ c – UI パラメーターの初期値 e – すべてのエラー メッセージ w – 致命的ではない警告 a -…