none
VS2008sp1 ATL用マージモジュール(9.0.30729.4148)について RRS feed

  • 質問

  • VisualStudio2008のVC++で、ATLを使ったプログラムを開発しています。

    VS2008のSP1およびATL脆弱性パッチ(KB973552)を適用した環境で開発しているため、
    以下のマージモジュールを使用して、インストーラを作成したところ、後述する問題が発生しました。
    (※インストーラ作成には、InstallShieldを使用しております。)

    マージモジュールファイル名:
     Microsoft_VC90_ATL_x86_x64.msm

    マージモジュール取得元フォルダ:
     C:\Program Files\Common Files\Merge Modules

    [発生した問題]
    今回作成したインストーラでインストールされる以下のファイルが、
    KB973552の"Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ"を適用した状態のファイルと
    ファイルサイズ、更新日時などが微妙に異なっている。

    C:\WINDOWS\winsxs\Manifests\x86_Microsoft.VC90.ATL_1fc8b3b9a1e18e3b_9.0.30729.4148_x-ww_353599c2.cat
    (※このファイルは、OSの種類や言語に依存しないファイルとあります。)

    この差異が元となって、インストール途中にエラー(Windows Installerのエラー1706)が発生する事があります。

    [質問内容]
    エラーが発生しないようにするためにどうすればよいか考えているときに、
    以下の点が疑問点、不明点として出てきました。
    なにか情報をお持ちの方がいらっしゃいましたら、教えていただけませんでしょうか。

    ---------
    1)MSが供給元となっているマージモジュールを使っていても、同一バージョンのパッチに対して、
    異なるファイルがインストールされることがあるものなのでしょうか?

    2)今回作成したインストーラで入れたファイルが間違っているとしたとき、マージモジュールの入手方法として
    正しい方法がありましたら、教えてください。
    以下のサポートページを見る限り、私が配布しようとしているファイルが間違っているように見えます。
    http://support.microsoft.com/default.aspx/kb/973552

    ---------

    以下、詳細の情報を補足します。
    [詳細情報]
    インストールされた.catファイルの相違点

    -----
    A.私が作成したインストーラでインストールされたファイルのプロパティ

    ファイルの更新日時:2009年7月12日、17:05:18
    ファイルサイズ:7,473 バイト
    デジタル署名の署名者:Microsoft Developer Platform Side-by-Side Assembly Publisher

    -----
    B.再頒布可能パッケージをインストールしたマシンに存在するファイルのプロパティ

    ファイルの更新日時:2009年7月12日、12:11:00
    ファイルサイズ:6,501 バイト
    デジタル署名の署名者:Microsoft Corporation

    -----
    このファイルと関連するバージョンのmanifestファイルやDLLファイル(atl90.dll)そのものには、相違点はありません。

    2010年2月24日 11:37

回答

  • 自己レスです。

    MSに問い合わせして、原因が判明しました。

    InstallShieldで作成したセットアッププログラムから、システムファイルをインストールしたときにmsmごとに作成されるレジストリキーが、アンインストール時に残ってしまうことが原因で、エラーが発生してしまうようです。(レジストリキーは残っているが、対象ファイルを以前インストールしたmsiファイルが同じパスに見つからないため。)(XPのみ、Vistaではエラーにならない。)

    アプリケーションのアンインストール時に、msmごとに作成されるレジストキーが削除されるようにすることで、問題を回避する事ができそうです。

    なお、私の当初の疑問点についてですが、今回、私の環境にあった2種類のcatファイルは、いずれの署名がついたファイルも、正式なファイルとの事でした。

    本文のAのファイルは、VS2008SP1のATLパッチでインストールされるmsmに含まれるファイルで、

    同じくBのファイルは、vcredist_x86.exeなどでインストールされたものです。

    ちなみに、普通にmsi形式のインストーラを作成した場合には、今回の様に異なる署名であってもエラーは発生しないようです。

     

    • 回答としてマーク 山本春海 2010年5月14日 7:03
    2010年5月13日 7:46