无法将命令行参数传递给条件自定义操作

时间:2020-06-13 23:43:02

标签: wix

我有一个自定义操作,可以启动安装的应用程序。我的软件通过Windows服务自动更新,这意味着它必须以静默方式运行。我使用/ q命令行参数调用burn,并且我的应用安装良好。问题是我的应用程序在不应该启动时启动,因为该服务未设置为与桌面交互。因此,我在网上关注了许多帖子,它们显示了添加属性。问题在于自定义操作仍在执行。这是我包装中的物品:

<Variable Name="ISSILENT" Value="0" bal:Overridable="yes" />
<Chain>
      <MsiPackage Id="foobar" SourceFile=".\bin\$(var.Platform)\foobarInstaller.msi" DisplayInternalUI="yes">
      <MsiProperty Name="ISSILENT" Value="[ISSILENT]" />
  </MsiPackage>
</Chain>

这就是我的msi中的东西:

    <Property Id="ISSILENT"/>

    <CustomAction Id="LaunchApplication"
              Directory="INSTALLDIR"
              ExeCommand="&quot;[INSTALLDIR]foobarui.exe&quot;"
              Execute="deferred"
              Return="asyncNoWait"
              Impersonate="yes"
             >
          ISSILENT=0
    </CustomAction>

最后从命令行指定:

foobar.exe /q ISSILENT=1

因此,结果应该是应用程序未启动但仍启动。

当然,更好的解决方案将涉及询问WIX引擎以查看安装程序是否以静默方式运行,但是我的理解是,burn从安装程序中隐藏了必要的信息,因此无法确定它是否以静默方式运行。

1 个答案:

答案 0 :(得分:0)

我使用了错误的XML块来指定我的条件。一旦我将其移到这里,它就起作用了:

<InstallExecuteSequence>      
  <Custom Action="LaunchApplication" After="StartServices" >
    (ISSILENT=0)
  </Custom>
</InstallExecuteSequence>