使用WiX,如何检测SourceDir文件夹中是否存在特定文件?
我有以下WiX片段,用于确定 Adobe Reader 安装程序是否已分发到与我的MSI文件相同的文件夹中,如果是,请在安装后运行它。
<Property Id="ADOBEREADERINSTALLER">
<DirectorySearch Id="SourceDir" Path="[SourceDir]" Depth="0" AssignToProperty="yes">
<FileSearch
Id="AdbeRdr810_en_US.exe"
Name="AdbeRdr810_en_US.exe"
MaxDate="2011-03-24T13:18:59" MaxSize="23402288" MaxVersion="1.0.0.92"
MinDate="2011-03-24T13:18:00" MinSize="23402288" MinVersion="1.0.0.92"
/>
</DirectorySearch>
</Property>
<Property Id="INSTALLADOBEREADER" Value="1" />
<CustomAction
Id ="InstallAdobeReader"
Property ="ADOBEREADERINSTALLER"
ExeCommand =""
Execute ="immediate"
Return ="asyncNoWait" />
<InstallUISequence>
<ResolveSource After="CostInitialize"> UPGRADINGPRODUCTCODE OR NOT Installed </ResolveSource>
</InstallUISequence>
<InstallExecuteSequence>
<Custom Action="InstallAdobeReader" After="InstallFinalize"> (UPGRADINGPRODUCTCODE OR NOT Installed) AND ADOBEREADERINSTALLER AND INSTALLADOBEREADER </Custom>
</InstallExecuteSequence>
似乎AppSearch
操作(执行DirectorySearch
和FileSearch
)必须在ResolveSource
操作之前发生(设置SourceDir
的值这使我处于倒退状态。
答案 0 :(得分:2)
解决方案是在ResolveSource之后立即使用自定义操作而不是搜索。此自定义操作可以检查文件是否存在,并将结果保存在自定义安装程序属性中。
要访问安装程序属性,您可以使用win32 DLL或VBScript自定义操作。