У меня есть свойство, которое установлено в 1, если функция базы данных устанавливается:
<Property Id="DBFLAG" Value="0" />
<CustomAction Id="DbCheck" Return="check" Execute="immediate" Property="DBFLAG" Value="1" />
<InstallExecuteSequence>
<Custom Action="DbCheck" After="CostFinalize"><![CDATA[&ft_db=3]]></Custom>
</InstallExecuteSequence>
В другой функции я проверяю этот DBFLAG, чтобы увидеть, является ли он 0 или 1, и на основании этого я хочуЧтобы запустить службу немедленно или нет:
<Component Id="cmp_Svc" Guid="99481212-F2E0-4B6E-934D-0994815C31ED">
<File Id="FILE01" Source="$(var.Service.TargetDir)\Service.exe" KeyPath="yes" />
<ServiceInstall Id="Svc" Name="My Service" Type="ownProcess" Account="[WIX_ACCOUNT_LOCALSYSTEM]" Description="My Service." DisplayName="My Service" ErrorControl="normal" Interactive="no" Start="auto" Vital="no" />
</Component>
<Component Id="cmp_SvcC_Start" Guid="2ED5DBC7-BD42-4D46-AB18-E82DB0E317AD">
<Condition>DBFLAG=1</Condition>
<ServiceControl Id="SvcC_Start" Name="My Service" Remove="uninstall" Stop="both" Wait="yes" Start="install" />
</Component>
<Component Id="cmp_SvcC" Guid="5769A35B-FD61-45D4-8113-40FB762B79C6">
<Condition>DBFLAG=0</Condition>
<ServiceControl Id="SvcC" Name="My Service" Remove="uninstall" Stop="both" Wait="yes" />
</Component>
Тем не менее, она всегда запускает службу cmp_SvcC вместо службы cmp_SvcC_Start, если установлена функция базы данных.Я проверил журналы и вижу, что DBFLAG установлен в 1 перед запуском cmp_SvcC и cmp_SvcC_Start, но все еще выполняется cmp_SvcC, даже если условие выполняется только при DBFLAG = 0.
Если я изменяю исходноезначение DBFLAG равно 1, после чего запускается cmp_SvcC_Start.
Кто-нибудь знает, почему это происходит?