Я делаю установщик с WiX 3.10. Моя первоначальная задача - скопировать файлы Postgres в целевую систему, инициализировать кластер, зарегистрировать службу, запустить ее и восстановить базу данных при установке, а также в режиме обратного остановки, удалить ее из системы и очистить данные кластера. Я написал два файла bat и добавил пользовательские действия для их выполнения и некоторые условия, описанные в разных местах, но никто из них не работает. Я пробовал с и без CDATA, Installed, INSTALLED и некоторые другие варианты, но он всегда выполняет оба действия.Выполнение пользовательских действий только при установке или удалении
Вот файл wix, с которым я сейчас экспериментирую.
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Name="Hatred_6" Language="1033" Version="1.0.0.0" Manufacturer="Satan" UpgradeCode="d9602b10-8428-4031-8c82-99288b21377f">
<Package InstallerVersion="405" Compressed="yes" InstallScope="perMachine" InstallPrivileges="elevated"/>
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
<MediaTemplate EmbedCab="yes" />
<CustomAction Id="AAction" Directory="INSTALLFOLDER" Execute="deferred" Impersonate="no" Return="check"
ExeCommand="cmd.exe /c "a.bat"">NOT Installed</CustomAction>
<CustomAction Id="BAction" Directory="INSTALLFOLDER" Execute="deferred" Impersonate="no" Return="check"
ExeCommand="cmd.exe /c "b.bat"">Installed</CustomAction>
<InstallExecuteSequence>
<Custom Action="BAction" After="InstallFiles" />
<Custom Action="AAction" After="InstallFiles" />
</InstallExecuteSequence>
<Feature Id="ProductFeature" Title="Hatred_6" Level="1">
<ComponentGroupRef Id="ProductComponents" />
</Feature>
</Product>
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLFOLDER" Name="Hatred_6" />
</Directory>
</Directory>
</Fragment>
<Fragment>
<ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
<Component Id="CalcComponent" Guid="515C0606-FD73-4B5D-ACF4-481123092A3E">
<File Id="CalcFile" KeyPath="yes" Source="calc.exe" />
</Component>
<Component Id="AComponent" Guid="515e3aa0-e5a0-4cd1-aaa5-ebf25a679a24">
<File Id="AFile" KeyPath="yes" Source="a.bat" />
</Component>
<Component Id="BComponent" Guid="85f7627e-fc39-4f78-a870-221d2d08375d">
<File Id="BFile" KeyPath="yes" Source="b.bat" />
</Component>
</ComponentGroup>
</Fragment>
</Wix>
летучих файлы содержат каталог> a.txt и реж> b.txt, так что я могу видеть, если они на самом деле выполнены. Это несколько расстраивает, я что-то не понимаю?
Я бы предложил использовать подробный журнал, а не 'dir> a.txt', чтобы определить, выполняется ли пользовательское действие. –
Мне нужны оба файла bat для создания побочных эффектов, и я ничего не нашел в подробном журнале, который может объяснить, как оцениваются условия действия. – Encarmine