【问题标题】:Is it possible to have two root directories in WIX是否可以在 WIX 中有两个根目录
【发布时间】:2011-03-11 17:04:25
【问题描述】:

我需要在 C 和 D 驱动器中部署文件。例如,文件 A 转到驱动器 C,文件 B 转到驱动器 D。我知道 Wix 只允许您拥有一个根目录。有什么办法可以做到吗?

我知道一种解决方案是在 Wix Xml 中将 C 设置为根目录,并通过 Wix Xml 部署进入 C 目录的文件。必须部署到 D 目录的文件必须通过自定义操作进行部署。

但是我想避免使用自定义操作,并希望使用相同的 Wix Xml 将文件部署到(C 和 D 驱动器)。

【问题讨论】:

    标签: wix


    【解决方案1】:

    应始终将整个目录结构包装到“TARGETDIR”根目录中。但是没有人会限制您以您需要的方式定义其下的其余结构。请参阅下面的示例:

      <Directory Id="TARGETDIR" Name="SourceDir">
         <Directory Id="INSTALLLOCATION" Name="My location">
         ...
         </Directory>
         <Directory Id="DATA_FOLDER" Name="Data">
         ...
         </Directory>
         <Directory Id="DATABASES_FOLDER">
         ...
         <Directory>
      </Directory>
    

    现在您可以将 DATA_FOLDER 或 DATABASES_FOLDER 设置在与 INSTALLLOCATION 不同的驱动器上。对我来说效果很好。

    【讨论】:

    • 您能否完成您的答案,例如将 DATA_FOLDER 定义为系统磁盘(带有 Windows 目录的磁盘)而不是 Wix 默认定义的最大可用驱动器?
    • 占用最大可用驱动器的不是 WiX,而是 Windows Installer 行为。上面的示例只定义了目录结构,例如,除非您设置 DATA_FOLDER,否则它将回退到默认的 Windows Installer 行为。您应该做的是通过 SetDirectory 自定义操作定义 DATA_FOLDER,或者从命令行传递正确的值:msiexec /i package.msi DATA_FOLDER=...
    • 阅读您的另一个问题,以及您正在寻找的可能是 WindowsVolume MSI 属性:msdn.microsoft.com/en-us/library/windows/desktop/aa372817.aspx
    • 哇很好的提示,但是我可以把它说成 吗?如果你能回答我们可以保持这个线程干净的问题,我会更新我的另一个问题。
    • 我不清楚这个答案有什么帮助。究竟如何将DATA_FOLDER 的位置设置为D:? (您不能将 Name 设置为 D:\,这是架构不允许的)WindowsVolume 设置有什么帮助? (默认情况下会在C: 上?)
    猜你喜欢
    • 1970-01-01
    • 2020-08-28
    • 1970-01-01
    • 1970-01-01
    • 2016-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多