mirror of
https://github.com/arsenetar/dupeguru.git
synced 2024-11-16 20:29:02 +00:00
Andrew Senetar
8cd0ef4c2b
* Update run.py & .gitignore for windows - Update run.py to execute on windows as SIGQUIT is not available. - Update .gitignore to ignore the generate .pyd files Ref #300, #393 * Update package.py for windows Add package_windows back into package.py - Using cx_freeze for freezing installation - Will be using nsis for actual installer Tested with python 3.5 64bit on windows 10 Ref #393 * Update makefile for windows (+2 misc) - Update the makefile to support windows - Use different bin path in virtualenv - Use pyd instead of so files - Tested with Msys2 - Add *.exe to .gitignore - Fix minor format error in package.py Ref #393 * Add requirements-windows Add the requirements-windows.txt - contains cx-Freeze for bundling Ref #393 * Add initial setup.nsi Initial Version of a NSIS installer script - Multi-user install (install for just one or all) - Registers uninstaller (more values need to finish up) - Tested both single and all install / uninstall and works - Still need to add parameters instead of hardcoded values in some spots - Need to clean up vendor folders / keys if empty on uninstall - Need to add the other dupeGuru languages to the language list - Minor cleanup of script needed as well Ref #393 * Update setup.nsi Updates to setup.nsi including: - Defines from CLI - Version information (MAJOR, MINOR, PATCH) - Bits (64 / 32) - SourcePath (if we wanted something other than build) - Added extra defines to move application specifics to one location - Added extra defines for uninstall information - Added calculation of install size - Added switching between 64 and 32 bit contexts (need to verify functionality) - Updated output file naming - Added NSIS supported languages which are also supported by dupeGuru - Added rest of registry keys for uninstall information - Added missing registry key for installType - Added removeing Vendor folder and registry key if empty on uninstall Should be very close to having this installer script ready to integrate into the package.py script if desired. Ref #393 * Update README & requirements-windows Minor update to README to indicate windows is supported. Add PyQt5 to requirements-windows.txt to make installation easier. * Update packaging for windows - Update package.py to integrate NSIS for windows - Update makefile to deal with a few additional windows issues - Add Windows.md to contain specific windows instructions, if we want this can be merged with README.md - Minor formatting update to setup.nsi Ref #393 * Update README & Windows Instructions - Update the README to include a reference to the Windows instructions. - Add some additional notes into Windows Instructions and remove one incorrect command. - Update .gitignore to ignore all permutations of env* to allow for multiple side by side virtual environments (used to build different versions for windows) Ref: #393 * Update Window.md Fix broken python link and move nsis link for consistency. * More Details in Windows.md Update Windows.md including: - Information on compilier requirements for windows - Notes about the windows 10 sdk - Some clarification around some of the steps - Addition of msys2 links Going to review this a bit more to polish it up. Ref #393.
82 lines
2.5 KiB
Python
82 lines
2.5 KiB
Python
#!/usr/bin/python3
|
|
# Copyright 2017 Virgil Dupras
|
|
#
|
|
# This software is licensed under the "GPLv3" License as described in the "LICENSE" file,
|
|
# which should be included with this package. The terms are also available at
|
|
# http://www.gnu.org/licenses/gpl-3.0.html
|
|
|
|
import sys
|
|
import os.path as op
|
|
import gc
|
|
|
|
from PyQt5.QtCore import QCoreApplication, QSettings
|
|
from PyQt5.QtGui import QIcon, QPixmap
|
|
from PyQt5.QtWidgets import QApplication
|
|
|
|
from hscommon.trans import install_gettext_trans_under_qt
|
|
from qtlib.error_report_dialog import install_excepthook
|
|
from qtlib.util import setupQtLogging
|
|
from qt import dg_rc
|
|
from qt.platform import BASE_PATH
|
|
from core import __version__, __appname__
|
|
|
|
# SIGQUIT is not defined on Windows
|
|
if sys.platform == 'win32':
|
|
from signal import signal, SIGINT, SIGTERM
|
|
SIGQUIT = SIGTERM
|
|
else:
|
|
from signal import signal, SIGINT, SIGTERM, SIGQUIT
|
|
|
|
global dgapp
|
|
dgapp = None
|
|
|
|
def signalHandler(sig, frame):
|
|
global dgapp
|
|
if dgapp is None:
|
|
return
|
|
if sig in (SIGINT, SIGTERM, SIGQUIT):
|
|
dgapp.SIGTERM.emit()
|
|
|
|
def setUpSignals():
|
|
signal(SIGINT, signalHandler)
|
|
signal(SIGTERM, signalHandler)
|
|
signal(SIGQUIT, signalHandler)
|
|
|
|
def main():
|
|
app = QApplication(sys.argv)
|
|
QCoreApplication.setOrganizationName('Hardcoded Software')
|
|
QCoreApplication.setApplicationName(__appname__)
|
|
QCoreApplication.setApplicationVersion(__version__)
|
|
setupQtLogging()
|
|
settings = QSettings()
|
|
lang = settings.value('Language')
|
|
locale_folder = op.join(BASE_PATH, 'locale')
|
|
install_gettext_trans_under_qt(locale_folder, lang)
|
|
# Handle OS signals
|
|
setUpSignals()
|
|
# Let the Python interpreter runs every 500ms to handle signals. This is
|
|
# required because Python cannot handle signals while the Qt event loop is
|
|
# running.
|
|
from PyQt5.QtCore import QTimer
|
|
timer = QTimer()
|
|
timer.start(500)
|
|
timer.timeout.connect(lambda: None)
|
|
# Many strings are translated at import time, so this is why we only import after the translator
|
|
# has been installed
|
|
from qt.app import DupeGuru
|
|
app.setWindowIcon(QIcon(QPixmap(":/{0}".format(DupeGuru.LOGO_NAME))))
|
|
global dgapp
|
|
dgapp = DupeGuru()
|
|
install_excepthook('https://github.com/hsoft/dupeguru/issues')
|
|
result = app.exec()
|
|
# I was getting weird crashes when quitting under Windows, and manually deleting main app
|
|
# references with gc.collect() in between seems to fix the problem.
|
|
del dgapp
|
|
gc.collect()
|
|
del app
|
|
gc.collect()
|
|
return result
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main())
|