如何在Wix中添加命令行参数

时间:2014-06-17 09:52:33

标签: wix windows-installer wix3.5 wix3.7 advanced-installer

我一直在为以下简单的问题寻找一个好的答案。

我有一个互动的Wix安装程序,它非常完美。用户需要在交互式设置中接受许可协议才能进行设置。现在,我需要一个静默安装程序,用户可以通过输入命令行参数(如ACCEPT-EULA = YES)接受相同的许可协议。 任何人都可以指导我如何设法在wxs文件中实现这一点?顺便说一下,我没有使用MSVC。我试过了

<util:XmlFile Action="setValue" ...

但是有很多不同的错误。

我非常感谢任何帮助。 感谢。

2 个答案:

答案 0 :(得分:2)

您希望首先在安装执行序列中安排错误自定义操作,条件为UILevel&lt; 5而不是ACCEPTEULA~ =&#34;是&#34;`

此处定义UILevel属性。 5表示完整的UI,因此您不希望此CA运行。 &LT; 5表示某种形式的静默安装,因此您只希望在属性不相等时触发此自定义操作(不区分大小写)&#34;是&#34;。

<CustomAction Id="RequireEulaWhenSilent" Error="You must accept the EULA by passing ACCEPTEULA=YES when performing a silent installation."/>
<InstallExecuteSequence>
  <Custom Action="RequireEulaWhenSilent" Before="AppSearch"><![CDATA[UILevel<5 and Not ACCEPTEULA~="YES" and Not Installed]]></Custom>
</InstallExecuteSequence>

当然,您现在遇到的问题是,如果他们没有记录安装,他们就不知道安装程序失败的原因。就个人而言,我认为这是高层管理人员的发明要求,在遇到这个问题时我总是会反击。否则你会进入像this这样疯狂的土地。

答案 1 :(得分:1)

我同意Chris的意见,拒绝此要求并将许可协议放在主应用程序EXE文件中,每个用户都标记一个用户是否已经看到并接受了许可协议。

这是假设这在法律上非常重要,因为在我看来,这对每个用户来说都是一个严重的烦恼。但是,可以说系统管理员代表每个用户接受许可协议可能并不合法。我不确定实际上大公司如何处理这个问题。你当然可以问你的营销和销售人员他们对此的看法 - 这是他们的问题。

我认为建议的条件可以正常工作,但这完全取决于您将自定义操作放在序列中的位置,无论您使用主要升级补丁还是类似的不寻常的东西。理想情况下,您应该严格控制条件,以便仅在实际操作时才能运行。

至少测试这些情况:

  • 全新安装,无论是静音还是互动
  • 主要升级,包括无声和互动
  • 卸载,无论是静音还是互动
  • 修改(从“添加/删除程序”开始)

并使用MSI condition cheat sheet为您提供帮助。