Miluji programy, které nemusím instalovat (a které mohu kdykoliv smazat).
Delphi je pro takové programy ideální, protože programy v něm napsané v podstatě nemusí mít žádné závislosti. Ale jsou situace, zvláště při komplikovanějších programech, kdy je pro korektní funkci vhodné provést instalaci např. protože potřebujete pro zápis někam administrátorské práva.
Existuje více nástrojů na vytvoření instalace, namátkou InstallAware (očesaná verze je součástí instalace Delphi), InstallShield (podle mne složitá a přeceňovaná klasika), NSIS (Nullsoft Scriptable Install System) (OSS, bohužel poslední verze je z roku 2009) a pak samozřejmě Inno Setup.
Je to už dávno co jsem potřeboval napsat první instalátor. Zkusil jsem tehdy InstallShield a nikdy více (sám mu od té doby říkám zkomoleninou). A pak jsem narazil na InnoSetup a během 5minut vytvořil potřebnou instalaci. A to rozhodlo.
InnoSetup disponuje wizardem, který pro jednodušší instalace stačí. Výsledkem jeho práce je prostý textový soubor, který můžete dále editovat, přidávat funkce, přidat skript pro složitější operace, volat externí DLL (např. v Delphi) pro extra složité operace atd. Samozřejmě můžete wizarda vynechat :-) a napsat pravidla přímo.
Z dalších vlastnosti: samozřejmě unistall, uživatelská konfigurace instalace, zápis do registrů a ini, vytváření zástupců, podpora pro 64bit Windows, lokalizace, single exe instalace, integrovaný pascal pro složitější skripty a je free. A mnozí další efektové.
Jak jsem psal, tak velmi významné je možnost volat vaše DLL v Delphi a výsledek následně zpracovat ve skriptu Inno setupu. To prakticky posouvá limity použití. Samozřejmě, takový InstallAware má prima podporu pro web instalaci (což každý, kdo instaloval Delphi posledních verzí pochopil, jelikož instalátor Delphi je vytvořen právě v InstallAware], ale poměrem cena/výkon u mne Inno setup zvítězil.
Např. povolení firewall pro váš program sender.exe
[Run]
Filename: "{sys}\netsh.exe"; Parameters: "firewall add allowedprogram "
"{app}\sender.EXE"" ""sender"" ENABLE ALL"; StatusMsg: "Enable firewall…";
Flags: runhidden; MinVersion: 0,5.01.2600sp2;
nebo zápis do registru a vytvoření ikony.
[Registry]
Root: HKCR; Subkey: "TestPrg"; ValueType: string; ValueName: ""; ValueData: "hodnota"; Flags: uninsdeletekey
[Icons]
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
Odkaz na ukázku volání DLL byl uveden na začátku.
Mnoho ukázek je na v helpu nebo ve Inno Setup Knowledge Base, nebo často pomůže google, jelikož Inno setup je opravdu populární.