Visual Studio 2015(Windows 10)を使用して32ビットC++アプリケーションを開発しました。 Windows7以降を実行しているマシンに展開したいと思います。
私はWiXインストーラーをまとめ、説明されているようにVC++再配布可能マージモジュールを含めました ここ 。私が含めたマージモジュールはC:\Program Files (x86)\Common Files\Merge Modules\Microsoft_VC140_CRT_x86.msm
でした。
このインストーラーは正常に動作しているように見えますが、Windows 7では、インストールされたプログラムは実行されず、api-ms-win-crt-runtime-l1-1-0.dll
がないことを訴えます。
検索から、再配布可能なパッケージvc_redist.x86.exe
from here に余分なファイルがあるのではないかと思いますが、WiXのドキュメントではexeではなくmsmを使用するように指示されています。
マージモジュールのインストールに失敗した可能性もあります。エラーは見られませんでしたが、その可能性を確認するためにログを有効にして再実行していません。
別のオプションはburn
を使用することかもしれませんが、私はこのツールに精通していません。それが正しい場合はそのルートを使用しますが、可能であればMSIを使用したいと思います。
Visual Studio 2015では、VC++ランタイム再配布可能ファイルがより複雑になりました。ユニバーサルCRTについては VCチームのブログ投稿 を参照してください。基本的に、マージモジュールでは不十分です。
ユニバーサルCRTのマージモジュールはありません。現在CRTマージモジュールを使用していて、Visual C++ライブラリを一元的に展開したい場合は、上記のWindowsUpdateパッケージまたはVCRedistに移動することをお勧めします。または、UniversalCRTおよびVisualC++ライブラリに静的にリンクすることを選択することもできます。
MSIパッケージがMSI Error 1618: 'Another installation is already in progress' during installation/uninstallation.
で再配布可能ファイルをインストールできないという問題が発生しました。Bootstraperを使用してWIXで再配布可能2015をインストールしました。例えば:
<Chain>
<!-- Microsoft Visual C++ 2015 x86 libraries -->
<ExePackage Cache="no" Compressed="yes" PerMachine="yes" Permanent="yes" Vital="yes"
SourceFile="EXAMPLE_PATH\vc_redist.x86.exe" InstallCommand="/install /passive /norestart">
</ExePackage>
<MsiPackage Id="MainPackage" SourceFile="YOUR_MSI_PACKAGE.msi" DisplayInternalUI="no" Compressed="yes" Vital="yes"/>
</Chain>
ユニバーサルCランタイムDLLをアプリケーションと一緒に配布できるようになったことは注目に値します。 MSDNブログ投稿 手順について説明します。
C:\Program Files (x86)\Windows Kits\10\Redist\ucrt
に移動し、対象のプラットフォームのDLLを見つけます彼らは大きくありません。合計で約2メガバイト。
私はこのテクニックを使用することになりました:
すべてのコンピューターで動作するかどうかはわかりませんが、テストしたコンピューターでは動作します。