如何在WiX的bootstrapper中使用UI页面处理命令行参数

时间:2016-05-03 17:57:51

标签: wix custom-action bootstrapper

我有一个bootstrapper设置,它接受this链接中提到的命令行参数,如下所述:

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

我使用此命令行参数有条件地运行自定义操作。如果我通过命令行运行它,这工作正常,即如果我传递参数,惯例运行,如果没有,那么它不会运行。但我想要的是当用户通过UI启动它时,即通过双击包,用户显示EULA页面,如果用户接受它,则应运行所有自定义操作,包括具有基于的条件的操作。命令行参数。我如何确保这一点,因为现在发生的事情是,从命令行启动安装时不会运行定制。

欢迎任何建议。如果我的问题不明确,请告诉我。

1 个答案:

答案 0 :(得分:0)

为变量添加默认值。

例如:

<Wix>
  <Bundle>
    <Variable Name="CommandLineArg" bal:Overridable="yes" Type="string" Value="hello"/>
    <Chain>
      <MsiPackage>
        <MsiProperty Name="CommandLineArg" Value="[CommandLineArg]"/>
      </MsiPackage>
    </Chain>
  </Bundle>
</Wix>

这样,即使用户双击安装程序,CommandLineArg也始终具有值。