【问题标题】:Can you set TARGETDIR to be a command line parameter?您可以将 TARGETDIR 设置为命令行参数吗?
【发布时间】:2012-10-31 14:59:22
【问题描述】:

我已经生成了一个 msi,我希望能够更改它的默认安装目录,并且我知道您可以使用命令行参数更改 WIX 属性,但我似乎无法让 TARGETDIR 像这样工作这个:

Installer.msi TARGETDIR=C:\

我的目录片段是:

<Fragment>
    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="SystemFolder"/>

      <!-- Desktop-->
      <Directory Id="DesktopFolder"/>

      <Directory Id="ProgramFilesFolder">
        <Directory Id="DIR_Company" Name="Company Name">
          <Directory Id="DIR_SubDir" Name="Sub Directory" >
            <Directory Id="INSTALLDIR" Name="My Product">
              <Directory Id="DIR_ONE" Name="ONE"  />
              <Directory Id="DIR_TWO" Name="TWO" />
              <Directory Id="DIR_THREE" Name="THREE" />
            </Directory>
          </Directory>
        </Directory>
      </Directory>
    </Directory>

  </Fragment>

这是不可能的,还是我的语法?

【问题讨论】:

    标签: wix wix3.6


    【解决方案1】:

    我怀疑这是因为您的目录层次结构中有预定义的文件夹,例如ProgramFilesFolder。即使您通过命令行设置了TARGETDIR,它也会被您的程序文件的众所周知的位置覆盖,并且所有子文件夹都变得相对。

    作为一种解决方法,您可以从命令行设置INSTALLDIR。如果您为其提供完整路径,它将覆盖您在 WiX 创作中定义的初始层次结构。

    【讨论】: