2

WiX インストーラー用のブートストラップを作成しようとしています。VC++ 2013 再頒布可能パッケージをインストールする必要があります (x86 および x64 プラットフォーム用)。また、これらのパッケージが既にインストールされている場合は、それらのインストールをスキップしたいと考えています。そのために、各パッケージの product.xml に次の要素を追加します。

<InstallChecks>
  <MsiProductCheck
    Property="IsMsiInstalled"
    Product="{?????????????????????????}"/> 
</InstallChecks>

<Commands>
  <Command PackageFile="vcredist_2013_x86.exe">
    <InstallConditions>
      <BypassIf Property="IsMsiInstalled" Compare="ValueGreaterThan" Value="0"/>

問題は、どの製品コードが必要かということです。

Google が私を助けてくれなかった後、vcredist_2013_x86.exe を抽出して msi ファイルのプロパティを調べようとしましたが、それは別の問題でした。7Zipを使用して抽出した後、「0」、「u0」、「u1」、「u2」などの奇妙な名前のファイルの束しか得られませんでした。ファイル「0」はBurnマニフェストであることが判明しました。製品コード: for x86:{13A4EE12-23EA-3371-91EE-EFB36DDFFF3E}および for x64:が含まれてい{A749D8E6-B613-3BE3-8F5F-045C84EBA29B}ました。だから私はそれらを使用しようとしましたが、運がありませんでした。MsiProductCheckパッケージがインストールされているにもかかわらず、-1 を返しました。

次に、HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall レジストリ キーでどのような変更が発生するかを調べました (私は Win8.1 で作業しています)。インストール時に追加され、アンインストール後に削除されるキーは{ce085a78-074e-4823-8dc1-8a721b94b76d}、x86 と{7f51bdb9-ee21-49ee-94d6-90afc321780e}x64 で異なります。しかし、彼らもうまくいきませんでしたMsiProductCheck。インストールしても結果は -1 (不明な製品) のままでした。

だから私は今、絶望しています。私が持っている唯一のアイデアは、RegistryCheck代わりに使用MsiProductCheckして、アンインストールでキーを確認することです。しかし、ここで何が問題なのか知りたいです。VC++ 2013 再頒布可能パッケージには、どの製品コードを使用する必要がありますか? パッケージのインストール中に追加されたキーだけが で機能しないのはなぜMsiProductCheckですか?

4

0 に答える 0