如何在WiX中使用SourceDir MSI属性?

时间:2011-11-23 03:45:11

标签: properties wix windows-installer

使用WiX,如何检测SourceDir文件夹中是否存在特定文件?

我有以下WiX片段,用于确定 Adob​​e 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操作(执行DirectorySearchFileSearch)必须在ResolveSource操作之前发生(设置SourceDir的值这使我处于倒退状态。

1 个答案:

答案 0 :(得分:2)

解决方案是在ResolveSource之后立即使用自定义操作而不是搜索。此自定义操作可以检查文件是否存在,并将结果保存在自定义安装程序属性中。

要访问安装程序属性,您可以使用win32 DLL或VBScript自定义操作。