似乎无论我做什么,我在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>
答案 0 :(得分:0)
将AssignToProperty =“yes”添加到DirectorySearch元素。此外,我认为您不需要将属性名称包装在CDATA块中。
答案 1 :(得分:0)
确保标准操作&#39; AppSearch&#39;在“发布条件”之前运行&#39;在InstallUISequence和InstallExecuteSequence中。
AppSearch操作填充了您的PFFOLDER属性(如果该目录存在)。然后,您可以运行LaunchConditions操作以查看是否应允许安装...
答案 2 :(得分:0)
我遇到了同样的问题(在 Windows 10 下)。但是当我以提升的权限运行安装程序时,它就可以工作了。奇怪的是,为了检查目录是否存在,安装程序需要以管理员身份运行。