2016-01-04 21 views
13

Visual Studio 2015(Windows 10)を使用して32ビットC++アプリケーションを開発しました。 Windows 7以降を実行しているマシンに展開したいWindows 7にVisual Studio 2015で開発されたC++ exeを展開するための再配布可能物

私はWiXインストーラをまとめて、hereのように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からhereに余分なファイルがある可能性がありますが、WiXのドキュメントではexeではなくmsmを使用するように指示しています。

マージモジュールをインストールできなかった可能性もあります。私はエラーは見当たりませんでしたが、その可能性をチェックできるようにログを再実行していません。

もう1つのオプションはburnですが、私はこのツールに慣れていません。正しいルートであればそのルートに行きますが、可能であればMSIに固執したいと考えています。

答えて

9

Visual Studio 2015ではVC++ランタイムの再配布可能ファイルがより複雑になりました。ユニバーサルCRTについては、the VC team blog postを参照してください。基本的に、マージモジュールは不十分です。

ユニバーサルCRTのマージモジュールはありません。現在CRTマージモジュールを使用していて、Visual C++ライブラリを一元的に展開する場合は、上記のWindows UpdateパッケージまたはVCRedistに移動することをお勧めします。または、静的にユニバーサルCRTとVisual C++ライブラリにリンクすることもできます。

+1

自分の理解を確認する - 彼らの好みの方法はVCRedistです。これは私が火傷を使う必要があることを意味しますか? –

+0

Windows 7/8にインストールされた汎用CRTを入手するには、VCRedistを使用する必要があります。 VCRedistはBurnで構築されているので、他のBurnバンドルとうまく動作します。 –

+0

したがって、実際に2015 VC redistのマージモジュールを使用する方法はありませんか?私はその方法を好むので、ブートストラップを使って.exeファイルを起動する必要はありません。ブートストラップを必要としないwixでネイティブに実行できるソリューションはありますか? – andyopayne

2

私たちは、MSIパッケージは、我々はBootstraperを使用してWIXと2015再配布可能ファイルをインストールしMSI Error 1618: 'Another installation is already in progress' during installation/uninstallation.と再配布をインストールに失敗したことを問題に走りました。たとえば:

<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> 

1

あなたのアプリケーションでユニバーサルCランタイムDLLを配布することが可能になりましたことは注目に値します。 MSDN blog postは手順について説明します。C:\Program Files (x86)\Windows Kits\10\Redist\ucrt

  1. Install the Windnows 10 SDK
  2. 移動して、あなたが
  3. をターゲットにしているプラ​​ットフォーム用のDLLを見つける彼らは大きくないです

アプリケーションのプログラムディレクトリにそれらをコピーします。合計で約2メガバイト。

ので、私はこのテクニックを使用して終了:それは別のWiXのパッケージを作成するために私を必要とし、それらをブートストラップしない

  • それは私はそれがすべてのコンピュータ上で動作するかどうかに話すことはできませんが、それは私がテストしているものに取り組んでいます余分なインストーラ

を実行するユーザーを必要としません。

関連する問題