Vytvoření vlastního instalačního programu ve Windows pomocí dávkového souboru je přístupnější, než se zdá, a s pečlivou metodologií může být velmi robustní. Klíčem je kombinace tichých dávkových skriptů, balení zdrojů a jasné orchestrace. aby se zajistilo, že během instalace nic nezůstane náhodě.
Když mluvíme o „dávkovém instalačním programu“, máme na mysli skript. .bat nebo .cmd (nebo dokonce Bash skripty ve Windows (WSL)), který automatizuje úlohy nasazení: kopírování a rozbalování souborů, volání tichých instalačních programů, zaznamenávání protokolů, vytváření zástupců nebo služeb atd. Cílem je, aby instalace probíhala bez zásahu uživatele a opakovatelným způsobem.
Příprava zdrojů a jejich zabalení v CAB
Než napíšete jediný řádek scénáře, je dobré si materiály uspořádat: shromažďuje všechna aktiva na jednom známém místě a rozhodněte se, zda je odešlete tak, jak jsou, nebo zabalené. Pokud se rozhodnete kopírovat soubory „v surovém stavu“, ujistěte se, že každý soubor má jedinečný název, protože V cíli obvykle přistanou ve stejném dočasném adresáři. a překrývání (install.exe, setup.exe atd.) jsou častá.
Aby se předešlo konfliktům, nejpraktičtější je replikovat struktura složek pro každou aplikaci A pokud si přejete, můžete zdroje „propojit“ jako kompletní hierarchii. Tímto způsobem můžete rozbalit uspořádaný strom na zařízení přesně tak, jak jste ho připravili, a minimalizovat tak zmatek v názvech.
Pokud přepravujete velké množství souborů, jejich zabalení do souboru CAB usnadňuje přepravu a pozdější rozšiřování. Chcete-li to provést, vytvořte soubor DDF (MakeCAB Descriptor) s vašimi direktivami a seznamem souborů nebo složek, které chcete zahrnout. Definujte parametry, jako je výstupní adresář, typ komprese a velikost složkya na konec vložte cesty k souborům, které chcete zabalit.
Balení je generováno pomocí nativního nástroje pro Windows: MakeCABTypické vyvolání může vypadat něco jako makecab -f Ruta\a\tu_archivo.ddfa v zadaném adresáři vytvoří soubor .cab. Nezapomeňte ověřit obsah testem roztažení. v čistém prostředí před jeho integrací do skriptu.
Dávkové skriptování: Instalace a registrace
Zaznamenávání událostí během instalace je zásadní. I když se „engine“ sám nezaznamenává, můžete jej zabudovat do svého skriptu vytvořením souboru protokolu na systémovém disku a přesměrování standardního výstupu a chyb do toho souboru. Něco jako echo a operátor >> udělá zbytek.
Pro instalační techniky . Exe které podporují tichý režim, můžete spustit instalaci s odpovídajícím parametrem (například /S nebo ekvivalent od dodavatele) a vypsat výsledek a návratový kód (%ERRORLEVEL%) do protokolu. Takto budete vědět, zda vše proběhlo dobře, aniž byste potřebovali grafické rozhraní.
S instalatéry . MSI je to použito msiexecObvyklý vzorec je msiexec /i TuInstalador.msi /quiet (o /qn), aby byl splněn požadavek absolutního ticha při spuštění skriptu z balíčku pro zřizování. Zaznamenejte si výstupní kód je stejně doporučeno.
Pokud vaše binární soubory cestují komprimované ve formátu .cab, můžete rozbalte je před instalací s příkazem expand, Například expand -r tus_activos.cab -F:* . extrahuje vše do pracovního adresáře a poté vám umožní spustit odpovídající příkaz. setup.exe nebo podobné bez úplných tras.
Spuštění PowerShellu z dávky s kontextem systému
Některé konfigurační úlohy vyžadují PowerShell a zvýšená oprávnění. V takových případech můžete spustit Skript .ps1 z vašeho souboru .bat pomocí nástrojů jako PsExec k vynucení kontextu systému bez interakce. Cílem je provést něco jako: přijmout smlouvu EULA, spustit cmd.exe /c powershell.exe se scénářem a přesměrovat veškerý výstup do protokolu které jste používali.
Nezapomeňte, že jakýkoli skript zahrnutý v balíčku provisioning musí být naprosto tichýŽádné výzvy, žádná okna, žádné požadavky uživatelů. To platí i pro PowerShell: dobře parametrizujte skripty, ošetřujte chyby a nikdy se nespoléhejte na ruční zadávání.
Orchestrace více skriptů v rámci balíčku
Přestože mechanismus zřizování systému Windows podporuje pouze jeden příkazový řádek na balíčekNic nebrání tomuto příkazu ve spuštění skriptu Orchestrator (.bat), který následně volá další skripty nebo instalační programy. Toto je kanonický způsob, jak instalovat více aplikací nebo provádět předběžné/postupné kroky uspořádaným způsobem.
V konfiguraci balíčku je deklarován příkazový řádek, který spouští orchestrátor, a soubory, které bude používat, jsou uvedeny jako „aktivní“ (samotný soubor .bat, pomocné skripty, instalační programy, .cab atd.). Tímto způsobem se při nasazení balíčku všechny prostředky umístí do stejné dočasné složky. a orchestrátor se na ně může odkazovat bez absolutních cest.
| konfigurace | Příklad hodnoty | Co dělá |
|---|---|---|
| Příkazy pro zřizování/kontext zařízení/příkazový řádek | cmd /c MiOrquestador.bat |
Vyvolá skript Orchestratoru která řídí celé zařízení. |
| Příkazy pro zřizování/kontext zařízení/soubory příkazů | MyOrchestrator.bat | Hlavní skript, který registruje a volá instalační programy a další akce. |
| Příkazy pro zřizování/kontext zařízení/soubory příkazů | Odkazované skripty a binární soubory | Další aktiva: .ps1, .exe, .msi, .cab atd., používané orchestrátorem. |
Zřizování systému Windows: Kde běží a aká jsou jeho omezení
Když přidáte zřizovací balíček při prvním spuštění, skripty se spustí velmi brzy po spuštění, než existuje kontext uživateleTo znamená dvě věci: vše musí běžet tiše a vybraní instalační technici musí tuto ranou fázi systému podporovat.
Soubory deklarované jako CommandFile se kopírují do vyhrazené dočasné složky pro každý balíček. Pro balíčky použité v integrovaném prostředí je obvyklý vzorec něco jako %WINDIR%\system32\config\systemprofile\appdata\local\Temp\ProvisioningPkgTmp\{PackageGuid}\Commands\0. To „0“ označuje pořadí doba provádění (první aplikace) a u následujících se zvyšuje.
Pokud je balíček nainstalován dvojitým kliknutím na již používaný počítač, budou datové zdroje umístěny na dočasná složka uživatele který spustí instalaci: %TMP%\ProvisioningPkgTmp\{PackageGuid}\Commands\0Pracovní adresář při spuštění příkazového řádku bude přesně tato složka, takže můžete použít relativní cesty ve vašich skriptech.
Důležitá omezení pro ProvisioningCommands: Odesílání příkazů do konzole, zobrazování uživatelského rozhraní, dialogů nebo průvodců není povoleno. Pokud skript poruší tato pravidla, může způsobit nedefinované chování. a dokonce znefunkčnit počítač; v tomto případě by jedinou zbývající možností bylo jej obnovit pomocí možností obnovení systému.
Komponenta pro zřizování se pokusí spustit skripty co nejdříve na základě fáze, ve které byl balíček přidán. Pokud byl například přidán během expresní konfigurace, spustí se. ihned po aplikaci balíčku, zatímco kroky pro danou konfiguraci pokračují. Na stávajících systémech nainstalovaných dvojitým kliknutím se nezobrazí žádné oznámení o dokončení zřizování spustitelných souborů.
Spuštění vlastních skriptů po instalaci ovladačů (Visual Studio)
Pokud vyvíjíte ovladače a používáte Visual Studio, můžete spouštět vlastní příkazové skripty po instalaci balíčku ovladačů na testovacím počítači. Toto se konfiguruje ve vlastnostech projektu balíčku.
Postup je jednoduchý: otevřete Vlastnosti projektu Controlleru, přejděte do Konfigurace Controlleru → Nasazení, zaškrtněte „Povolit nasazení“ a vyberte testovací tým. Tam můžete definovat „Vlastní příkazový řádek“ se skriptem, který se má spustit po dokončení instalace.
Kromě toho můžete v části „Další soubory“ přidat samotný skript a jakékoli další instalační materiály, které chcete zkopírovat do vzdáleného počítače. Tyto soubory se zkopírují do %SystemDrive%\drivertest\drivers z testovacího týmu, odkud je můžete vyvolat s relativními cestami.
Je to pohodlný způsob, jak automatizovat kroky po instalaci ovladače: registraci, validaci, kontroly prostředíatd., což šetří čas v každém cyklu sestavení a nasazení během vývoje.
Inno Setup jako alternativa (nebo doplněk) k dávkovému nastavení
Pokud potřebujete kompletní grafický instalační program, Inno Setup je velmi výkonné freewarové řešení, které funguje od Windows 9x až po Windows 10/11 a podporuje... 64bitové instalace a rozsáhlé přizpůsobeníJeho jádrem je skript (.iss), kde definujete metadata, soubory, které chcete zahrnout, akce během instalace a odinstalace, jazyky atd.
Typický skript deklaruje konstanty pomocí #define pro název aplikace, verzi, vydavatele, URL, hlavní spustitelný soubor, název služby, složku vydání a instalační adresář. Také upravuje styl a kompresi průvodce. solidní LZMA, administrátorská oprávnění a aktivujte instalaci v 64bitovém režimu pomocí ArchitecturesInstallIn64BitMode=x64.
Kritickým bodem je ID aplikace (GUID): musí být jedinečný pro každou aplikaci. Vygenerujte nový (nástroj Inno: Nástroje → Generovat GUID). Pokud jej recyklujete mezi různými projekty, instalační program bude s vaší aplikací zacházet, jako by byla stejná a nakonec ho „aktualizuje“, místo aby ho instalovat samostatně.
Pro kopírování aplikace použijete sekci odkazující na publikovanou složku. Je důležité ponechat koncový zástupný znak, například PublishFolder=...\publish\*, aby instalační technik zahrnout všechny soubory a podsložky nezbytné a některé můžete vyloučit (například conf.xml) pokud vám jeho distribuce nevyhovuje.
Inno Setup umožňuje kontrolovat a instalovat závislosti. S příslušnou knihovnou (např. Soubor CodeDependencies.iss) můžete zavolat funkci stylu Dependency_AddDotNet60Desktop bod zkontrolujte nebo nainstalujte .NET 6 DesktopKromě toho můžete připojit netcorecheck_x64.exe k vašemu balíku pro další kontrolu.
Pro služby systému Windows můžete použít %SystemRoot%\System32\sc.exe bod zastavit, smazat, vytvořit a spustit službu během instalace a odinstalace. Typickým postupem je „zastavit a odstranit“ před vytvořením, aby se zabránilo zbytkům z předchozích verzí, a poté spustit službu nově nainstalováno tiše.
Další užitečné podrobnosti: přidat jazyky (např. angličtina, španělština, katalánština, francouzština, portugalština), vytvořit zkratky do programové skupiny a zkompilujte pomocí Build → Compile. Pro ověření instalačního programu otevřete výstupní složku (Build → Open Output Folder) a otestujte tok v virtuální stroj abyste se nedotkli svého hlavního vybavení.
Díky pečlivému designu (přehledné zdroje, volitelné CAB balíčky, tiché spuštění, užitečné protokoly, prozíravá orchestrace a případně instalační program Inno Setup s kontrolou a správou služeb .NET 6) je možné vytvořit solidní a opakovatelný instalační systém s dávkovým řešením, které se přizpůsobí jak rychlému nasazení, tak i komplexním potřebám v prostředí Windows.

