I've written an MSI installer for our apps (which include Kivy and numpy etc.) using the "msilib" module in the Python standard library, so that's possible, but I haven't tried building an executable installer. There aren't many examples of Python installers using MSI, aside from the standard Python distribution itself, However, an earlier version I did for UpLib is at
https://github.com/project-renard-survey/xerox-parc-uplib-mirror/blob/master/win32/build-msi-installer.py. This is the code which builds the MSI installer, and much of it is based on the MSI packaging code for Python itself.
Bill