2010-02-07 13 views

Odpowiedz

7

To powinno działać:

Wizardform.NextButton.Enabled := False; 

Aby uzyskać więcej informacji sprawdź grup dyskusyjnych InnoSetup:
http://www.jrsoftware.org/newsgroups.php

+0

Sprawdziłem - to nie działa. – Sasha

+0

W jakim wydarzeniu go używasz? CurPageChanged? – Zyphrax

+0

powinno to działać. gdzie używasz tego kodu? –

0

Przepraszamy za to, że nie możemy bezpośrednio pomóc w konkretnym problemie. Chciałbym jednak podkreślić, że Inno Setup nie jest oparty na Instalatorze Windows, który prawdopodobnie upewni się, że twoje programy nie mogą przesłać wymagań dotyczących Logo Windows.

Proponuję, abyś spojrzał na WiX 3, który jest twórcą oprogramowania open source bezpośrednio od firmy Microsoft, z doskonałą obsługą wielu osób, które go używają i który pozwala łatwo tworzyć regularne pakiety Instalatora Windows. Wyłączenie przycisku Dalej jest łatwe przy użyciu Wix.

+0

Dzięki. Spróbuję tego w następnym projekcie ... – Sasha

+0

(Podobno) Wymóg MSI został usunięty – Anders

+0

Przepraszam, co to znaczy, że ludzie "odpadli"? – Sasha

4

Chyba znalazłem obejście teraz. Ponieważ miałem ten sam problem i znalazłem rozwiązanie, zamieszczam go tutaj w nadziei, że pomogę innym.

Chciałem wyłączyć przycisk ANULUJ po rozpoczęciu przez użytkownika aktualizacji aplikacji. Zastosowanie tej procedury:

procedure CurPageChanged(CurPageID: Integer); 
begin 
    // always disable the cancel button; no going back now!!! 
    if UpgradeInstallationMode then 
    Wizardform.CancelButton.Enabled := False; 
end; 

również inny sposób ręcznie to robi to:

procedure DisableCancelButton(); 
begin 
    WizardForm.CancelButton.Enabled := False; 
    WizardForm.Update; 
end; 

procedure EnableCancelButton(); 
begin 
    WizardForm.CancelButton.Enabled := True; 
    WizardForm.Update; 
end; 

Innym sposobem byłoby wykorzystanie tej [Setup] dyrektywy:

[Setup] 
AllowCancelDuringInstall=yes 

to bardzo przydatne w prostych scenariuszach; możesz użyć tego zamiast powyższych procedur.

+1

Powiedziałbym, że wymuszenie odświeżenia samego 'WizardForm' (linia' WizardForm.Update') nie jest konieczna, i pomimo tego, że odpowiedziałeś na pytanie, jak wyłączyć przycisk Anuluj, daję ci mój pomysł. – TLama

+0

tak, prawdopodobnie masz rację; to tylko przesada **! Czasem używam ** podwójnego dotknięcia **, aby być pewnym! Java Swing repaint() wciąż mnie prześladuje, tak myślę ... Nadal, jeśli chcesz użyć tego poza 'CurPageChanged()', musisz 'WizardForm.Update;' lub inaczej przycisk nie odświeży się. – fubar

Powiązane problemy