2011-09-08 7 views
6

GUIでユーザーが選択したカスタムインストール場所にディレクトリが既に存在するかどうかを検出したいと考えています。私は、次のことを試してみました:Wix:カスタムインストール場所でDirectorySearchを実行する方法

<Property Id="DIRECTORY_PATH"> 
    <DirectorySearch Id="DirectorySearch" Path="[INSTALLDIR]\MyDirectory" /> 
</Property> 

しかし、これは動作しませんDirectorySearchがAppSearchの間に起こっているので。 InstallDirDlgの間にINSTALLDIRが後で設定されます。 INSTALLDIRはAppSearchの時刻に設定されていないため、DIRECTORY_PATHは "\ MyDirectory"に誤って設定されています。

InstallUISequenceとInstallExecuteSequenceでAppSearchが発生したときに変更しようとしましたが、後でなくてもAppSearchがCostInitializeの前に来るようになりました。

したがって、選択したINSTALLDIRの場所でディレクトリ検索を実行するにはどうすればよいですか?

答えて

3

ユーザーがそのディレクトリを確認するのを待つだけであれば、DirectorySearchはそのジョブを実行しません。ユーザーがINSTALLDIRを選択した直後に、たとえばInstallDirDlgの[次へ]をクリックすると、「プロパティの設定」カスタムアクションを作成する必要があります。

更新。だから、私は基本的には次の意味:

  • ユーザーがセットアップのInstallDirDlgになったとき、彼/彼女はINSTALLDIRプロパティに置かれているディレクトリ、
  • を選択し、ダイアログInstallDirDlgは、カスタムをトリガーします次のボタンの操作
  • このカスタムアクションは、INSTALLDIRプロパティの値を取得し、INSTALLDIRにMyDirectoryが含まれているかどうかを確認します。
  • DIRECTORY_PATHプロパティが必要な値に設定されているsession["DIRECTORY_PATH"] = session[INSTALLDIR] + "\MyDirectory";
  • そうでない場合は、DIRECTORY_PATHが設定されていない(とあなたがNOT DIRECTORY_PATHをチェックすることにより、任意の条件でこの事実を使用することができます)

は、それがより明確になります願っています。

+0

ユーザーが選択できるのは、インストール先の場所だけで、「MyDirectory」を検索しているサブディレクトリがその場所に存在するかどうかはわかりません。 DirectorySearchがなければ、インストーラはプロパティを設定する必要があるかどうかをどのように認識しますか? – Michael

+0

自分でディレクトリの検索をシミュレートする必要があります。実際のDirectorySearchがAppSearchで行われている限り、あなたのニーズに合っていません。だから、私は "プロパティを設定"アクションを引用した - プロパティを設定するだけでなく、サブディレクトリが存在するかどうかを調べるロジックを行うべきです。 –

+0

私は上記のコメントが混乱すると思った:)私は私の答えを更新します –

0

希望すると、これが役立ちます。

以前のインストールのINSTALLDIRをレジストリに格納していれば、それを取得して検索することができます。 Install UIシーケンスでは、Installtionの位置は前の位置を指します。

<!-- Set previous install location, if available --> 
<Property Id="INSTALLDIR" Secure="yes"> 
    <RegistrySearch Id="InstallRootRegistry" 
        Type="raw" 
        Root="HKLM" 
        Key="SYSTEM\CurrentControlSet\Control\Session Manager\Environment" 
        Name="INSTALLDIR" /> 
</Property> 

<!-- The property WIXUI_INSTALLDIR must be set for the UI to know which directory to use as default --> 
<Property Id="WIXUI_INSTALLDIR" 
      Value="INSTALLDIR" Secure="yes"/> 
関連する問題