Добавьте определение CustomAction, как указано ниже.Убедитесь, что Return = "ignore", если вы ничего не возвращаете из файла bat.
<CustomAction Id="RunBat" Directory="your_directory"
ExeCommand='"c:\test\test.BAT"'
Execute='deferred' Impersonate='no' Return='ignore'/>
Также в последовательности installExecuteSequence добавьте действие перед InstallFinalize
<InstallExecuteSequence>
<Custom Action="RunBat" Before="InstallFinalize">
NOT (REMOVE~="ALL")
</Custom>
</InstallExecuteSequence>