【问题标题】:How do I use the SourceDir MSI property in WiX?如何在 WiX 中使用 SourceDir MSI 属性?
【发布时间】:2011-11-23 03:45:11
【问题描述】:

使用 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 的值)之前发生。这让我陷入了倒退的境地.

【问题讨论】:

    标签: properties wix windows-installer


    【解决方案1】:

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

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

    【讨论】:

    • 这就不同了。谢谢!
    • 假设我想要的所有功能都可以在 VBScript 中使用,那么使用 DLL 比 VBScript 有什么优势吗?
    • 并非如此。两者的使用方式相同。
    • DLL 更加健壮。 (谷歌脚本自定义操作是邪恶的)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-15
    相关资源
    最近更新 更多