私はVS 2015でコンパイルされたアプリケーションを持っており、正しく実行するにはVC++ Redistributableパッケージが必要です。この最新ビルド以前は、旧バージョンのVSを使用していましたが、単に適切なレアリストファイルのインストールを処理するためにマージモジュールを使用しました。しかし、私は2015(Microsoft_VC140_CRT_x64.msm)のマージモジュールの最新バージョンを使用しているときに、自分のアプリケーションがそのまま動作しないことに気付きました。 I did some diggingであり、マージモジュールの最新バージョンで変更されているものがあるようです。 Microsoftは現在、マージモジュールを使用する代わりに直接vcredist_x64.exeパッケージをインストールすることを推奨しているようです。WIXはインストール時にvcredist_x64.exeを実行します
私はこれを行うためのカスタムアクションを作成しようとしています。私はsimilar tutorial hereに従っていますが、VC Redistributable実行ファイルに適用しています。私がする必要がある最初の事は.exeファイルを一度インストール置かれようとしている設定です。
<Directory Id='APPLICATIONROOTDIRECTORY' Name='MyApp'>
<Directory Id="VCREDISTDIR" Name="VCRedist">
</Directory>
</Directory>
その後、私は隠しの一部としてインストールされるコンポーネントグループに私のファイルを追加する必要があります(これを自動的にインストールしたいので)。この時点で
<ComponentGroup Id="VCRedist" Directory="VCREDISTDIR">
<Component Id="vcredist_x64.exe" Guid="-INSERT-GUID-HERE-" Win64="yes">
<File Id="VCREDISEXE" Name="vcredist_x64.exe" KeyPath="yes" Source="$(var.VCRedistSourceDir)" Checksum="yes"></File>
</Component>
</ComponentGroup>
そして...
<Feature Id="VCRedistributable" Title="Visual C++ Runtime" AllowAdvertise="no" Display="hidden" Level="1">
<ComponentGroupRef Id="VCRedist" />
</Feature>
、vcredist_x64.exeは、エンドユーザーのマシンにコピーする必要があります。今度は、インストール後に実行可能ファイルを起動するカスタムアクションを作成する必要があります。
<CustomAction Id="InstallVCRedistributable"
FileKey="VCREDISEXE"
Execute="deferred"
ExeCommand="/silent"
Impersonate="no"
Return="check"/>
<InstallExecuteSequence>
<Custom Action="InstallVCRedistributable" Before="InstallFinalize">
<![CDATA[NOT REMOVE]]>
</Custom>
</InstallExecuteSequence>
実行ファイルが実行されているとき、私が見ることができるように、私も自分のUIにステータスメッセージが含まれます。今
<UI>
<ProgressText Action="InstallVCRedistributable">Installing Visual C++ Redistributable for Visual Studio 2015</ProgressText>
</UI>
私は私のインストーラを実行すると、それがハングアップを取得しますそれはvcredist_x64.exeを起動する必要があります...そしてそれはありません...しかし、そののインストール中に実行可能。このWindowsインストーラパッケージに問題があり、セットアップの一部として実行されるプログラムが完了しなかったというポップアップメッセージが表示されます。その後、メインアプリケーションのインストールをロールバックし、インストールされることはありません。なぜこれが起こっているのか、どのように修正するのか説明できる人はいますか?ありがとう!
FYIでは、ターゲットシステムにもUniversal CRTがインストールされている限り、インストーラーでMicrosoft_VC140_CRT_x64.msmを追加することはできます。マージモジュール自体はもはや完全に自己依存的ではありません。 –