With a custom Bootstrapper Application DLL (BA), you can set a Burn variable by getting the path to the process's entry module. Then in your Bundle, define the burn variable, and pass it to the Windows Installer package as a property. Use the property in your setup project.
To set up a custom BA project, it is far easier to create a .NET project [tutorial].
<Variable
Name="BootstrapperDirectory"
Persisted="yes"
Type="string"
bal:Overridable="yes"
Value='BootstrapperDirectory not set. Try passing it on the
command line like "BootstrapperDirectory=%cd%"
or writing a custom BA to set it programmatically.
It must also be declared with bal:Overridable="yes".' />
<Chain>
<MsiPackage SourceFile="$(var.SetupProject1.TargetPath)" DisplayInternalUI="yes">
<MsiProperty Name="BOOTSTRAPPERDIR" Value="[BootstrapperDirectory]" />
</MsiPackage>
</Chain>