msxml 6 を必要とするソフトウェア用の WiX インストーラーを作成しています。正しく理解している場合、msxml 6 は XP SP3 以降の Windows に同梱されていますが、当社のソフトウェアは XP のすべてのバージョンをサポートしているため、顧客が持っていないというリスクがあると思います。 msxml 6 がインストールされています。したがって、msxml 6 がまだインストールされていない場合は、インストーラーによってインストールされることを希望します。
msxml 6 がコンピューターにインストールされているかどうかを検出する方法を示すこのページを見つけましたが、どのバージョン (SP1、SP2 など) がインストールされているかはわかりません。
私の質問は、msxml 6 がインストールされているかどうかを適切に検出し、検出されない場合は最新バージョンをインストールする方法です。
これは、検出を実行するために現在使用しているものです (上記のリンクで見つけたものと、他の前提条件に使用するものを組み合わせたものです)。
<!-- MSXML6 SP1 (x86) -->
<util:RegistrySearch Root="HKCR" Key="Msxml2.DOMDocument.6.0" Format="raw"
Variable="MsXml6x86Installed" />
<PackageGroup Id="MsXml6x86">
<MsiPackage Id="MsXml6x86" Cache="no" Compressed="yes" Permanent="yes" Vital="yes"
SourceFile="$(var.PrerequisitesPackagesRootPath)\msxml6_SP1_x86\msxml6_x86.msi"
InstallCondition="(VersionNT < v6.0) AND (NOT MsXml6x86Installed)" />
</PackageGroup>
<!-- MSXML6 SP1 (x64) -->
<util:RegistrySearch Root="HKCR" Key="Msxml2.DOMDocument.6.0" Format="raw"
Variable="MsXml6x64Installed" Win64="yes" />
<PackageGroup Id="MsXml6x64">
<MsiPackage Id="MsXml6x64" Cache="no" Compressed="yes" Permanent="yes" Vital="yes"
SourceFile="$(var.PrerequisitesPackagesRootPath)\msxml6_SP1_x64\msxml6_x64.msi"
InstallCondition="(VersionNT64 < v6.0) AND (NOT MsXml6x64Installed)" />
</PackageGroup>
そして私のバンドル(x86)では:
<Bundle>
...
<Chain>
<PackageGroupRef Id="MsXml6x86"/>
<PackageGroupRef Id="Vc2010Sp1x86" />
<PackageGroupRef Id="Netfx35Sp1" />
<PackageGroupRef Id="Netfx4Full" />
...
</Chain>
</Bundle>
インストーラーを起動すると、ログ ファイルに次の出力が表示されます。
[21E4:3F00][2015-02-11T09:57:31]i000: Setting string variable 'MsXml6x86Installed' to value 'XML DOM Document 6.0'
[21E4:3F00][2015-02-11T09:57:31]i101: Detected package: MsXml6x86, state: Absent, cached: None
したがって、検索したレジストリ キーは見つかりましたが、msxml 6 が存在することを示唆していますが、実際のパッケージは存在しません。その理由は、msxml6.dll を検索すると、インストーラーで使用している msxml パッケージが SP1 用であるのに、Win 7 コンピューターに SP3 がインストールされているように見えるからだと思います。しかし、これは私が何をすべきかわからないところです。Win 7 テスト コンピューターには msxml 6 SP3 が既定でインストールされ、Win XP SP3 テスト コンピューターには既定で msxml 6 SP2 がインストールされています。XP 以降のすべてのバージョンの Windows のソリューションを取得するには、インストーラーでどの msxml パッケージを使用すればよいですか? Microsoft の Web サイトから SP3 または SP2 へのダウンロード リンクが見つかりません。
助けていただければ幸いです。