gpt4 book ai didi

wix - SetDirectory 与目录属性

转载 作者:行者123 更新时间:2023-12-04 04:37:26 25 4
gpt4 key购买 nike

我正在尝试构建一个多实例安装程序,它在 INSTALLDIR 目录下创建一个具有适当名称的目录:

<Directory Id="INSTALLDIR" Name="My Product">
<Directory Id="SERVERDIR" Name="Server" />
</Directory>
<SetDirectory Id="SERVERDIR" Value="[INSTALLDIR]Server ([INSTANCEID])">NOT (INSTANCEID="DEFAULT")</SetDirectory>

我希望至少在 InstallExecute 序列开始时传入 INSTALLDIR 属性,即使 CostFinalize 尚未从中解析大多数其他目录。有没有办法在 CostFinalize 之前找到用户指定的安装目录,以便我可以正确设置 SERVERDIR 路径?

更新 1:我猜在大多数情况下 INSTALLDIR 本身由 CostFinalize 解决,除非它在命令行上设置(因此对我来说它是空白的)。我可以拥有自己的属性,该属性默认为我期望 INSTALLDIR 所在的位置,除非它是由用户设置的。需要弄清楚 UI 如何传递它 - 希望它只是正常通过 INSTALLDIR。

更新 2:UI 通过 INSTALLDIR。但它也会遍历所有其他已解析的目录,包括 SERVERDIR 下的目录。我需要在两个序列中运行 SetDirectory 操作并自己提供默认的 INSTALLDIR 属性。我也应该给自己买一个 rubber duck .

最佳答案

SetDirectory 可以使用格式化字符串中的属性,但您需要注意何时设置此类属性。在正常的 UI 安装中:

  • InstallUISequence 运行
  • CostFinalize 解析并设置目录属性
  • 显示对话框(INSTALLDIR 已由 CostFinalize 设置)
  • 安装执行运行
  • 安装目录属性被插入序列

  • SetDirectory 元素在 CostFinalize 之前运行,并且它使用的路径必须是完整路径。要将 SERVERDIR 属性作为上述 INSTALLDIR 属性的基础,请确保已设置默认的 INSTALLDIR 表示解析通常如何发生:

    <SetDirectory Action="SetInstallDir" Id="INSTALLDIR" Value="[$(var.Variables_ProgramFilesFolderId)]$(var.Variables_ManufacturerDir)\$(var.Variables_ProductNameShort)\">INSTALLDIR=""</SetDirectory>
    <SetDirectory Action="SetServerInstallDir" Id="SERVERINSTALLDIR" Value="[INSTALLDIR]Server ([INSTANCEID])\">NOT (INSTANCEID="DEFAULT")</SetDirectory>

    关于wix - SetDirectory 与目录属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19497584/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com