I'm putting a note here mostly for completeness if someone finds the thread later. I found this comment describing where addon .msi files are searched:
/* * Try to find addon .msi file in following order: * - directory stored in $dir_config_key value of HKCU/Software/Wine/$config_key key * - $datadir/$addon_subdir/ * - $INSTALL_DATADIR/wine/$addon_subdir/ * - /usr/share/wine/$addon_subdir/ * - download from URL stored in $url_config_key value of HKCU/Software/Wine/$config_key key */
I think the simplest thing will be to duplicate this logic in mscoree, except that mscoree will not do its own download. Instead of looking for wine-mono-4.8.0.msi in those directories, mscoree will look for a directory named wine-mono-4.8.0. If it doesn't find that directory in any of the above locations, it will fall back on appwiz.cpl, which will still look for a .msi in all of those places, downloading and caching it if necessary, the way it does now.
That should cover everyone's use cases at least as well as the current solution, and it won't require anyone building or packaging wine to change anything. It will be necessary to replace the .msi with a directory (built from the source tarball or extracted from a binary tarball on winehq) if packagers want to take advantage of this work to reduce prefix size.