I have create a wix bootstrapper which contains 2 msi (A and B) by using Wix 3.8 version and installed into the client machine.
Then I have update the B.msi version to 1.0.0.1 or 1.0.1.0 (because some dlls being updated) and only launch the B.msi install into the same client machine also.
However, when I try to uninstall the wix bootstrapper, it able to uninstall A.msi but the B.msi still at there because it being upgraded.
A WiX bundle installs a package manager. (The engine is called "burn".) The package manager tracks which bundles need which versions of which packages. It seems you've updated MSI B to a version above what the bundle needs. So, when uninstalling the bundle, burn finds that B is needed by more that just that bundle so it leaves it.
The immediate solution is to uninstall B yourself.
The long-term solution is to always install A and B with burn. If you update A or B, build an updated bundle. If A or B is needed for another reason, build a different bundle.