At first I solved the problem by doing this:
<CustomAction Id="DbInstallerExec"
Directory="SETUPFOLDER"
Impersonate="yes"
Execute="deferred"
ExeCommand='"[SETUPFOLDER]DBInstaller.exe"
[DB_SERVER] [DB_DATABASE]
[PPME_BASE_DATA_FOLDER] [%TEMP]
[SETUPFOLDER] ImportData SqlScripts'
Return="check" />
Having the Directory attribute appeared to at least getting the executable to launch, it then failed to perform certain actions and still returned an error code. To resolve that issue I changed Impersonate to "yes".
My second improved attempt was the following:
(this allows the console app to launch hidden from view which seems a bit more professional)
For some reason WixQuietExec (with SetProperty) wouldn't work for me but CAQuietExec did work:
<CustomAction Id="DbInstallerExec_Cmd"
Property="DbInstallerExec"
Value='"[SETUPFOLDER]DBInstaller.exe"
[DB_SERVER] [DB_DATABASE] [PPME_BASE_DATA_FOLDER]
[%TEMP] [SETUPFOLDER] ImportData SqlScripts' />
<CustomAction Id="DbInstallerExec"
BinaryKey="WixCA"
DllEntry="CAQuietExec"
Execute="deferred"
Impersonate="yes"
Return="check" />
<InstallExecuteSequence> ...
<Custom Action="DbInstallerExec_Cmd" Before="DbInstallerExec">
UPGRADINGPRODUCTCODE OR (NOT REMOVE = "ALL")
</Custom>
<Custom Action="DbInstallerExec" Before="InstallFinalize">
UPGRADINGPRODUCTCODE OR (NOT REMOVE = "ALL")
</Custom>
</InstallExecuteSequence> ...