Wix:如何在自定义安装位置执行DirectorySearch

Mic*_*ael 6 installer wix

我想检测用户在GUI中选择的自定义安装位置中是否已存在目录.我尝试了以下方法:

<Property Id="DIRECTORY_PATH">
  <DirectorySearch Id="DirectorySearch" Path="[INSTALLDIR]\MyDirectory" />
</Property>
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为DirectorySearch正在AppSearch期间发生.在InstallDirDlg期间稍后设置INSTALLDIR.由于没有及时为AppSearch设置INSTALLDIR,因此DIRECTORY_PATH被错误地设置为"\ MyDirectory".

我试图改变AppSearch与InstallUISequence和InstallExecuteSequence发生的关系,但它只会让AppSearch在CostInitialize之前出现,不会迟到.

那么如何在用户选择的INSTALLDIR位置进行目录搜索?

Yan*_*nko 4

如果您只需等待用户选择来验证该目录,那么 DirectorySearch 将无法为您完成这项工作。您必须在用户选择 INSTALLDIR 后立即编写“设置属性”自定义操作,例如,在下一步单击 InstallDirDlg 时。

更新。所以,我的意思基本上如下:

  • 当用户到达安装程序的 InstallDirDlg 时,他/她选择目录,并将其放入 INSTALLDIR 属性
  • 然后,InstallDirDlg 对话框应该在“下一步”按钮上触发自定义操作
  • 此自定义操作应获取 INSTALLDIR 属性的值,并执行简单的文件系统检查 INSTALLDIR 是否包含 MyDirectory
  • 如果是,则 DIRECTORY_PATH 属性设置为必要的值,例如session["DIRECTORY_PATH"] = session[INSTALLDIR] + "\MyDirectory";
  • 否则,未设置 DIRECTORY_PATH (您可以通过检查在任何情况下使用此事实NOT DIRECTORY_PATH

希望它能让它更清楚。