Jak z Inno Setupu podmíněně spustit jiný instalátor   zodpovězená otázka

Offtopic

Zdravím všechny,

měl bych dotaz ohledně Inno Setupu.

Potřeboval bych, aby při instalaci aplikace měl uživatel možnost dle svého uvážění nainstalovat i jinou aplikaci (např. PDF tiskárnu).

Ideální by bylo, kdyby měl možnost po spuštění instalátoru kromě samotné aplikace zvolit instalaci i této PDF tiskárny a po korektní instalaci aplikace by Inno setup na základě rozhodnutí uživatele spustil i instalátor PDF tiskárny.

Je toto možné nějak ve skriptu nadefinovat? A pokud ano, tak ve kterých sekcích.

Děkuji mnohokrát.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Toto by se mohlo definovat v sekci [Run], která je určená pro spouštění aplikací nebo dokumentů po úspěšném dokončení instalace. Popis položek v sekci [Run] najdete v dokumentaci Inno Setupu.

Z uživatelského hlediska je potom na poslední stránce průvodce instalací zaškrtávací políčko, které určuje, zda bude aplikace (instalátor PDF tiskárny) spuštěna.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Vážený pane Linhart,

děkuji Vám moc za radu. Vyzkoušel jsem a funguje.

Napadá mne, že by ale bylo ideální, kdyby měl uživatel možnost vybrat si možnost instalace PDF tiskárny před zahájením instalace (objevila by se pak i v okně shrnujícím součásti připravené k instalaci). Je toto možné nějakým způsobem vyřešit?

Děkuji mnohokrát.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pokud myslíte aby virtuální tiskárna byla součástí výběru komponent při instalaci tak to by sice šlo, ale bylo by to mnohem složitější, protože by se musel použít PascalScript v sekci [Code], kde by se ve správný okamžik zjistilo, je-li příslušná součást (virtuální tiskárna) zaškrtnuta a v závěrečném kroku instalace pokud by vše ostatní proběhlo v pořádku opět pomocí PascalScriptu by se instalace spustila.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Děkuji Vám za odpověď.

Ano, přesně tak jsem to myslel.

Nevíte prosím, pomocí kterých funnkcí v PascalScruptu by to šlo realizovat? Případně nějaký zdroj, kde by byla podobná tématika nastíněna?

Děkuji mnohokrát.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
[Components]
Name: "PDFPrinter"; Description: "Nástroj pro tisk do formátu PDF"
[Code]
procedure CurStepChanged(CurStep: TSetupStep);
var
  ResultCode: Integer;
begin
  if CurStep = ssPostInstall then
  begin
    if Pos('PDFPrinter', WizardSelectedComponents(False)) > 0 then
    begin
      //PDFPrinter\setup.exe je umístění instalačního programu PDF tiskárny
      //v kořenovém adresáři na instalačním médiu, /s je parametr pro bezobslužnou instalaci.
      if (not Exec(ExpandConstant('{src}\PDFPrinter\setup.exe'), '/s', '', SW_SHOW, ewWaitUntilTerminated, ResultCode)) then
      begin
        MsgBox('Při instalaci nástroje pro tisk do formátu PDF došlo k chybě.%nMůžete se pokusit nainstalovat tuto součást ručně z instalačního média.', mbError, MB_OK);
      end;
    end;
  end;
end;

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Vážený pane Linhart,

mnohokrát Vám děkuji za perfektní řešení. Přesně takto jsem si to představoval.

Jen mě z počátku trochu pozlobila funkce POS, než jsem zjistil, že je zřejmě Case Sensitive a tak jsem si Vámi uvedený řádek, kde se funkce POS volá, dovolil upravit následovně:

if Pos('PDFPRINTER', UpperCase(WizardSelectedComponents(False))) > 0 then
...

Poté již vše pracuje naprosto skvěle.

Ještě jednou Vám moc děkuji, ušetřil jste mi mnoho práce a bádáni.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback