[[oktatas:programozás:python|< Python]]
====== Python program telepítő ======
* **Szerző:** Sallai András
* Copyright (c) 2020, Sallai András
* Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC BY-SA 4.0]]
* Web: https://szit.hu
===== Telepítő =====
A felhasználók általában nem értenek parancssorhoz,
mi is szeretnénk, ha egy egyszerű telepítő vagy
másolás megoldaná a programunk használatbavételét.
A telepítőkészítést két lépésben fogjuk megoldani.
* Egyetlen csomagba szervezés
* Telepítő készítése
Először egyetlen csomagba szervezzük a programot, úgy, hogy Python futtató se kelljen hozzá.
Ezt a [[https://pyinstaller.readthedocs.io/en/stable/index.html|PyInstaller]] modullal fogjuk
elvégezni.
Telepítőt, amely indítómenübe, vagy asztalra kitesz egy indító ikont,
az [[https://jrsoftware.org/isinfo.php|Inno Setup]] segítségével fogjuk
elvégezni.
===== PyInstaller =====
Windowson is rendszergazdaként
Telepítsük a pyinstaller-t:
pip install pyinstaller
vagy:
pip3 install pyinstaller
A legegyszerűbb eset, ha van egy futtatható Python program:
programom.py
pyinstaller programom.py
Létrejön egy dist nevű könyvtár, amelyben megtaláljuk a futtatható programot.
Ha **egyetlen fájlban** szeretnénk az egész programot:
pyinstaller --onefile programom.py
Ha program több fájlra van szétszedve, esetleg több könytárra,
akkor is, csak az indító fájlt kell megjelölni a parancsban.
projekt01/
|-controllers/
| `-Controller.py
|-views/
| `-MainWindow.py
`-App.py
pyinstaller --onefile App.py
==== Konzol nélkül ====
Ha konzolos ablak nélkül szeretnénk indítani a Python programot,
például grafikus felület esetén:
pyinstaller --onefile --windowed programom.py
Vagy:
pyinstaller --onefile --noconsole programom.py
==== Linuxon Windowsra ====
* https://github.com/cdrx/docker-pyinstaller
===== Inno Setup =====
Készítsük el az Inno Setup konfigurációs állományt:
[Setup]
AppName=Programnev
AppVersion=1.0
DefaultDirName={autopf}\Programnev
OutputBaseFilename=ProgramnevSetup
LicenseFile=licenc.txt
[Files]
Source: program.exe; DestDir: "{app}"
* LicenseFile
* A licenc fájl neve és elérési útvonala
* A fájl kódolása iso-8859-2 legyen
Windowson ezt lehet az Inno Setup varázslójával, vagy
egy szövegszerkesztővel.
Ezt követően Windowson Inno Setup-al fordítsuk le a
az elkészült konfigurációs fájl.
Linuxon, használhatjuk mondjuk egy docker konténert a fordításhoz:
docker run --rm -i -v "$PWD:/work" amake/innosetup program.iss
==== Fordítás ====
{{:oktatas:programozas:python:inno_setup.png|}}
==== Minden is ====
#define MyAppName "Első"
#define MyAppExeName "elso.exe"
[Setup]
AppName=elso
AppVersion=1.0
DefaultDirName={autopf}\Elso
OutputBaseFilename=ElsoSetup
LicenseFile=licenc.txt
InfoBeforeFile=olvasd.txt
DefaultGroupName={#MyAppName}
[Files]
Source: dist\elso.exe; DestDir: "{app}"
[Tasks]
; Asztali ikon
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
[Run]
; Telepítés után futtatás
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
[Icons]
; Startmenü
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
===== Lásd még =====
* https://pyinstaller.readthedocs.io/en/stable/index.html (2020)
* https://winpython.github.io/ (2020)
* https://pypi.org/project/setuptools/ (2020)
* https://www.pythonforthelab.com/blog/how-create-setup-file-your-project/ (2020)