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.
Először egyetlen csomagba szervezzük a programot, úgy, hogy Python futtató se kelljen hozzá. Ezt a PyInstaller modullal fogjuk elvégezni.
Telepítőt, amely indítómenübe, vagy asztalra kitesz egy indító ikont, az Inno Setup segítségével fogjuk elvégezni.
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
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
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}"
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
#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