WIX目录搜索总是失败

时间:2015-04-09 19:32:57

标签: wix conditional-statements

似乎无论我做什么,我在WIX中放入产品的任何条件都会阻止我的运行安装。下面我给出了一些应该检查程序文件目录是否存在的简单代码,如果存在,请运行安装程序。我收到一条消息说"找不到程序文件夹。"指示条件返回false。我在这里缺少什么?

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Name="SetupProject1" Language="1033" Version="1.0.0.0" Manufacturer="Toshiba" UpgradeCode="bb557911-769b-4a30-8461-3ad860ddc10e">
    <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />

    <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
    <MediaTemplate />

<Property Id="PFFOLDER" >
  <DirectorySearch Id="SystemFolderDriverVersion" Path="[ProgramFilesFolder]">
  </DirectorySearch>
</Property>

<Condition Message="Program files folder not found.">
  <![CDATA[PFFOLDER]]>
</Condition>


    <Feature Id="ProductFeature" Title="SetupProject1" Level="1">
        <ComponentGroupRef Id="ProductComponents" />
    </Feature>
</Product>

<Fragment>
    <Directory Id="TARGETDIR" Name="SourceDir">
        <Directory Id="ProgramFilesFolder">
            <Directory Id="INSTALLFOLDER" Name="SetupProject1" />
        </Directory>
    </Directory>
</Fragment>

<Fragment>
    <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
        <!-- TODO: Remove the comments around this Component element and the ComponentRef below in order to add resources to this installer. -->
        <!-- <Component Id="ProductComponent"> -->
            <!-- TODO: Insert files, registry keys, and other resources here. -->
        <!-- </Component> -->
    </ComponentGroup>
</Fragment>

3 个答案:

答案 0 :(得分:0)

将AssignToProperty =“yes”添加到DirectorySearch元素。此外,我认为您不需要将属性名称包装在CDATA块中。

答案 1 :(得分:0)

确保标准操作&#39; AppSearch&#39;在“发布条件”之前运行&#39;在InstallUISequence和InstallExecuteSequence中。

AppSearch操作填充了您的PFFOLDER属性(如果该目录存在)。然后,您可以运行LaunchConditions操作以查看是否应允许安装...

答案 2 :(得分:0)

我遇到了同样的问题(在 Windows 10 下)。但是当我以提升的权限运行安装程序时,它就可以工作了。奇怪的是,为了检查目录是否存在,安装程序需要以管理员身份运行。