Wix Burn vcredist
Wix Burn Vcredist
解決:
vcredistの導入は、適切なアプローチです。
FileSearch Element(Util Extension)を使用して、vcredistファイルの1つを検索し、そのバージョンを取得できます。ただし、このアプローチは、書き込み組み込み変数という事実によって複雑になります
SystemFolderと
System64Folderは、Windowsインストーラーの同様の変数に関して逆になっています。 VC14の検索例:
変数
vc14x64Exists and
vc14x64Versionは、次の場所で使用できます。
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インストーラーを実行して、インストールするか、アップグレードするか、何もしないかを判断します。
現在までに、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サイトからダウンロード可能なバージョンを更新していません。
すでにインストールされているエラーコード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