Wix Burn vcredist



Wix Burn Vcredist



解決:

  1. vcredistの導入は、適切なアプローチです。

  2. FileSearch Element(Util Extension)を使用して、vcredistファイルの1つを検索し、そのバージョンを取得できます。ただし、このアプローチは、書き込み組み込み変数という事実によって複雑になりますSystemFolderとSystem64Folderは、Windowsインストーラーの同様の変数に関して逆になっています。 VC14の検索例:



      

    変数vc14x64Exists andvc14x64Versionは、次の場所で使用できます。VC14の64ビットバージョンがインストールされているかどうかを確認するためのDetectCondition:

    DetectCondition = 'vc14x64Exists AND vc14x64Version> = v14.0.nnnnn'

    同様にVC14の32ビットバージョンのDetectConditionは次のとおりです。



    DetectCondition = 'vc14x86Exists AND vc14x86Version> = v14.0.nnnnn'

    ノート: どちらの場合も、置き換える必要がありますインストーラーに含めるvcredistのビルド番号を含むnnnnn。

    編集1: 別の方法として、ここで概説するアップグレードコード検索を使用してVCRedistの存在を検出することもできます。

    編集2: 私が作成したインストーラーでは、通常、VCRedistの存在を検出しようとはしません。代わりに、VC Redistインストーラーを実行して、インストールするか、アップグレードするか、何もしないかを判断します。



  3. 現在までに、VC14redistファイルの3つのバージョンを見つけました。

    a)14.0.23026-Microsoftのリンクからダウンロードできます。

    b)14.0.23506-提供 Visual Studio 2015 Update 1

    c)14.0.23918-付属 Visual Studio 2015 Update 2

    Visual Studioの更新で新しいバージョンのvcredistがリリースされましたが、MicrosoftはWebサイトからダウンロード可能なバージョンを更新していません。

  4. すでにインストールされているエラーコード0x80070666を無視するようにburnに指示できます。。 1638 = 0x666であることに注意してください。例えば:

     

最近、作業中の製品インストーラーがエラー0x80070666で停止するという同様の問題が発生しました。問題は、vcredistの新しいバージョンがすでにインストールされていることでした。私が使用することになった解決策は、a)最新バージョンのvcredist(14.0.23918)を含め、b)を追加することでした。将来の新しいバージョンのvcredistがすでにインストールされている場合に、エラーをスローしないようにburnに指示するディレクティブ。


vcredistパッケージの存在を検出するには、そのパッケージで検索する必要がありますUpgradeCode。
これにより、それ以降のバージョンも確実に見つかります。

Wixバーンブートストラッパーの使用でutil:ProductSearchとUpgradeCodeparameter。次に、 最小 のバージョンDetectCondition。

詳細については、私のこの回答を参照してください:https://stackoverflow.com/a/35889484