2013-03-26 5 views
7

私の会社では、残念なことにインストーラプロジェクトが含まれていないVisual Studio 2012にアップグレードしたので、最近Wix Toolset(v.4.0.12)を使用するようになりました。WIX ToolsetがVS 2012初心者の問題に統合

私の問題は次のとおりです。私はすべてのすべての結果、exeファイルといくつかのdllになる多くのプロジェクトで大きなソリューションを持っています。

次に、ソリューションにWixセットアッププロジェクトを作成し、exeファイルを生成するプロジェクトへの参照を追加します。そのプロジェクトリファレンスのプロパティでは、私はHarvest: trueProject Output Groups: Binariesと設定しました。

参照プロジェクトからの依存関係を取得するために私のWiXプロジェクトのビルドが期待されるので、手動で参照を追加する必要はありません。

また、参照したプロジェクトファイルでheat.exeを実行すると、プロジェクトの依存するDLLではなく、ファイルのEXE出力のみが取得されます。

私は上記がかなり標準であると仮定し、wixツールは私のためにその情報を集めることができるはずです。そして、ネット上で広範な検索を行った後に、同様の問題を抱えている人がいないのはなぜですか?

誰かが上記の理由を知っている場合は、私にWiXでの作業の基本的なチュートリアルを送ってください。私が適切なものを見つけることは不可能に思えます。

答えて

8

WiX v3.6以降ではVS2012をサポートしています。 WiX v4.0はほとんど開始されておらず、現時点での使用は推奨されていません。 v4.0には多くの大きな変更が加えられているので、今のところv3.xのラインに固執しています。

Votiveの自動収穫機能は完全に機能していません。そのため、デフォルトでは無効になっています。多くのプロジェクトタイプがそれを破っていたことがわかりました発見したように、収穫は複数のプロジェクト参照を通ることはありません。彼らは適切に動作する前に、より多くの作業を必要とするすべてのもの。

その間にFile要素をComponent要素に含めることができます。

+0

ハーベスト出力用のMSBuildタスクはありますか?私はネット上のどこかを見たが、今は見つけられないと思う。 –

2

v4.0.12の使い方がわかりません。 :) Wix v3.8は最新版:http://wixtoolset.org/releasesです。

official documentationには多くのガイドがあり、tutorialにはかなりの情報があります。

は、しかし、あなたが自動収穫がまだサポートされていないとして、手動でのインストーラに各プロジェクトの出力とその依存関係を含める必要がありますあなたの特定のケースのために:

<Component> 
    <File Id="ProjectA.Output" 
      Name="$(var.ProjectA.TargetFileName)" 
      Source="$(var.ProjectA.TargetPath)" 
      KeyPath="yes" /> 
</Component> 

<Component> 
    <File Id="ProjectA.NlogDependancy" 
      Name="NLog.dll" 
      Source="$(var.ProjectA.TargetDir)\Nlog.dll" 
      KeyPath="yes" /> 
</Component> 

<Component> 
    <File Id="ProjectB.Output" 
      Name="$(var.ProjectB.TargetFileName)" 
      Source="$(var.ProjectB.TargetPath)" 
      KeyPath="yes" /> 
</Component> 

<Component> 
    <File Id="ProjectB.AutofacDependancy" 
      Name="Autofac.dll" 
      Source="$(var.ProjectB.TargetDir)\Autofac.dll" 
      KeyPath="yes" /> 
</Component> 

これは本当に難しいのではありませんあなたが数百のバイナリを持たない限り、あなたはあまりにも長くかかることはありません。

+0

こんにちは。お返事をありがとうございます。面白いのバージョン4.0.12が表示されていないが、私はここからhttp://wixtoolset.org/releases/v4.0.12.0それを得た。おそらくまだベータですが、おそらく唯一Visual Studio 2012に統合されている唯一のものです。私は自分の問題について多くのことを読んでおり、heat.exeはプロジェクトの依存関係を実行すると考えましたが、残念ながらそれは起こりません。別のインストーラを選ぶべきかどうかがわかります。再度ありがとう –

+0

WiX 3.7はVS2012と統合されています。しかし、この答えは今でも必要です。 –

1

解決策の.msiインストールを作成しようとしたとき、私は同様の問題が発生しました。

この問題を克服し、新しい.dllや他の依存関係をプロジェクトに挿入して自動化する場合でも、時間が経つにつれて長く持続するように、私は以下のことを行いました。

私の製品です。>イベントを構築する - - 私は、この「ディレクトリ」

<!--Here We Install Our Main App--> 
<Directory Id="TARGETDIR" Name="SourceDir"> 
    <Directory Id="ProgramFilesFolder"> 
    <Directory Id="INSTALLFOLDER" Name="MyAppDir"/> 
    </Directory> 
... 
</Directory> 

と私のウィックスプロジェクト - >プロパティでは、持っているWXS>前のイベントコマンドラインを構築するには、私は、このコマンドを追加しました:

"%wix%\bin\heat" dir "$(SolutionDir)MainProject\bin\Debug" -dr INSTALLFOLDER -scom -frag -srd -sreg -gg -cg Components -var var.MainProject.TargetDir -o $(SolutionDir)MainProject\Includedheat.wxs 

私は私を構築したら、 wixプロジェクトではMainProjectディレクトリにIncludedheat.wxsファイルが作成され、MainProject \ bin \ Debugディレクトリのすべてのファイルがリストされます。

次のステップは - 私の機能のセクションで、私は追加よりも、WiXのプロジェクトにIncludedheat.wxsを追加します。今

<!--Add Component--> 
<Feature Id="MainApplication" Title="Main Application" Level="1"> 
... 
<ComponentGroupRef Id="Components" /> 
</Feature> 

を、私は私のMainProjectに住んですべてのコンテンツを再構築した.msiをインストールしたら、 \ bin \ Debugディレクトリもターゲット場所のMyAppDirディレクトリに含まれます。いくつかの詳細については

Create a working Wix project.

Easy way heat.exe.

はまた何flagsあなたのコマンドで使用するのdetrmingために読むためにrecomendingを: 私は、これはガイド続きます。