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

标签 properties wix windows-installer

使用 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 操作(执行 DirectorySearchFileSearch)必须在 ResolveSource 之前发生操作(设置 SourceDir 的值。)这让我陷入倒退的境地。

最佳答案

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

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

关于properties - 如何在 WiX 中使用 SourceDir MSI 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8237051/

相关文章:

Objective-C 属性和内存管理

java - 公开绑定(bind)属性

xml - 从 WiX 更改 XML 节点值

Wix重大升级,无论新文件版本如何替换文件

registry - 如何正确地将文件关联添加到 Windows 注册表?

wix - 使用WiX添加multiString注册表值?

javascript - 调用渲染作为回调时访问 View 属性

java - 从 Web 应用程序的根目录读取属性文件

c# - 如何执行具有依赖项的 WiX 自定义操作 DLL 文件

windows-installer - 使用 msi 安装 jre 和使用 jreXXX.exe 安装程序安装 jre 之间的区别