Compare commits
31 Commits
Author | SHA1 | Date | |
---|---|---|---|
c18b49149f | |||
7016c2e665 | |||
72d228de52 | |||
c31868d320 | |||
8a42245e4f | |||
655d61ea84 | |||
b9561ef60f | |||
461d969f92 | |||
3e35e6fb05 | |||
48465446ec | |||
971bf846ab | |||
8138ebd95c | |||
483d7e2f6f | |||
e7f78e6e39 | |||
622ad63e0a | |||
029f0c1396 | |||
e19a9b5820 | |||
7513a2d2fb | |||
dcb4caacc6 | |||
bb7d96e5e0 | |||
32300d81e4 | |||
cf625f5398 | |||
5cf50a04dd | |||
1dffdbeecd | |||
56ea8c83bc | |||
ad748edc81 | |||
66ae8f4196 | |||
bf1f125da1 | |||
da302a3cd5 | |||
6333ce531d | |||
7585d09f41 |
6
.gitignore
vendored
6
.gitignore
vendored
@ -5,4 +5,8 @@ Clients_IFPass_backup.csv
|
|||||||
IFPass.conf
|
IFPass.conf
|
||||||
Templates/IFPass_PDF_Template.pdf
|
Templates/IFPass_PDF_Template.pdf
|
||||||
Templates/IFPass_PNG_Template.png
|
Templates/IFPass_PNG_Template.png
|
||||||
build
|
build/x86/*
|
||||||
|
build/x64/*
|
||||||
|
# Except builds:
|
||||||
|
!build/x86/*x86.exe
|
||||||
|
!build/x64/*x64.exe
|
||||||
|
@ -23,7 +23,7 @@ from colorama import init
|
|||||||
from termcolor import colored
|
from termcolor import colored
|
||||||
|
|
||||||
|
|
||||||
version = '3.1-1' # dev/devnocam
|
version = '3.2' # dev/devnocam
|
||||||
|
|
||||||
configdir = os.path.join(os.getenv('PROGRAMDATA'), 'IFPass')
|
configdir = os.path.join(os.getenv('PROGRAMDATA'), 'IFPass')
|
||||||
config = os.path.join(configdir, 'IFPass.conf')
|
config = os.path.join(configdir, 'IFPass.conf')
|
||||||
|
189
Installer_Template.nsi
Normal file
189
Installer_Template.nsi
Normal file
@ -0,0 +1,189 @@
|
|||||||
|
!define PRODUCT_NAME "[[ib.appname]]"
|
||||||
|
!define PRODUCT_VERSION "[[ib.version]]"
|
||||||
|
!define PY_VERSION "[[ib.py_version]]"
|
||||||
|
!define PY_MAJOR_VERSION "[[ib.py_major_version]]"
|
||||||
|
!define BITNESS "[[ib.py_bitness]]"
|
||||||
|
!define ARCH_TAG "[[arch_tag]]"
|
||||||
|
!define INSTALLER_NAME "[[ib.installer_name]]"
|
||||||
|
!define PRODUCT_ICON "[[icon]]"
|
||||||
|
|
||||||
|
; Marker file to tell the uninstaller that it's a user installation
|
||||||
|
!define USER_INSTALL_MARKER _user_install_marker
|
||||||
|
|
||||||
|
Unicode true
|
||||||
|
InstallDir "C:\IFPass"
|
||||||
|
|
||||||
|
SetCompressor lzma
|
||||||
|
|
||||||
|
[% block modernui %]
|
||||||
|
; Modern UI installer stuff
|
||||||
|
!include "MUI2.nsh"
|
||||||
|
!define MUI_ABORTWARNING
|
||||||
|
!define MUI_ICON "[[icon]]"
|
||||||
|
!define MUI_UNICON "[[icon]]"
|
||||||
|
|
||||||
|
; UI pages
|
||||||
|
[% block ui_pages %]
|
||||||
|
!insertmacro MUI_PAGE_WELCOME
|
||||||
|
[% if license_file %]
|
||||||
|
!insertmacro MUI_PAGE_LICENSE [[license_file]]
|
||||||
|
[% endif %]
|
||||||
|
!insertmacro MUI_PAGE_INSTFILES
|
||||||
|
!insertmacro MUI_PAGE_FINISH
|
||||||
|
[% endblock ui_pages %]
|
||||||
|
!insertmacro MUI_LANGUAGE "French"
|
||||||
|
[% endblock modernui %]
|
||||||
|
|
||||||
|
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
|
||||||
|
OutFile "${INSTALLER_NAME}"
|
||||||
|
ShowInstDetails show
|
||||||
|
|
||||||
|
Section -SETTINGS
|
||||||
|
SetOutPath "$INSTDIR"
|
||||||
|
SetOverwrite ifnewer
|
||||||
|
SectionEnd
|
||||||
|
|
||||||
|
[% block sections %]
|
||||||
|
|
||||||
|
Section "!${PRODUCT_NAME}" sec_app
|
||||||
|
SetRegView [[ib.py_bitness]]
|
||||||
|
SetShellVarContext all
|
||||||
|
SectionIn RO
|
||||||
|
File ${PRODUCT_ICON}
|
||||||
|
SetOutPath "$INSTDIR\pkgs"
|
||||||
|
File /r "pkgs\*.*"
|
||||||
|
SetOutPath "$INSTDIR"
|
||||||
|
|
||||||
|
[% block install_files %]
|
||||||
|
; Install files
|
||||||
|
[% for destination, group in grouped_files %]
|
||||||
|
SetOutPath "[[destination]]"
|
||||||
|
[% for file in group %]
|
||||||
|
File "[[ file ]]"
|
||||||
|
[% endfor %]
|
||||||
|
[% endfor %]
|
||||||
|
|
||||||
|
; Install directories
|
||||||
|
[% for dir, destination in ib.install_dirs %]
|
||||||
|
SetOutPath "[[ pjoin(destination, dir) ]]"
|
||||||
|
File /r "[[dir]]\*.*"
|
||||||
|
[% endfor %]
|
||||||
|
[% endblock install_files %]
|
||||||
|
|
||||||
|
[% block install_shortcuts %]
|
||||||
|
; Install shortcuts
|
||||||
|
; The output path becomes the working directory for shortcuts
|
||||||
|
SetOutPath "$INSTDIR"
|
||||||
|
[% if single_shortcut %]
|
||||||
|
[% for scname, sc in ib.shortcuts.items() %]
|
||||||
|
CreateShortCut "$SMPROGRAMS\[[scname]].lnk" "[[sc['target'] ]]" \
|
||||||
|
'[[ sc['parameters'] ]]' "$INSTDIR\[[ sc['icon'] ]]"
|
||||||
|
CreateShortCut "$DESKTOP\[[scname]].lnk" "[[sc['target'] ]]" \
|
||||||
|
'[[ sc['parameters'] ]]' "$INSTDIR\[[ sc['icon'] ]]"
|
||||||
|
[% endfor %]
|
||||||
|
[% else %]
|
||||||
|
[# Multiple shortcuts: create a directory for them #]
|
||||||
|
CreateDirectory "$SMPROGRAMS\${PRODUCT_NAME}"
|
||||||
|
[% for scname, sc in ib.shortcuts.items() %]
|
||||||
|
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\[[scname]].lnk" "[[sc['target'] ]]" \
|
||||||
|
'[[ sc['parameters'] ]]' "$INSTDIR\[[ sc['icon'] ]]"
|
||||||
|
[% endfor %]
|
||||||
|
[% endif %]
|
||||||
|
SetOutPath "$INSTDIR"
|
||||||
|
[% endblock install_shortcuts %]
|
||||||
|
|
||||||
|
[% block install_commands %]
|
||||||
|
[% if has_commands %]
|
||||||
|
DetailPrint "Setting up command-line launchers..."
|
||||||
|
nsExec::ExecToLog '[[ python ]] -Es "$INSTDIR\_assemble_launchers.py" "$INSTDIR\bin"'
|
||||||
|
[% endif %]
|
||||||
|
[% endblock install_commands %]
|
||||||
|
|
||||||
|
; Byte-compile Python files.
|
||||||
|
DetailPrint "Byte-compiling Python modules..."
|
||||||
|
nsExec::ExecToLog '[[ python ]] -m compileall -q "$INSTDIR\pkgs"'
|
||||||
|
WriteUninstaller $INSTDIR\uninstall.exe
|
||||||
|
; Add ourselves to Add/remove programs
|
||||||
|
WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" \
|
||||||
|
"DisplayName" "${PRODUCT_NAME}"
|
||||||
|
WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" \
|
||||||
|
"UninstallString" '"$INSTDIR\uninstall.exe"'
|
||||||
|
WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" \
|
||||||
|
"InstallLocation" "$INSTDIR"
|
||||||
|
WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" \
|
||||||
|
"DisplayIcon" "$INSTDIR\${PRODUCT_ICON}"
|
||||||
|
[% if ib.publisher is not none %]
|
||||||
|
WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" \
|
||||||
|
"Publisher" "[[ib.publisher]]"
|
||||||
|
[% endif %]
|
||||||
|
WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" \
|
||||||
|
"DisplayVersion" "${PRODUCT_VERSION}"
|
||||||
|
WriteRegDWORD SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" \
|
||||||
|
"NoModify" 1
|
||||||
|
WriteRegDWORD SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" \
|
||||||
|
"NoRepair" 1
|
||||||
|
|
||||||
|
; Check if we need to reboot
|
||||||
|
IfRebootFlag 0 noreboot
|
||||||
|
MessageBox MB_YESNO "A reboot is required to finish the installation. Do you wish to reboot now?" \
|
||||||
|
/SD IDNO IDNO noreboot
|
||||||
|
Reboot
|
||||||
|
noreboot:
|
||||||
|
SectionEnd
|
||||||
|
|
||||||
|
Section "Uninstall"
|
||||||
|
SetRegView [[ib.py_bitness]]
|
||||||
|
SetShellVarContext all
|
||||||
|
|
||||||
|
Delete $INSTDIR\uninstall.exe
|
||||||
|
Delete "$INSTDIR\${PRODUCT_ICON}"
|
||||||
|
RMDir /r "$INSTDIR\pkgs"
|
||||||
|
|
||||||
|
; Remove ourselves from %PATH%
|
||||||
|
[% block uninstall_commands %]
|
||||||
|
[% if has_commands %]
|
||||||
|
nsExec::ExecToLog '[[ python ]] -Es "$INSTDIR\_system_path.py" remove "$INSTDIR\bin"'
|
||||||
|
[% endif %]
|
||||||
|
[% endblock uninstall_commands %]
|
||||||
|
|
||||||
|
[% block uninstall_files %]
|
||||||
|
; Uninstall files
|
||||||
|
[% for file, destination in ib.install_files %]
|
||||||
|
Delete "[[pjoin(destination, file)]]"
|
||||||
|
[% endfor %]
|
||||||
|
; Uninstall directories
|
||||||
|
[% for dir, destination in ib.install_dirs %]
|
||||||
|
RMDir /r "[[pjoin(destination, dir)]]"
|
||||||
|
[% endfor %]
|
||||||
|
[% endblock uninstall_files %]
|
||||||
|
|
||||||
|
[% block uninstall_shortcuts %]
|
||||||
|
; Uninstall shortcuts
|
||||||
|
[% if single_shortcut %]
|
||||||
|
[% for scname in ib.shortcuts %]
|
||||||
|
Delete "$SMPROGRAMS\[[scname]].lnk"
|
||||||
|
Delete "$DESKTOP\[[scname]].lnk"
|
||||||
|
[% endfor %]
|
||||||
|
[% else %]
|
||||||
|
RMDir /r "$SMPROGRAMS\${PRODUCT_NAME}"
|
||||||
|
[% endif %]
|
||||||
|
[% endblock uninstall_shortcuts %]
|
||||||
|
RMDir $INSTDIR
|
||||||
|
DeleteRegKey SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
|
||||||
|
SectionEnd
|
||||||
|
|
||||||
|
[% endblock sections %]
|
||||||
|
|
||||||
|
; Functions
|
||||||
|
|
||||||
|
Function .onMouseOverSection
|
||||||
|
; Find which section the mouse is over, and set the corresponding description.
|
||||||
|
FindWindow $R0 "#32770" "" $HWNDPARENT
|
||||||
|
GetDlgItem $R0 $R0 1043 ; description item (must be added to the UI)
|
||||||
|
|
||||||
|
[% block mouseover_messages %]
|
||||||
|
StrCmp $0 ${sec_app} "" +2
|
||||||
|
SendMessage $R0 ${WM_SETTEXT} 0 "STR:${PRODUCT_NAME}"
|
||||||
|
|
||||||
|
[% endblock mouseover_messages %]
|
||||||
|
FunctionEnd
|
10
README.md
10
README.md
@ -1,4 +1,12 @@
|
|||||||
# IFPass
|
# IFPass
|
||||||
|
|
||||||
IFPass is a python project developped for the "Institut Français en Hongrie" and published under MIT license.
|
IFPass is a python project developped for the "Institut Français en Hongrie" and published under [MIT license](https://framagit.org/SecT0uch/IFPass/blob/master/LICENSE).
|
||||||
It allows to manage a subscriber database and print member cards.
|
It allows to manage a subscriber database and print member cards.
|
||||||
|
|
||||||
|
## Build
|
||||||
|
|
||||||
|
1. Install [NSIS](http://nsis.sourceforge.net/Download).
|
||||||
|
2. Install python 3 and pip.
|
||||||
|
3. Install the modules with `sudo -H pip install pynsist PyPDF2 termcolor`
|
||||||
|
4. If pynsist version < 2.4, replace `/usr/lib/python3.*/site-packages/nsist/__init__.py` with https://raw.githubusercontent.com/takluyver/pynsist/master/nsist/__init__.py
|
||||||
|
5. Run `./build.sh`
|
||||||
|
3
build.sh
Normal file
3
build.sh
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
#!/usr/bin/bash
|
||||||
|
pynsist installer-x86.cfg
|
||||||
|
pynsist installer-x64.cfg
|
BIN
build/x64/IFPass_3.2-x64.exe
Normal file
BIN
build/x64/IFPass_3.2-x64.exe
Normal file
Binary file not shown.
BIN
build/x86/IFPass_3.2-x86.exe
Normal file
BIN
build/x86/IFPass_3.2-x86.exe
Normal file
Binary file not shown.
59
installer-x64.cfg
Normal file
59
installer-x64.cfg
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
[Application]
|
||||||
|
name=IFPass
|
||||||
|
version=3.2
|
||||||
|
entry_point=IFPass:main
|
||||||
|
icon=IF.ico
|
||||||
|
console=true
|
||||||
|
license_file=LICENSE
|
||||||
|
|
||||||
|
[Python]
|
||||||
|
version=3.7.3
|
||||||
|
bitness=64
|
||||||
|
|
||||||
|
[Include]
|
||||||
|
# Packages from PyPI that your application requires, one per line
|
||||||
|
# These must have wheels on PyPI:
|
||||||
|
# https://pypi.org/project/code128/
|
||||||
|
# https://pypi.org/project/colorama/
|
||||||
|
# https://pypi.org/project/pyfiglet/
|
||||||
|
# https://pypi.org/project/numpy/
|
||||||
|
# https://pypi.org/project/opencv-python/
|
||||||
|
# https://pypi.org/project/Pillow/
|
||||||
|
# https://pypi.org/project/pywin32/
|
||||||
|
# https://pypi.org/project/six/
|
||||||
|
# https://pypi.org/project/setuptools/
|
||||||
|
# https://pypi.org/project/PyMuPDF/
|
||||||
|
# https://pypi.org/project/pywinauto/
|
||||||
|
|
||||||
|
pypi_wheels=code128==0.3
|
||||||
|
colorama==0.4.1
|
||||||
|
pyfiglet==0.8.post1
|
||||||
|
numpy==1.16.4
|
||||||
|
opencv-python==4.1.0.25
|
||||||
|
Pillow==6.0.0
|
||||||
|
pywin32==224
|
||||||
|
six==1.12.0
|
||||||
|
setuptools==41.0.1
|
||||||
|
PyMuPDF==1.14.16
|
||||||
|
pywinauto==0.6.6
|
||||||
|
|
||||||
|
# Must check if future updates of the following packages provide .whl files
|
||||||
|
# Packages without wheels (Must be installed locally):
|
||||||
|
packages=PyPDF2
|
||||||
|
termcolor
|
||||||
|
|
||||||
|
# Other files and folders that should be installed
|
||||||
|
files = LICENSE
|
||||||
|
Templates
|
||||||
|
|
||||||
|
# This optional section adds a command which can be run from the Windows
|
||||||
|
# command prompt.
|
||||||
|
[Command IFPass]
|
||||||
|
entry_point=IFPass:main
|
||||||
|
|
||||||
|
[Build]
|
||||||
|
directory=build/x64
|
||||||
|
installer_name=${PRODUCT_NAME}_${PRODUCT_VERSION}-x64.exe
|
||||||
|
# Custom Installer :
|
||||||
|
# Added Desktop shortcut, modified working directory, modified default install and utf-8...
|
||||||
|
nsi_template=Installer_Template.nsi
|
59
installer-x86.cfg
Normal file
59
installer-x86.cfg
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
[Application]
|
||||||
|
name=IFPass
|
||||||
|
version=3.2
|
||||||
|
entry_point=IFPass:main
|
||||||
|
icon=IF.ico
|
||||||
|
console=true
|
||||||
|
license_file=LICENSE
|
||||||
|
|
||||||
|
[Python]
|
||||||
|
version=3.7.3
|
||||||
|
bitness=32
|
||||||
|
|
||||||
|
[Include]
|
||||||
|
# Packages from PyPI that your application requires, one per line
|
||||||
|
# These must have wheels on PyPI:
|
||||||
|
# https://pypi.org/project/code128/
|
||||||
|
# https://pypi.org/project/colorama/
|
||||||
|
# https://pypi.org/project/pyfiglet/
|
||||||
|
# https://pypi.org/project/numpy/
|
||||||
|
# https://pypi.org/project/opencv-python/
|
||||||
|
# https://pypi.org/project/Pillow/
|
||||||
|
# https://pypi.org/project/pywin32/
|
||||||
|
# https://pypi.org/project/six/
|
||||||
|
# https://pypi.org/project/setuptools/
|
||||||
|
# https://pypi.org/project/PyMuPDF/
|
||||||
|
# https://pypi.org/project/pywinauto/
|
||||||
|
|
||||||
|
pypi_wheels=code128==0.3
|
||||||
|
colorama==0.4.1
|
||||||
|
pyfiglet==0.8.post1
|
||||||
|
numpy==1.16.4
|
||||||
|
opencv-python==4.1.0.25
|
||||||
|
Pillow==6.0.0
|
||||||
|
pywin32==224
|
||||||
|
six==1.12.0
|
||||||
|
setuptools==41.0.1
|
||||||
|
PyMuPDF==1.14.16
|
||||||
|
pywinauto==0.6.6
|
||||||
|
|
||||||
|
# Must check if future updates of the following packages provide .whl files
|
||||||
|
# Packages without wheels (Must be installed locally):
|
||||||
|
packages=PyPDF2
|
||||||
|
termcolor
|
||||||
|
|
||||||
|
# Other files and folders that should be installed
|
||||||
|
files = LICENSE
|
||||||
|
Templates
|
||||||
|
|
||||||
|
# This optional section adds a command which can be run from the Windows
|
||||||
|
# command prompt.
|
||||||
|
[Command IFPass]
|
||||||
|
entry_point=IFPass:main
|
||||||
|
|
||||||
|
[Build]
|
||||||
|
directory=build/x86
|
||||||
|
installer_name=${PRODUCT_NAME}_${PRODUCT_VERSION}-x86.exe
|
||||||
|
# Custom Installer :
|
||||||
|
# Added Desktop shortcut, modified working directory, modified default install and utf-8...
|
||||||
|
nsi_template=Installer_Template.nsi
|
Loading…
Reference in New Issue
Block a user