2011-07-09 7 views
0

アプリケーションのインストーラを作成しようとしています。私のアプリケーションには、ルートアプリケーションと、独立してインストールできる一連のサブ製品が含まれています。オプションでインストールを管理するインストーラを作成したいと思います。WiX:同じディレクトリを含む機能ですが、インストール中に1つの一意のディレクトリにマージする必要があります

コンパイルとリンクの後に、私は以下の構造を得ます。 MyAppRootについては

  • .. \ MyAppRootの\ビン
  • .. \ MyAppRoot \ CONFIG
  • .. \ MyAppRoot \ CONFIG \ HTTP
  • .. \ MyAppRoot \ CONFIG \でした
  • と他のサブディレクトリ
  • ...

各サブ製品は同じ組織を持っていますMySubPrdについては

  • .. \ MySubPrd \ binに
  • .. \ MySubPrd \ CONFIG
  • .. \ MySubPrd \ CONFIG \ HTTP
  • .. \ MySubPrd \ CONFIG \だった
  • と他のサブディレクトリ
  • ...

私はサブアプリケーション(MySubPrd1、MySubPrd2、...、MySubPrdN)の完全なセットを持っています。

インストール中、SubPrd1はMyAppRootアプリケーション(常にインストールされている)にマージされている必要があります。

インストーラをビルドするには、まず各サブプロダクトに関連付けられた専用.wxsファイルを作成するために、MyAppRootとMySubPrd1、MySubPrd2、...、MySubPrdNのすべてのファイルを収穫します。

set ROOT_BINARY=D:\Prj\MyAppRoot 
heat dir %ROOT_BINARY% -cg MyRootApp -gg -scom -sreg -sfrag -srd -dr INSTALLLOCATION -out %OUT_BUILD_WXS%\root.wxs -var env.ROOT_BINARY 

set ROOT_PRD1=D:\Prj\MySubPrd 
heat dir %ROOT_PRD1% -cg MySubPrd1 -gg -scom -sreg -sfrag -srd -dr INSTALLLOCATION -out %OUT_BUILD_WXS%\prd1.wxs -var env.ROOT_PRD1 

および他のSubPrdsについても同様である。

私は私のインストーラを構築するために使用される主なWXSファイルを持って、私はセット機能作成:

エラー:

<Feature Id='Complete' 
     Title='ROOT Application' 
     Description='The application.' 
     Display='expand' 
     Level='3' 
     ConfigurableDirectory='INSTALLLOCATION'> 
    <ComponentRef Id="Shortcut" /> 

    <Feature Id="RootApp" 
      Title="Main Application RootApp" 
      Description="...." 
      Level="3"> 
    <ComponentGroupRef Id="MyRootApp" /> 
    </Feature> 

    <Feature Id="MySubPrd1App" 
      Title="Option1" 
      Description="...." 
      Level="1000"> 
    <ComponentGroupRef Id="MySubPrd1" /> 
    </Feature> 

    <Feature Id="MySubPrd2App" 
      Title="Option2" 
      Description="...." 
      Level="1000"> 
    <ComponentGroupRef Id="MySubPrd2" /> 
    </Feature> 

</Feature> 

すべてがリンク中を除いてOKですが、私は多くのエラーを取得しますLGHT0130:主キー 'dir022180FDDE4E69878C4D1206C73EED8D'が複製されています

確認の結果、エラーがディレクトリに関連していることが確認されました。 WiXは、機能が同じパスにマージされなければならないことを認識していないようです。ディレクトリの一部にはまったく同じファイルが含まれています(たとえば、..\MyAppRoot\config\wsには、¥MySubPrd1¥config¥wsとまったく同じファイルが含まれています)

この問題を解決するにはどうすればよいですか?

+0

[WIX:複数の機能/フォルダを持つ熱の重複IDの問題](http://stackoverflow.com/questions/3730288/wix-heat-duplicate-id-issue-with-multiple-features-folders) – wimh

答えて

1

XSLトランスフォームを使用して出力をクリーンアップする必要があります。熱は今日の他の独立した処刑と重複することを理解していない。

0

製品に共通のファイルがある場合、それらを断片に抽出し、各断片の断片を参照することができます。

関連する問題