User Tools

Site Tools


proj:wininstallers

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
proj:wininstallers [2020/06/04 22:12]
114.23.208.115 [Binary dependencies]
proj:wininstallers [2021/01/13 16:24] (current)
114.23.208.115 [Make NSIS installer]
Line 28: Line 28:
   * Change the version at the top of In D:​\sofa_dev_win\packaging\1 sofastats.nsi:​   * Change the version at the top of In D:​\sofa_dev_win\packaging\1 sofastats.nsi:​
  
-  !define SOFA_VERSION "1.5.3"+  !define SOFA_VERSION "1.5.4"
  
   * In D:​\sofa_dev_win\packaging right click on  "1 sofastats.nsi"​ and "​compile NSIS script"​ then click on "Test Installer"​ button.   * In D:​\sofa_dev_win\packaging right click on  "1 sofastats.nsi"​ and "​compile NSIS script"​ then click on "Test Installer"​ button.
Line 46: Line 46:
  
   * **sofastatistics** (actually, don't make it directly - instead, add it when cloning the git repo). This is the code. Can make changes here to get SOFA working on Windows and push the changes up into origin. Update this folder then copy across contents to sofa4packaging/​sofastats to keep the version to be packaged up-to-date   * **sofastatistics** (actually, don't make it directly - instead, add it when cloning the git repo). This is the code. Can make changes here to get SOFA working on Windows and push the changes up into origin. Update this folder then copy across contents to sofa4packaging/​sofastats to keep the version to be packaged up-to-date
-  * **dependencies** - binaries such as wkhtmltopdf.exe and specific dependencies of those binaries e.g. delegates.xml (needed by convert.exe) +  * **dependencies** - binaries such as wkhtmltopdf.exe and specific dependencies of those binaries e.g. delegates.xml (needed by convert.exe). You'll find them under sofa_win/​sofa_dev_win/​dependencies on the Ubuntu dev machine. Keep the Ubuntu dev machine versions up-to-date with what is used on the Windows machine when developing there and running SOFA unpackaged. 
-  * **packaging** - put all the files managing the actual building of packages e.g. spec files, nsi files etc. +  * **packaging** - put all the files managing the actual building of packages e.g. spec files, nsi files etc. You'll find them under sofa_win/​sofa_dev_win/​packaging on the Ubuntu dev machine
-  * **sofa4packaging** - put contents of sofastatistics ​under the packaging/​sofastats ​folder and add launch.py, import2run.py,​ and sofastats.spec as well from /packaging. Leave behind __pycache__,​ app.fil and sofastats.pot. +  * **sofa4packaging** - put contents of sofastatistics folder and add launch.py, import2run.py,​ and sofastats.spec as well from /packaging. Leave behind __pycache__,​ app.fil and sofastats.pot. 
-  * **store** - put junk here to avoid polluting / over-complicating other folders+  * **store** - put junk here to avoid polluting / over-complicating other folders
  
 ==== Python and dependencies installed ==== ==== Python and dependencies installed ====
  
-Set up prerequisites for running SOFA working on Windows at all - install Python 3.(https://​www.python.org/​downloads/​) ​and all required pip and system dependencies (perhaps PostgreSQL). See list of dependencies further down. Allow Python ​to be set in PATHNo need to specify full path to python exe every time.+Set up prerequisites for running SOFA working on Windows at all - install ​latest version of Python ​3 e.g. 3.(https://​www.python.org/​downloads/​). Allow Python to be set in PATH so don't need to specify full path to python exe every time. Allow to be installed for all users. Also install ​all required pip and system dependencies (perhaps PostgreSQL). See list of dependencies further down under "Set launch.py dependency imports"​. Note pip install Pillow not PIL; matplotlib not pylab; pywin32 ​to enable associated imports (and https://​github.com/​KBNLresearch/​iromlab/​issues/​100) etc. Have to translate from import requirements ​to module requirements. Usually straight forward.
  
 Target pip installations at the python you will be building against (possibly only one). No need to be admin for pip installations unless Python was installed as admin. Target pip installations at the python you will be building against (possibly only one). No need to be admin for pip installations unless Python was installed as admin.
Line 59: Line 59:
 If installed locally you might find Python somewhere like: If installed locally you might find Python somewhere like:
  
-C:​\Users\Giles\AppData\Local\Programs\Python\Python37-32+C:​\Users\Giles ​Paton-Simpson\AppData\Roaming\Python\Python39
  
 Run Run
Line 69: Line 69:
   python -m pip install requests   python -m pip install requests
  
-Re: PostgreSQL: use weak password for throw-away PG 11 installation on Win 10.+Re: PostgreSQL: use weak password for throw-away PG latest (e.g. 13) installation on Win 10.
  
 ==== Binary dependencies ==== ==== Binary dependencies ====
 +
 +Put copies of every dependency under D:​\sofa_dev_win\dependencies and also D:​\sofa_dev_win\packaging\sofastats
  
 === wkhtmltopdf (for HTML to PDF) === === wkhtmltopdf (for HTML to PDF) ===
  
-wkhtmltopdf.exe - download installer from https://​wkhtmltopdf.org/​downloads.html then go to installed location e.g. C:\Program Files\wkhtmltopdf and put copy in D:​\sofa_dev_win\store and under D:​\sofa_dev_win\packaging\sofastats+wkhtmltopdf.exe - download installer from https://​wkhtmltopdf.org/​downloads.html then go to installed location e.g. C:\Program Files\wkhtmltopdf and put copy in D:​\sofa_dev_win\store and under D:​\sofa_dev_win\sofa4packaging\sofastats
  
 === convert (for PDF to PNG) === === convert (for PDF to PNG) ===
  
-convert.exe - install the PORTABLE version of Imagemagick ​(ticking the legacy components part or else no convert.exe for you!) - e.g. ImageMagick-7.0.8-67-portable-Q16-x64.zip.+convert.exe - unzip / install the PORTABLE version of Imagemagick e.g. ImageMagick-7.0.10-47-portable-Q16-x64.zip ​into D:​\sofa_dev_win\store\imagemagickNaming convention explained below:
  
   Versions with Q8 in the name are 8 bits-per-pixel component (e.g. 8-bit red, 8-bit green, etc.),   Versions with Q8 in the name are 8 bits-per-pixel component (e.g. 8-bit red, 8-bit green, etc.),
Line 108: Line 110:
 Install git and git bash etc - https://​gitforwindows.org Install git and git bash etc - https://​gitforwindows.org
  
-Generate SSH key using Git Bash GUI+Generate SSH key using Git GUI (Git Bash). Use passphrase "​matilda loves linux better"​ (also in keepass2). Use OpenSSH-generated key made for Windows machine. Don't try to reuse Linux one - bad practice.
  
-Change remote as required so has ssh in it.+Change ​git remote as required so has SSH in it. id_rsa.pub is somewhere like C:​\Users\Giles Paton-Simpson\.ssh. Log into launchpad (launchpad@p-s.co.nz using pwd from keepass2) and add additional SSH key.
  
-Use OpenSSH-generated ​key made for Windows ​machineDon'​t ​try to reuse Linux one - bad practice.+Extras if paint self in corner with SSH key: https://​stackoverflow.com/​questions/​50918607/​remove-cached-password-for-git-on-windows Reinstalling won't solve it. You will have to update it in your Credential Manager. I.e. go to Control Panel > User Accounts > Credential Manager > Windows ​CredentialsYou will see Git credentials in the list (e.g. git:​https://​...). Click on it, update the password, and execute git pull/push command from your Git bash and it it won'​t ​throw any error message.
  
-Extras if paint self in corner with SSH key:+Then get latest SOFA code using git within Git Cmd:
  
-https://​stackoverflow.com/​questions/​50918607/​remove-cached-password-for-git-on-windows +  D
- +  cd sofa_dev_win
-Reinstalling won't solve it. You will have to update it in your Credential Manager. +
- +
-Go to Control Panel > User Accounts > Credential Manager > Windows Credentials. +
- +
-You will see Git credentials in the list (e.g. git:​https://​...). +
- +
-Click on it, update the password, and execute git pull/push command from your Git bash and it it won't throw any error message. +
- +
-  cd D:\sofa_dev_win+
   git clone https://​git.launchpad.net/​sofastatistics   git clone https://​git.launchpad.net/​sofastatistics
  
Line 132: Line 125:
  
   cd "​D:​\sofa_dev_win\sofastatistics\sofastats"​   cd "​D:​\sofa_dev_win\sofastatistics\sofastats"​
-  python start.py+  python ​-m start 
 +  
 +Note - SOFA puts parent path into sys.path so we start in the same folder as start.py
  
 Iron out inevitable bugs. Iron out inevitable bugs.
Line 150: Line 145:
 ==== Set launch.py dependency imports ==== ==== Set launch.py dependency imports ====
  
-Run special script ​<specify properly here> ​to identify actual dependencies so they can be called by launch.py+Run special script ​sofa_dev_win/​packaging/​import_dependencies.py ​to identify actual dependencies so they can be called by launch.py
  
   #import CUBRID-Python ## 2014 Python 2 only   #import CUBRID-Python ## 2014 Python 2 only
Line 162: Line 157:
   import psycopg2   import psycopg2
   import pylab  ## part of matplotlib   import pylab  ## part of matplotlib
 +  import pyodbc
   import pymysql   import pymysql
   import requests   import requests
Line 192: Line 188:
 Otherwise errors like: ModuleNotFoundError:​ No module named '​wx.lib.agw.hypertreelist'​ Otherwise errors like: ModuleNotFoundError:​ No module named '​wx.lib.agw.hypertreelist'​
  
-==== Identify Windows C Runtime (CRT) dependency path ====+==== Identify Windows C Runtime (CRT) dependency path (nothing to install) ​====
  
 This dependency is required if using Python >= 3.5 and Windows systems < Windows 10. I.e. it is required. This dependency is required if using Python >= 3.5 and Windows systems < Windows 10. I.e. it is required.
Line 209: Line 205:
  
 ==== Run pyinstaller for full run (making spec and using) ==== ==== Run pyinstaller for full run (making spec and using) ====
 +
 +Note - sofa_win_dev/​sofa4packaging/​sofastats must contain latest code plus dependencies plus launch.py, import2run.py,​ and sofastats.spec as well from /packaging. Leave behind pycache, app.fil and sofastats.pot.
  
 Note - usually people only use the --onedir option to start with for debugging reasons and the --onefile option later. Note - usually people only use the --onedir option to start with for debugging reasons and the --onefile option later.
Line 274: Line 272:
   pyinstaller sofastats.spec   pyinstaller sofastats.spec
  
-Shift all D:​\sofa_dev_win\sofa4packaging\sofastats\ in (except for __pycache__build, or dist)Folder already named sofastats ​because of spec edits. +Note - sofa_win_dev/​sofa4packaging/sofastats ​must contain latest code plus dependencies plus launch.pyimport2run.py, and sofastats.spec as well from /packaging. Leave behind pycache, app.fil and sofastats.pot.
 ==== Test binary and SOFA code folders on clean machine ==== ==== Test binary and SOFA code folders on clean machine ====
  
Line 283: Line 280:
 ==== Make NSIS installer ==== ==== Make NSIS installer ====
  
-Use UltraModernUI+Install NSIS https://​nsis.sourceforge.io/​Download
  
-Get latest version from [[https://​sourceforge.net/​projects/​ultramodernui/​files/​UltraModernUI/​]]+Use UltraModernUI - get latest version from [[https://​sourceforge.net/​projects/​ultramodernui/​files/​UltraModernUI/​]]
  
 Note - don't need to specify every file - can just use the recursive syntax Note - don't need to specify every file - can just use the recursive syntax
proj/wininstallers.1591323143.txt.gz · Last modified: 2020/06/04 22:12 by 114.23.208.115