2017-02-06 13 views
0

WiXツール3.10を使用して、単純なC#アプリケーションのインストーラを作成しています。私は公式ドキュメントのチュートリアルに従ってきましたが、次の問題があります。アプリケーションディレクトリに.txtファイルを追加する必要がありますが、インストーラはアプリケーションの実行可能ファイルのみを追加します。WiXツール - インストーラはインストールディレクトリにファイルを追加しません

ディレクトリ構造:

<Fragment> 
<!-- Step 1: Define the directory structure --> 
<Directory Id="TARGETDIR" Name="SourceDir"> 
    <Directory Id="ProgramFilesFolder"> 
    <Directory Id="APPLICATIONROOTDIRECTORY" Name="Controllore"> 
    </Directory> 
    </Directory> 
</Directory>  
</Fragment> 

追加ファイル:

<Fragment> 
    <!-- Step 2: Add files to your installer package --> 
    <DirectoryRef Id="APPLICATIONROOTDIRECTORY"> 
     <Component Id="Controllore.exe" Guid="ce2f6f3f-73b4-4fa9-9c3f-76685d520fdb"> 
     <File Id="Controllore.exe" Source="MyPath\Controllore.exe" KeyPath="yes" Checksum="yes"/> 
     </Component> 
     <Component Id="param.txt" Guid="5ffe84e4-5893-48be-af86-1731bcd176ca"> 
     <File Id="param.txt" Source="MyPath\param.txt" KeyPath="yes"/> 
     </Component> 
    </DirectoryRef> 
    </Fragment> 
    <Fragment> 
    <!-- Step 3: Tell WiX to install the files --> 
    <Feature Id="MainApplication" Title="Main Application" Level="1"> 
     <ComponentRef Id="Controllore.exe" /> 
     <ComponentRef Id="param.txt" /> 
    </Feature> 
    </Fragment> 

と終わりに、私はこれらの行を追加する必要があり、そうでない場合は、インストーラここで.wxsファイルのXMLは、何もインストールされません:

<Fragment> 
    <ComponentGroup Id="ProductComponents" Directory="APPLICATIONROOTDIRECTORY"> 
    <Component Id="CMP_Controllore"> 
    <File Source="$(var.Controllore.TargetPath)" KeyPath="yes" /> 
    </Component> 
    </ComponentGroup> 
</Fragment> 
+1

WIX?逃げる。遠く離れて走りなさい。 –

+0

私はWIXが好きです、あなたはそれのために設定された正しい心に入る必要があります。 – Polyfun

+0

少なくともそれはinstallshieldではありません –

答えて

0

設定した方法を並べ替えることができます。私は、最初にWiXを使うことを学んでいる間に、断片で作業しようとしているのが本当にイライラしているのを発見しました。私はそれが大きな製品に保守するので、それを行うための好ましい方法は、手間の多くのだろうだということを知りませんが、私はこのような何か(あなたのファイル名を与えられた)があります。小さなプロジェクトでは

<?xml ...?> 
<Wix ...> 
    <Product ...> 
    <Package ... /> 
    <MajorUpgrade .../> 
    <MediaTemplate EmbedCab="yes" /> 
    <Directory Id="TARGETDIR" Name="SourceDir"> 
     <Directory Id="ProgramFilesFolder"> 
     <Directory Id="APPLICATIONROOTDIRECTORY" Name="Controllore"> 
      <Component Id="Controllore.exe" Guid="ce2f6f3f-73b4-4fa9-9c3f-76685d520fdb"> 
      <File Id="Controllore.exe" Source="$(var.Controllore.TargetPath)" 
        KeyPath="yes" Checksum="yes"/> 
      </Component> 
      <Component Id="param.txt" Guid="5ffe84e4-5893-48be-af86-1731bcd176ca"> 
      <File Id="param.txt" Source="$(var.Controllore.TargetDir)param.txt" KeyPath="yes"/> 
      </Component> 
     </Directory> 
     </Directory> 
    </Directory> 
    <Feature Id="MainApplication" Title="Main Application" Level="1"> 
     <ComponentRef Id="Controllore.exe" /> 
     <ComponentRef Id="param.txt" /> 
    </Feature> 
    </Product> 
</Wix> 

を私は、関連するすべての情報を直接Directoryに入れて、断片について心配するのはずっと簡単です。明らかに、大きなプロジェクトのチームで作業する必要がある場合、それは妥当ではありません。

+0

私はあなたのコードを試しましたが、動作していません。パッケージタグが閉じているところはと思われます。を削除した場合、より多くのエラーが発生します。「symboldメディアへの未解決の参照:製品。*」の1。これは各ファイルタグの1つです。 – SamuRed

+0

@SamuRedそれを修正しました、申し訳ありません。 WiXが作成するキャビネットファイルを埋め込むだけのメディアテンプレートがあります。 MediaTemplateに 'EmbedCab =" yes "'を追加すると、それでもエラーになりますか? – Meloviz

+0

XMLコードは現在OKです。 param.txtファイルのファイルタグにエラーが発生します。ファイルを見つけることができないようですが、エラーがファイルの正しいパスを報告し、ファイルが存在すると確信しています。 – SamuRed

2

フラグメントは、別のフラグメントによって参照されていない限り処理されないことを理解する必要があります。その後、フラグメント全体がアトミックに処理されます。

私はISWIX(http://iswix.codeplex.com)と呼ばれるオープンソースプロジェクトを持っています。 VSプロジェクトテンプレートとグラフィックデザイナーが含まれていますので、実際の作業のスピードアップに役立ちます。それで、フラグメントの構成方法を見て、それがどのように一緒になっているのかを見て、進める方法を自分で決めることができます。

ここで私は1)デスクトップアプリケーションを作成し、2)WiX/IsWiXインストーラを作成します。それは本当に簡単です。

https://www.youtube.com/watch?v=nnV_OU6fk8c

+0

ありがとう、私は確かにあなたのツールを試すが、今すぐ私はより高速なソリューションを探しています。 – SamuRed

+0

EXEでDropBox([email protected])に招待状を送ってください。10分後にインストーラプロジェクトがあります。 –

関連する問題