Изменение свойства не влияет на компонент
Я пытаюсь настроить удаление wix, я добавил настраиваемое диалоговое окно, в котором пользователь может установить или снять флажок. Если пользователь снимает флажок, файл не удаляется. В чем проблема, не могли бы вы помочь? Почему это не работает для изменения собственности?
<UI>
<Dialog Id="UninstallDlg" Width="370" Height="270" Title="!(loc.WelcomeDlg_Title)">
<Control Id="NextB" Type="PushButton" X="248" Y="243" Width="56" Height="17" Default="yes" Text="!(loc.WixUINext)" />
<Control Id="BackB" Type="PushButton" X="192" Y="243" Width="56" Height="17" Text="!(loc.WixUIBack)" />
<Control Id="FullDelete"
Type="CheckBox"
Height="18"
Width="295"
X="26" Y="58"
Text="Not to delete custom files"
Property="FULLUNINSTALL"
CheckBoxValue="1" />
<Control Id="BannerBitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="44" TabSkip="no" Text="!(loc.CustomizeDlgBannerBitmap)" />
<Control Id="BannerLine" Type="Line" X="0" Y="44" Width="370" Height="2" />
<Control Id="BottomLine" Type="Line" X="0" Y="234" Width="370" Height="2" />
<Control Id="Title" Type="Text" X="15" Y="6" Width="210" Height="15" Transparent="yes" NoPrefix="yes" Text="!(loc.CustomizeDlgTitle)" />
</Dialog>
</UI>
<Component Id="FullDelete" Guid="{469E4DE7-A031-449F-8B75-D4CBC94F88B6}">
<Condition>FULLUNINSTALL = 0</Condition>
<RemoveFile Id="RemoveDatabase" Name="*.sdf" On="uninstall"/>
</Component>
<Property Id="FULLUNINSTALL" Secure="yes">1</Property>
2 ответа
Решение
Я решил эту проблему с помощью пользовательских действий, в моем случае это лучший способ, как мне кажется.
<Control Id="LeaveFiles"
Type="CheckBox"
Height="18"
Width="295"
X="26" Y="58"
Text="Not to delete custom files"
Property="CHECKBOXPROP"
CheckBoxValue="1" />
И код в продукте:
<Property Id="CHECKBOXPROP" Secure="yes">1</Property>
Если пользователь снимает флажок, настраиваемое действие работает:
<CustomAction Id="DeleteFolders" Directory="APPLICATIONROOTDIRECTORY" ExeCommand="cmd /C RD "./Logs" /s /q"
Execute="deferred" Return="ignore" HideTarget="no" Impersonate="no" />
<InstallExecuteSequence>
<Custom Action="DeleteFolders" After="RemoveFiles"><![CDATA[CHECKBOXPROP <> 1]]></Custom>
</InstallExecuteSequence>
Вы не можете изменить выбор компонентов непосредственно в GUI. На данный момент условия уже оценены. Вам нужно будет включить компонент в функцию, а ваши элементы управления добавят и удалят функцию, как описано в этом ответе: Wix 3.5, Установите компоненты на основе флажков.