具体来说,在我的 WIX 部署项目中,我试图将 TARGETDIR 设置为 [ProgramFilesFolder][Manufacturer],以便当我的自定义修改版 WixUI_InstallDir 打开 InstallDirDlg 时,它默认为该路径而不是驱动器根目录。
根据我发现的关于设置 TARGETDIR、在对话框之间插入操作以及文档中的各种数据的问题的答案,我一直在尝试各种形式的自定义操作,如下所示:
<CustomAction Id="SetTARGETDIR" Property="TARGETDIR" Value="[ProgramFilesFolder][Manufacturer]" Execute="immediate" />
我还尝试过 Property="WIXUI_INSTALLDIR"、Execute="firstSequence" 和硬编码值。
我试过用 InstallExecuteSequence 调用它:
<InstallExecuteSequence>
<Custom Action="SetTARGETDIR" After="FindRelatedProducts"></Custom>
</InstallExecuteSequence>
当然,我尝试在许多不同的事件之前或之后插入。(一个恼人的障碍是我希望 Before="InstallDirDlg" 是插入操作的最佳位置,但是当我尝试将任何对话框用作事件时会出现编译错误。)
我还尝试在调用 InstallDirDlg 时在 UI 片段中发布操作:
<Publish Dialog="WelcomeDlg" Control="Next" Event="DoAction" Value="SetTARGETDIR">NOT Installed</Publish>
我尝试过的一些事情会引发错误,但大多数时候,问题只是 TARGETDIR 没有改变。默认安装路径仍然是驱动器根目录。我最好的猜测是,这个 WixUI 的使用从根本上改变了我应该期望自定义操作触发的方式。但我似乎找不到任何线索为什么会这样。