我想检测用户在GUI中选择的自定义安装位置中是否已存在目录。我尝试了以下方法:
<Property Id="DIRECTORY_PATH">
<DirectorySearch Id="DirectorySearch" Path="[INSTALLDIR]\MyDirectory" />
</Property>
但这不起作用,因为DirectorySearch正在AppSearch期间发生。在InstallDirDlg期间稍后设置INSTALLDIR。由于没有及时为AppSearch设置INSTALLDIR,因此DIRECTORY_PATH被错误地设置为“\ MyDirectory”。
我尝试使用InstallUISequence和InstallExecuteSequence更改AppSearch,但它只会让AppSearch在CostInitialize之前出现,不会迟到。
那么如何在用户选择的INSTALLDIR位置进行目录搜索?
答案 0 :(得分:3)
如果您只需要等待用户选择验证该目录,那么DirectorySearch将不会为您完成这项工作。您必须在用户选择INSTALLDIR后立即创建“set property”自定义操作,例如,在下一次单击InstallDirDlg时。
更新。所以,我的意思基本如下:
session["DIRECTORY_PATH"] = session[INSTALLDIR] + "\MyDirectory";
NOT DIRECTORY_PATH
)在任何条件下使用此事实希望它更清楚。
答案 1 :(得分:0)
希望这会对你有所帮助。
如果您已将先前安装的INSTALLDIR存储在注册表中,则可以获取并搜索它。在安装UI序列中,安装位置将指向先前的位置。
<!-- 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"/>