Isu*_*ana 4 windows-installer wix wix3.6
我想检查用户是否已传递USERNAME的参数,其默认值为local.我试图看看如果值是本地的,我是否收到消息.问题在于以下方式.这不起作用.
<Property Id="USERNAME" Value="local"/>
<?define uName = [USERNAME]?>
<?if $(var.uName) = local ?>
<Condition Message="$(var.uName)">0</Condition>
<?endif?>
Run Code Online (Sandbox Code Playgroud)
但是,如果我将代码更改为以下代码,它将给出消息.
<?define uName = local?>
<?if $(var.uName) = local ?>
<Condition Message="$(var.uName)">0</Condition>
<?endif?>
Run Code Online (Sandbox Code Playgroud)
以下代码将USERNAME属性的值分配给uName变量.
<Property Id="USERNAME" Value="local"/>
<?define uName = [USERNAME]?>
<Condition Message="$(var.uName)">0</Condition>
Run Code Online (Sandbox Code Playgroud)
上面的代码在消息框中打印"local".
我尝试了很多场景,可以找到问题所在.比较变量值时,分配为,
<?define uName = [USERNAME]?>
Run Code Online (Sandbox Code Playgroud)
虽然该值已分配给uName,但我们无法进行比较.我在这里做错了吗?或者还有另一种解决这类问题的方法吗?
Nat*_*arr 13
如果没有变量,你能这样做吗?
<Property Id="USERNAME" Value="local"/>
<Condition Message="The username is local, please enter a username for the installation to proceed">USERNAME = "local"</Condition>
如果用户输入了用户名,那么这将是正确的,然后安装将继续,但如果用户没有,那么它将失败,因为默认是本地的.
我想知道如何输入用户名.这是通过命令行还是来自输入对话框?
如果从对话框 - 我建议有一个错误对话框而不是中止安装.我可能完全错了,但只是给你选择.
希望这可以帮助...:)
编辑:
要做你想做的事,只需在你的服务内部添加一个条件.有两个组成部分:
<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>
Run Code Online (Sandbox Code Playgroud)