2017-04-06 12 views
0

私は、ユーザのRoamingフォルダに2つのプラグインをインストールし、マシン上の特定の場所に1つのフォルダ(+コンテンツ) :C:\UMI\temp。 2つのプラグインについては、すべてが問題ありません。それは私の問題があるフォルダです。まず、場所が存在するかどうかをテストし、その場所にコンテンツを移動する必要があります。Visual Studioを使用してWIXマージモジュールのコンテンツの特定の場所を設定する方法

私はそれをセットアップした方法として、Heat.exeを使用して、マージモジュール内のフォルダの内容を収穫します。マージモジュールは、WIXプロジェクトファイル内で参照されます。

これは、問題のマージモジュールの内容です:TempFilesComponentGroupを知る

<?xml version="1.0" encoding="UTF-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 
    <Module Id="TempFilesMM" Language="1033" Version="1.0.0.0"> 
     <Package Id="9f5b21ce-db22-40aa-a2f6-f82ed89958a5" Manufacturer="Some Company" InstallerVersion="200" InstallScope="perMachine"/> 

     <Directory Id="TARGETDIR" Name="SourceDir"> 
     <Directory Id="MergeRedirectFolder"> 
     <Directory Id="INSTALLLOCATION" Name="HarvestSetup"> 
      <Directory Id="TempFilesComponentGroup"> 
      </Directory> 
      </Directory> 

     </Directory> 
     </Directory> 
    <ComponentGroupRef Id ="TempFilesComponentGroup"/> 
    </Module> 
</Wix> 

は.wxs収穫したファイルへの参照で、私はINSTALLLOCATIONは、コンテンツが、インストール時にコピーされたディレクトリであると仮定します。実際、インストール時には、C:\ディレクトリのルートにHarvestSetupという名前のフォルダが作成されます。私はHarvestSetupという名前のフォルダなしでC:\UMI\tempにインストールし、その場所があらかじめ存在するかどうかをテストします。助言がありますか?

ありがとうございます!

答えて

0

は、フォルダが存在するかどうかをチェックするためにDirectorySearchを使用します。

<Property Id="EXISTING_INSTALLLOCATION"> 
    <DirectorySearch Id="Search_EXISTING_INSTALLLOCATION" Path="C:\UMI\temp"/> 
</Property> 

あなたがハードコーディングされたパスにインストールすることを少し奇妙なようだが、あなたはそのための十分な理由があると仮定してみましょう。

そのディレクトリが存在する場合にのみファイルをインストールするために、コンポーネント条件でそのDirectorySearchによって割り当てられたプロパティを使用します。

<Component Id="SomeComponentId" Guid="SomeGUID" Directory="EXISTING_INSTALLLOCATION"> 
    <File Id="SomeFileId" Source="SomeSource"/> 
    <Condition>EXISTING_INSTALLLOCATION</Condition> 
</Component> 
関連する問題