2010-02-07 10 views

Trả lời

7

này nên làm việc:

Wizardform.NextButton.Enabled := False; 

Để biết thêm thông tin kiểm tra các nhóm tin InnoSetup:
http://www.jrsoftware.org/newsgroups.php

+0

Tôi đã kiểm tra - nó không hoạt động. – Sasha

+0

Bạn đang sử dụng loại sự kiện nào? CurPageChanged? – Zyphrax

+0

điều này sẽ hoạt động. bạn sử dụng mã này ở đâu? –

0

Xin lỗi vì không thể giúp trực tiếp vấn đề cụ thể của bạn. Tôi muốn chỉ ra rằng mặc dù Inno Setup dường như không được dựa trên Windows Installer, mà có lẽ sẽ đảm bảo rằng các chương trình của bạn không thể vượt qua các yêu cầu của Windows Logo.

Tôi khuyên bạn nên xem WiX 3, là trình tạo trình cài đặt nguồn mở trực tiếp từ Microsoft, với sự hỗ trợ tuyệt vời từ nhiều người sử dụng và cho phép bạn dễ dàng tạo các gói Windows Installer thông thường. Vô hiệu hóa nút Tiếp theo dễ dàng bằng Wix.

+0

Cảm ơn. Tôi sẽ thử nó trong dự án tiếp theo của tôi ... – Sasha

+0

(Giả sử) yêu cầu MSI đã bị loại bỏ – Anders

+0

Xin lỗi, người đàn ông "bỏ" là gì? – Sasha

4

Tôi đoán bạn đã tìm thấy một workaround bởi bây giờ. Vì tôi đã có cùng một vấn đề và tìm ra giải pháp, tôi đăng nó ở đây với hy vọng giúp đỡ người khác.

Tôi muốn tắt nút CANCEL sau khi người dùng bắt đầu nâng cấp ứng dụng. Sử dụng thủ tục này:

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

Ngoài ra một cách khác để tự làm điều này là:

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

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

Một cách khác là sử dụng này [Setup] chỉ thị:

[Setup] 
AllowCancelDuringInstall=yes 

này là rất hữu ích cho các kịch bản đơn giản; bạn có thể sử dụng nó thay vì các thủ tục trên.

+1

Tôi muốn nói rằng buộc 'WizardForm' để tự sơn lại (dòng' WizardForm.Update') là không cần thiết, và mặc dù bạn đã trả lời cách vô hiệu hóa nút Hủy, tôi sẽ cho bạn upvote của mình. – TLama

+0

vâng, bạn có thể đúng; nó chỉ là ** quá mức cần thiết **! Đôi khi tôi chỉ sử dụng ** nhấn đúp ** để chắc chắn! Java Swing repaint() vẫn ám ảnh tôi, tôi đoán ... Tuy nhiên, nếu bạn muốn sử dụng điều này bên ngoài 'CurPageChanged()', bạn phải 'WizardForm.Update;' hoặc người nào khác nút sẽ không làm mới. – fubar

Các vấn đề liên quan