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

  1. Prvně budeme potřebovat binární soubor 7zsd.sfx (originálně z [7zsfx]).
  2. 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.
  3. Nyní důležitý bod – konfigurační soubor config.txt.
  4. Volitelně dávkový soubor, či program. V ukázkách budu používat run.bat.
  5. Nakonec „7z” archiv, budu používat setup.7z. Pozor: run.bat musí být součástí archivu!

Návod

  1. Upravíme 7zsd.sfx dle potřeb, viz např. 7zip - How to set file properties 7zS.sfx self extracting executable.
  2. Připravíme si archiv setup.7z včetně run.bat
  3. 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
  4. 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

Reference a alternativy

  1. [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.
  2. [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.
  3. [NSIS] Opensourse projekt pro tvorbu instalačních souborů
  4. [sfx] sfx (Self Extracting Archive)
  5. [sfxbuilder] 7z SFX Builder – Grafické rozhraní pro postup zmíněný ve článku