【问题标题】:Wix Conditional custom actionWix 条件自定义操作
【发布时间】:2015-01-26 09:44:00
【问题描述】:

我有一个 Wix 项目,它有几个 msi 和一个引导程序来运行这些 msi。

在其中一个 msi 中,我想运行基于参数属性的自定义操作。

在我的Product.wxs,我有这个代码:

<CustomAction Id="MyAction" FileKey="myapp.exe" ExeCommand="-a -b" 
              Execute="deferred" Return="check" />
<InstallExecuteSequence>
    ...
    <Custom Action="MyAction" After="CustomActionInstallService">
        NOT Installed AND NOT PATCH AND MYPROPERTY=1
    </Custom>
</InstallExecuteSequence>

我从命令行运行:

mybootstrapper MYPROPERTY=1

但自定义操作没有运行。

为了测试,我更改了我的自定义操作,如下所示:

    <Custom Action="MyAction" After="CustomActionInstallService">
        MYPROPERTY=1
    </Custom>

结果相同,自定义操作不会运行。

有什么想法吗?

提前致谢

【问题讨论】:

  • 你能分享一个日志文件吗?是否调用了 CustomActionInstallService?你试过 MYPROPERTY="1"
  • 为什么要使用自定义操作来安装服务,而不是使用 ServiceInstall/ServiceControl?
  • @ChristopherPainter 这只是此操作的名称。不多。问题在于条件
  • 我只是在检查是否存在设计问题。我的预感是有。我尝试提供全面的建议并解决全局问题。
  • 您的 Property 元素是什么样的?

标签: wix windows-installer


【解决方案1】:

在您的引导程序(刻录)脚本中,您是否将属性传递给 MSI?应该在您的烧录项目中执行类似的操作以传递属性:

<Bundle>
    <Variable Name="MYPROPERTY" bal:Overridable="yes"/>
    <Chain>
      <MsiPackage>
        <MsiProperty Name="MYPROPERTY" Value="[MYPROPERTY]"/>
      </MsiPackage>
    </Chain>
</Bundle>

【讨论】:

  • 您只是在猜测,因为问题中没有足够的信息来提供答案。问题也可能是他没有将 MYPROPERTY 声明为安全。
  • 由于没有指示调用 CustomInstallService 的位置,它甚至可能在 InstallFiles 之前,因此,正在安装的文件的延迟 CA 当然会失败。
猜你喜欢
  • 2011-05-18
  • 1970-01-01
  • 1970-01-01
  • 2011-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多