* Removed modules we don't seem to use any more.
* Went through *all* the imports (including 'from X import Y') and
checked every module was one of: builtin, stock in win32 python
3.7.7 or a known dependency of another we do list.
* As we still have the sqlite3.dll hack in setup.py I've only
specified: +py2exe>=0.9.3.2
* certifi==2019.9.11 to work around py2exe issues the current latest
* keyring==19.2.0 to work around py2exe issues the current latest
This still needs testing to see if it's enough to setup an
only-just-installed Python-32 of 3.7.7
Where it was in EDMarketConnector.py caused issues because then the
main thread was blocking on the popup when other threads expected it to
be running:
---------------------------------------------------------------------
Exception in thread Journal worker:
Traceback (most recent call last):
File "C:\Users\Athan\AppData\Local\Programs\Python\Python37-32\lib\threading.py", line 926, in _bootstrap_inner
self.run()
File "C:\Users\Athan\AppData\Local\Programs\Python\Python37-32\lib\threading.py", line 870, in run
self._target(*self._args, **self._kwargs)
File "C:\Users\Athan\Documents\Devel\EDMarketConnector-python3\monitor.py", line 273, in worker
self.root.event_generate('<<JournalEvent>>', when="tail")
File "C:\Users\Athan\AppData\Local\Programs\Python\Python37-32\lib\tkinter\__init__.py", line 1673, in event_generate
self.tk.call(args)
RuntimeError: main thread is not in main loop
---------------------------------------------------------------------
However *now* it pops up before the main UI is running properly at all,
so the EDMC window is likely out of position, and won't be
painted/themed yet.
This is deemed acceptable for a 'once a day at most' popup.
The popup title now has 'EDMC: ' at the start to be sure users know
what it's talking about.
It also has some brief advice about how to disable a plugin.
To allow users to sort out their plugins before EDMC itself moves to
Python 3.x warn them if any of their enabled, non-stock, plugins do not
have a plugin_start3() method.
* If any are found without support there's a popup triggered at the
end of AppWindow initialisation.
* Then the user can check Settings > Plugins to see a list of the
plugins without Python 3.x support.
*) There's a bug in py2exe meaning sqlite3.dll doesn't get pulled in
by listing it in packages. So we fudge it, assuming it's in
<sys.base_prefix>/DLLs/sqlite3.dll (which is the case for Python 3.2
32-bit on Windows).
Bug report filed:
<https://github.com/albertosottile/py2exe/issues/23>
*) Adds sqlite3.dll back into .wxs file
I'd only removed this due to accidentally using "zipfile=None" in the
setup.py previously. So of course I had no library.zip and took it out
of .wxs to suppress file not found errors.
But without this python won't find the necessary files.
1) Those with specific GUIDs only have them for historical reasons.
2) They need to keep the same GUID, else the installer will be
unhappy.
3) New files should use "*" for a path-based GUID.