使用if条件比较WiX中的变量值
我想检查用户是否传递了默认值为local的USERNAME参数。如果值是本地的,我将尝试查看是否收到消息。问题是这样的。这不管用使用if条件比较WiX中的变量值,wix,windows-installer,wix3.6,Wix,Windows Installer,Wix3.6,我想检查用户是否传递了默认值为local的USERNAME参数。如果值是本地的,我将尝试查看是否收到消息。问题是这样的。这不管用 <Property Id="USERNAME" Value="local"/> <?define uName = [USERNAME]?> <?if $(var.uName) = local ?> <Condition Message="$(var.uName)">0</Condition> &
<Property Id="USERNAME" Value="local"/>
<?define uName = [USERNAME]?>
<?if $(var.uName) = local ?>
<Condition Message="$(var.uName)">0</Condition>
<?endif?>
上述代码在消息框中打印“本地”
我尝试了许多场景,可以找到问题所在。比较变量值时,将其指定为
<?define uName = [USERNAME]?>
虽然该值已分配给uName,但我们无法进行比较。我做错什么了吗?或者有其他方法解决这类问题吗?在没有变量的情况下,您可以这样做吗
USERNAME=“local”
如果用户输入用户名,则安装将继续,但如果用户未输入用户名,则安装将失败,因为默认值为本地
我真想知道用户名是怎么输入的。这是通过命令行还是通过输入对话框实现的
如果从一个对话框-我建议有一个错误对话框,而不是中止安装。我可能完全错了,但我只是给你一些选择
希望这有帮助……:)
编辑:
要做您想做的事情,只需向组件中添加一个条件,其中包含您的服务。有两个组成部分:
<Component Id="ServiceOne" Guid='*' Directory="Directory">
//All your service tags etc
<Condition><![CDATA[USERNAME = "local"]]></Condition>
</Component>
<Component Id="ServiceTwo" Guid='*' Directory="Directory">
//All your service tags etc
<Condition><![CDATA[USERNAME <> "local"]]></Condition>
</Component>
//你所有的服务标签等
//你所有的服务标签等
“本地”]]>
Hi Natalie,谢谢你的想法,但我想要的是,如果用户输入用户名的值(在命令行中),它应该在自定义帐户中安装服务,否则服务应该安装在本地系统中。我想过滤用户是否提到用户名,以便在正确的帐户中安装服务
<?define uName = [USERNAME]?>
<Component Id="ServiceOne" Guid='*' Directory="Directory">
//All your service tags etc
<Condition><![CDATA[USERNAME = "local"]]></Condition>
</Component>
<Component Id="ServiceTwo" Guid='*' Directory="Directory">
//All your service tags etc
<Condition><![CDATA[USERNAME <> "local"]]></Condition>
</Component>