Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用if条件比较WiX中的变量值_Wix_Windows Installer_Wix3.6 - Fatal编程技术网

使用if条件比较WiX中的变量值

使用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> &

我想检查用户是否传递了默认值为local的USERNAME参数。如果值是本地的,我将尝试查看是否收到消息。问题是这样的。这不管用

<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>