使用WiX定位特定文件夹

时间:2014-01-29 13:26:46

标签: wix installer

我正在使用Wix创建一个安装程序,该安装程序将在用户的PC上搜索目录并在该目录中安装相关的应用程序。例如,我需要安装到文件夹ProductA\Utilities,其位置超出了我的控制范围。

为实现这一目标,我尝试了以下方法:

<Property Id="UTILITIES_DIR">
    <DirectorySearch Id="FindUtilsDir" Path="ProductA\Utilities"/>
</Property>

<Directory Id="TARGETDIR" Name="SourceDir">
    <!-- WiX requires me to use a special folder at some point -->
    <Directory Id="ProgramFilesFolder" Name="ProgramFiles"> 
        <Directory Id="UTILITIES_DIR">
            <Directory Id="INSTALLFOLDER" Name="MyUtility"/>
        </Directory>
    </Directory>
</Directory>

当我通过双击运行安装程序时,这一切都运行良好,但是,当我通过msiexec.exe运行安装程序时,找到了UTILITIES_DIR,但在之后立即覆盖:

从日志文件:

MSI (c) (C0:0C) [16:49:34:064]: 
    PROPERTY CHANGE: Adding TARGETDIR property. Its value is 'F:\'.
MSI (c) (C0:0C) [16:49:34:064]: 
    PROPERTY CHANGE: Modifying ProgramFilesFolder property. 
    Its current value is 'C:\Program Files (x86)\'. Its new value: 'F:\ProgramFiles\'.
MSI (c) (C0:0C) [16:49:34:064]: 
    PROPERTY CHANGE: Modifying UTILITIES_DIR property. 
    Its current value is 'C:\ProductA\Utilities'. Its new value: 'F:\ProgramFiles\'.

值得注意的是,我的机器上的F:\是C:\的部分网络共享,它报告与C:\完全相同的可用空间,所以我似乎得到了很幸运,当直接运行.msi并且TARGETDIR设置为C:\时,但是当从msiexec运行时,TARGETDIR被设置为F:。

有没有办法找到可能在任何根目录中的特定目录?

1 个答案:

答案 0 :(得分:0)

您可以将SourceDir设置为WindowsVolume。所以它不会再改变了。

<SetDirectory Id="SourceDir " Value="[WindowsVolume]" />