1
0
mirror of https://github.com/arsenetar/dupeguru.git synced 2024-11-14 11:39:03 +00:00
dupeguru/Windows.md

58 lines
3.1 KiB
Markdown
Raw Normal View History

Initial Update of Windows Packaging (#438) * 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.
2017-08-28 23:27:17 +00:00
## How to build dupeGuru for Windows
### Prerequisites
- [Python 3.5+][python]
- [Visual Studio 2017][vs] or [Visual Studio Build Tools 2017][vsBuildTools] with the Windows 10 SDK
- [nsis][nsis] (for installer creation)
- [msys2][msys2] (for using makefile method)
When installing Visual Studio or the Visual Studio Build Tools with the Windows 10 SDK on versions of Windows below 10 be sure to make sure that the Universal CRT is installed before installing Visual studio as noted in the [Windows 10 SDK Notes][win10sdk] and found at [KB2999226][KB2999226].
After installing python it is recommended to update setuptools before compiling packages. To update run (example is for python launcher and 3.7):
Initial Update of Windows Packaging (#438) * 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.
2017-08-28 23:27:17 +00:00
$ py -3.7 -m pip install --upgrade setuptools
Initial Update of Windows Packaging (#438) * 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.
2017-08-28 23:27:17 +00:00
More details on setting up python for compiling packages on windows can be found on the [python wiki][pythonWindowsCompilers]
### With build.py (preferred)
To build with a different python version 3.5 vs 3.7 or 32 bit vs 64 bit specify that version instead of -3.7 to the `py` command below. If you want to build additional versions while keeping all virtual environments setup use a different location for each vritual environment.
Initial Update of Windows Packaging (#438) * 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.
2017-08-28 23:27:17 +00:00
$ cd <dupeGuru directory>
$ py -3.7 -m venv .\env
Initial Update of Windows Packaging (#438) * 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.
2017-08-28 23:27:17 +00:00
$ .\env\Scripts\activate
$ pip install -r requirements.txt -r requirements-windows.txt
$ python build.py
$ python run.py
### With makefile
It is possible to build dupeGuru with the makefile on windows using a compatable POSIX environment. The following steps have been tested using [msys2][msys2]. Before running make:
1. Install msys2 or other POSIX environment
2. Install PyQt5 globally via pip
3. Use the respective console for msys2 it is `msys2 msys`
Then the following execution of the makefile should work. Pass the correct value for PYTHON to the makefile if not on the path as python3.
$ cd <dupeGuru directory>
$ make PYTHON='py -3.7'
Initial Update of Windows Packaging (#438) * 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.
2017-08-28 23:27:17 +00:00
$ make run
NOTE: Install PyQt5 & cx-Freeze with requirements-windows.txt into the venv before running the packaging scripts in the section below.
Initial Update of Windows Packaging (#438) * 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.
2017-08-28 23:27:17 +00:00
### Generate Windows Installer Packages
You need to use the respective x86 or x64 version of python to build the 32 bit and 64 bit versions. The build scripts will automatically detect the python architecture for you. When using build.py make sure the resulting python works before continuing to package.py. NOTE: package.py looks for the 'makensis' executable in the default location for a 64 bit windows system. Run the following in the respective virtual environment.
$ python package.py
### Running tests
The complete test suite can be run with tox just like on linux.
[python]: http://www.python.org/
[nsis]: http://nsis.sourceforge.net/Main_Page
[vs]: https://www.visualstudio.com/downloads/#visual-studio-community-2017
[vsBuildTools]: https://www.visualstudio.com/downloads/#build-tools-for-visual-studio-2017
[win10sdk]: https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk
[KB2999226]: https://support.microsoft.com/en-us/help/2999226/update-for-universal-c-runtime-in-windows
[pythonWindowsCompilers]: https://wiki.python.org/moin/WindowsCompilers
[msys2]: http://www.msys2.org/