我正在尝试构建一个多实例安装程序,该安装程序在 INSTALLDIR 目录下创建一个具有适当名称的目录:
<Directory Id="INSTALLDIR" Name="My Product">
<Directory Id="SERVERDIR" Name="Server" />
</Directory>
<SetDirectory Id="SERVERDIR" Value="[INSTALLDIR]Server ([INSTANCEID])">NOT (INSTANCEID="DEFAULT")</SetDirectory>
我希望至少 INSTALLDIR 属性会在 InstallExecute 序列开始时传入,即使 CostFinalize 尚未解决大多数其他目录。有没有办法在 CostFinalize 之前找到用户指定的安装目录,以便我可以正确设置 SERVERDIR 路径?
更新 1:我猜在大多数情况下 INSTALLDIR 本身会被 CostFinalize 解决,除非它是在命令行上设置的(因此它对我来说是空白的)。我可以拥有我自己的属性,该属性默认为我期望 INSTALLDIR 的位置,除非它是由用户设置的。需要弄清楚 UI 是如何传递它的——希望它只是正常传递 INSTALLDIR。
更新 2:UI 通过 INSTALLDIR。但它也会传递所有其他已解析的目录,包括 SERVERDIR 下的目录。我需要在两个序列中运行 SetDirectory 操作并自己提出一个默认的 INSTALLDIR 属性。我也应该给自己买一只橡皮鸭。