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
Installation Setproperty中的条件未按预期工作_Installation_Wix_Wix3.5 - Fatal编程技术网

Installation Setproperty中的条件未按预期工作

Installation Setproperty中的条件未按预期工作,installation,wix,wix3.5,Installation,Wix,Wix3.5,我想在UI对话框中显示是否安装了前提条件。在启用ASP.NET功能的情况下安装IIS是安装我的安装程序的先决条件之一 我已经根据条件在属性中设置了图像(右键单击或错误单击) <Property Id="ASPNETENABLED"> <RegistrySearch Id="IIS_ASPNET_RegKey" Root="HKLM" Type="raw" Key="SOFTWARE\Microsoft\InetStp\Components" Name="ASPN

我想在UI对话框中显示是否安装了前提条件。在启用ASP.NET功能的情况下安装IIS是安装我的安装程序的先决条件之一

我已经根据条件在属性中设置了图像(右键单击或错误单击)

<Property Id="ASPNETENABLED">
        <RegistrySearch Id="IIS_ASPNET_RegKey" Root="HKLM" Type="raw" Key="SOFTWARE\Microsoft\InetStp\Components" Name="ASPNET" />
</Property>

<Property Id="IISico" Value="RightClick" />
<SetProperty Id="IISico" Value="WrongClick"  After="CostFinalize"><![CDATA[Installed OR ASPNETENABLED OR (IISMAJORVERSION AND (IISMAJORVERSION = "#6" OR IISMAJORVERSION = "#7"))]]></SetProperty>

<Control Type="Bitmap" Id="IISico" Width="35" Height="17" X="154" Y="105" Text="[IISico]" />
但是IISico属性仅在CostFinalize之后运行,它在日志中显示如下

Action 18:47:31: SetIISico. 
Action start 18:47:31: SetIISico.
MSI (c) (90:E4) [18:47:31:930]: PROPERTY CHANGE: Modifying IISico property. Its current value is 'RightClick'. Its new value: 'WrongClick'.
Action ended 18:47:31: SetIISico. Return value 1.
我无法找到问题的根本原因。你能帮我解决这个问题吗?是否有其他方式显示是否安装了必备软件?
提前感谢。

听起来您希望在未启用ASP.NET时将
IISico
属性设置为
“错误单击”
。如果是这样,您的情况应该更像:

<SetProperty Id="IISico" Value="WrongClick" After="CostFinalize">
    ASPNETENABLED AND (IISMAJORVERSION = "#6" OR IISMAJORVERSION = "#7")
</SetProperty>

ASPNETENABLED AND(IISMAJORVERSION=“#6”或IISMAJORVERSION=“#7”)
该条件表示,“如果定义了
ASPNETENABLED
(又名:非空字符串),并且
IISMAJORVERSION
#6
#7
,则运行
SetProperty
自定义操作。”


我不知道您最初为什么在条件中包含
已安装
。它将使
错误单击
设置程序包已安装的任何时间。听起来不像你说的那样。

谢谢你,罗布。你救了我的命。
<SetProperty Id="IISico" Value="WrongClick" After="CostFinalize">
    ASPNETENABLED AND (IISMAJORVERSION = "#6" OR IISMAJORVERSION = "#7")
</SetProperty>