以下是我的代码
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="928a18b3-0f75-4b89-844f-a5699a549011" Name="ExperimentNew" Language="1033" Version="1.0.0.0" Manufacturer="Experiment" UpgradeCode="17929f52-f868-4164-96f6-c47b62781041">
<Package InstallerVersion="200" Compressed="yes" />
<Media Id="1" Cabinet="media1.cab" EmbedCab="yes" />
<Property Id="ODPNETINSTALLED" Value="1"></Property>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLLOCATION" Name="Experiment">
<Component Id ="main_test_file" Guid="{914ED802-82EF-4296-85F2-4095DE0AAC1D}" KeyPath="yes">
<File Id="file1" Source=".\try.bat"></File>
</Component>
</Directory>
</Directory>
</Directory>
<Feature Id="ProductFeature" Title="Experiment" Level="1">
<ComponentRef Id="main_test_file"/>
<ComponentGroupRef Id="Product.Generated" />
</Feature>
<CustomAction Id ="SetProperty" Property="ODPNETINSTALLED" Value="0"></CustomAction>
<InstallExecuteSequence>
<Custom Action="SetProperty" Before="LaunchConditions" ></Custom>
</InstallExecuteSequence>
<Condition Message="SHOULD NOT APPEAR"><![CDATA[ODPNETINSTALLED="0"]]></Condition>
<UI>
<UIRef Id="WixUI_Minimal" />
</UI>
</Product>
</Wix>
我想在自定义操作“SetProperty”中更改“ODPNETINSTALLED”的值 所以我希望不会弹出条件消息。但它每次都在安装的第一个开始时显示 - 为什么会这样?
我也做了以下更改:
<Property Id="ODPNETINSTALLED" Value="0"></Property>
<CustomAction Id ="SetProperty" Property="ODPNETINSTALLED" Value="1"></CustomAction>
然后在接受许可协议后显示条件消息。
答案 0 :(得分:1)
我不确定我是否完全理解您提到的代码,但我怀疑此特定情况下的问题可能与您希望运行的操作序列有关。您可以在{{1}中安排它但是你可能希望它能早点运行。 InstallExecuteSequence
和LaunchConditions
都安排了InstallUISequence
次操作,因此除了最小的UI之外,它首先在InstallUISequence中运行。只要您的行为影响InstallExecuteSequence
,我认为您应该这样做。
所以:
LaunchConditions
属性Execute="firstSequence"
和InstallUISequence
旁注:我会更改用于设置属性的逻辑并检测它是否已设置。您可以简单地避免默认设置,而不是将其设置为默认值,然后更改为所需的值。然后让此CA在需要设置时设置ODPNETINSTALLED属性。并且所有检查和条件将验证属性是否已定义,而不是检查特定值。即不是ODPNETINSTALLED,而不是ODPNETINSTALLED&lt;&gt; 1,或者别的什么。
希望这有帮助。