如果提供了无法识别的参数,是否可能使msi安装失败?

时间:2014-02-26 15:29:21

标签: wix windows-installer msiexec

例如,如果用户输错了参数,我想让安装失败,而不是继续使用某个默认值。

假设我有一个MSI包,可以选择接受一个名为SOMEPROPERTY的参数。

msiexec /i myProduct.msi SOMEPROPERTY=abc应该有效

msiexec /i myProduct.msi应该有效

msiexec /i myProduct.msi SUMPROPERTY=abc因未知参数的存在而失败。

这可能吗?如果是这样,怎么样?

2 个答案:

答案 0 :(得分:4)

我会重置您的客户和/或经理的期望。我认为SUMPROPERTY是一个不相关的属性,它按设计工作,因为SOMEPROPERTY为null。或者,要求SOMEPROPERTY具有相同的值,即使它为0或其他属性,例如IGNORESOMEPROPERTY = 1。

否则,您会遇到一个几乎无法解决的白名单问题,因为MSIEXEC.EXE会将属性传递到您期望但未在您的属性列表中的会话中。我也没有知道要获取要传递的属性列表的API。结合所有这些和你的麻烦。

另一种方法是创建一个EXE前端,进行更广泛的验证,并使用特殊属性(MSIEXEDRIVEN = 1)调用您的MSI,表示可以继续进行。

答案 1 :(得分:0)

您可以创建launch condition。如果设置了SOMEPROPERTY且值不是“123”,则以下条件失败。

<Condition Message="Unknown property value">NOT SOMEPROPERTY OR SOMEPROPERTY="123"</Condition>