Wix工具集 - 有没有办法验证静默安装属性值

时间:2015-07-14 15:20:47

标签: wix

我想要做的是验证在msiexec / QN呼叫上输入的属性值。

例如,对于我们的运行时SQL Server数据库身份验证,我们需要提供Windows身份验证和SQL用户身份验证。我在UI对话窗口中用RadioButtonGroup表示这些。通过UI的“RT_DB_LOGON_TYPE”属性的默认值是“SqlAuth”。

对于静默安装,我想:

1)如果用户在静默安装命令行中没有为“RT_DB_LOGON_TYPE”属性输入任何值,则将“RT_DB_LOGON_TYPE”属性的默认值设置为“SqlAuth”。

2)如果“RT_DB_LOGON_TYPE”属性的值设置为“SqlAuth或”WinAuth“以外的其他值(不区分大小写),请检查将失败的启动条件。​​

我的代码(位于我的product.wxs文件中):

<SetProperty Id="RT_DB_LOGON_TYPE" Value="SqlAuth" Before="LaunchConditions" Sequence="both">NOT RT_DB_LOGON_TYPE</SetProperty>
<Condition Message="!(loc.RT_DB_LOGON_TYPE_Messg)">RT_DB_LOGON_TYPE ~= "SqlAuth" OR RT_DB_LOGON_TYPE ~= "WinAuth"</Condition>

构建WiX MSI软件包时出现以下错误:

[exec] D:\ stuff \ scripts \ testNG \ installation \ wix_installer \ dialogs \ TenantDBConnectDlg.wxs(23):错误LGHT0094:未解析对“片段:”部分中符号'Property:RT_DB_LOGON_TYPE'的引用。

有没有办法在WiX中进行这种类型的验证?

1 个答案:

答案 0 :(得分:0)

看起来我解决了自己的问题;至少对于Wix RadioButtonGroup元素。

在我的product.wxs等效文件中,我只添加了这两行

<Property Id="RT_DB_LOGON_TYPE" Value="SqlAuth" />
<Condition Message="!(loc.RT_DB_LOGON_TYPE_Messg)">RT_DB_LOGON_TYPE ~= "SqlAuth" OR RT_DB_LOGON_TYPE ~= "WinAuth"</Condition>

在日志文件中,一切都按照我的意愿运行。 RT_DB_LOGON_TYPE:

1)获取设置为property元素中的值 2)被命令行上输入的值覆盖(例如RT_DB_LOGON_TYPE = foo 3)在启动条件下进行评估,该条件在日志文件中捕获。

注意:我没有在日志文件之外找到此故障的可视线索。