Samorozbalování pro „7z” archivy a automatické spouštění případného scriptu (programu)
Takový naivní postup, jak vytvořit instalátor – přesněji samorozbalující archiv, který umí zavolat dávkový soubor.
Idea
Použijeme binárku, která počítá s tím, že se k ní „přilepí” archiv. Volba této binárky je klíčová, záleží totiž na ní, co vše lze ve výsledku nastavit/provést.
Pro takovéto použití lze najít Cčkovské programy, stačí googlit „sfx” či „batch file self extracted archive”, …
Důvod – „výhody”/nevýhody
Výhoda spočívá v tom, že tento postup skoro není závislý na programu třetí strany a funguje multiplatformně. Dále jej lze provádět automatizovaně přes skript, příkazovou řádku či terminál.
Nevýhodou je krkolomnost, problémy s anivirovými programy. Dále, jak ukazují reference, většinou jde o již neaktuální/nevyvíjené projekty.
Potřebujeme
- Prvně budeme potřebovat binární soubor
7zsd.sfx
(originálně z [7zsfx]). - Potom se hodí program Resource Hacker, nebo nějaký podobný. S jeho pomocí lze změnit/nastavit vlastnosti výsledného programu/instalátoru. Jako například jméno autora a možnost přidat vlastní ikonku.
- Nyní důležitý bod – konfigurační soubor
config.txt
. -
Volitelně dávkový soubor, či program. V ukázkách budu používat
run.bat
. - Nakonec „7z” archiv, budu používat
setup.7z
. Pozor:run.bat
musí být součástí archivu!
Návod
- Upravíme
7zsd.sfx
dle potřeb, viz např. 7zip - How to set file properties 7zS.sfx self extracting executable. - Připravíme si archiv
setup.7z
včetněrun.bat
- Připravíme si
config.txt
: Zde lze modifikovat některé věci dialogu pro rozbalování (zobrazované texty apod.).- Důležité je uvést
InstallPath
(defaultně se rozbaluje do tempu, ale zdá se, že se promazává poměrně agresivně!!!). Jako cestu lze uvést i jen jméno složky, která se vytvoří v místě samorozbalovacího archivu. Případně by prý měli fungovat i systémové proměnné (např.%appdata%
) –\
je ale potřeba escapovat (tj.\\
). - Pomocí
RunProgram
lze po rozbalení automaticky zavolat uvedený script (program). Pokud tuto funkcionalitu nepotřebujeme, stačí řádek smazat. - Další možnosti, viz 7zsfx.info/en/parameters
- Důležité je uvést
- Porvedeme „sloučení”, tj. binárně zkopírujeme do výsledého souboru
setup.exe
.- Na Windows stačí provést příkaz:
copy /b 7zsd.sfx+config.txt+setup.7z setup.exe
- Mac/Linux:
cat 7zsd.sfx config.txt setup.7z > setup.exe
- Na Windows stačí provést příkaz:
Reference a alternativy
- [7zsfx] Projekt `7zsfx.info` – Ve skutečnosti se jedná o již nevyvíjenou součást balíčku 7-Zip Extra (tedy projektu/programu 7-Zip). Program lze stáhnou z archivu.
- [alternativně] [Tutorial] Making A 7-Zip Switchless Installer – Tento návod jsem našel až po mých (nakonec) úspěšných pokusech. Nezkoušel jsem.
- [NSIS] Opensourse projekt pro tvorbu instalačních souborů
- [sfx] sfx (Self Extracting Archive)
- [sfxbuilder] 7z SFX Builder – Grafické rozhraní pro postup zmíněný ve článku