2010-12-21 13 views
9

डिफ़ॉल्ट रूप से InnoSetup वास्तव में छोटे टेक्स्ट क्षेत्र में लाइसेंस अनुबंध प्रदर्शित करता है जिसे उपयोगकर्ता किसी भी तरह से बड़ा नहीं कर सकता है।InnoSetup इंस्टॉलर में एक बड़ा लाइसेंस बॉक्स कैसे प्रदर्शित करें?

जबकि मुझे पता है कि ज्यादातर लोग इन्हें नहीं पढ़ते हैं, मुझे लगता है कि इसे एक प्रारूप में प्रदान करना जो इसे पढ़ने में विशेष रूप से कठिन बनाता है, एक बुरा विचार है, और अदालत में रक्षा का हिस्सा बन सकता है।

क्या इनोसेटअप में एक बड़ी अलग खिड़की में लाइसेंस प्रदर्शित करने का कोई तरीका है? एक पूर्व लुढ़का पास्कल स्क्रिप्ट शायद?

उत्तर

13

आप विज़ार्डफॉर्म आकार बदल सकते हैं और यदि आप इसे बड़ा बनाना चाहते हैं तो इसमें नियंत्रण को पुनर्व्यवस्थित कर सकते हैं। मैंने आपको यह दिखाने के लिए यह उदाहरण दिया है कि लाइसेंस पेज के लिए फॉर्म ऊंचाई कैसे बदलें।

[Setup] 
AppName=StackOverflow large license box 
AppVersion=1.0 
CreateAppDir=no 
DisableProgramGroupPage=yes 
DefaultGroupName=My Program 
UninstallDisplayIcon={app}\MyProg.exe 
LicenseFile=license.txt 
;OutputDir=userdocs:Inno Setup Examples Output 

[Code] 

var 
    DefaultTop, 
    DefaultLeft, 
    DefaultHeight, 
    DefaultBackTop, 
    DefaultNextTop, 
    DefaultCancelTop, 
    DefaultBevelTop, 
    DefaultOuterHeight: Integer; 

const 
    LicenseHeight = 600; 

procedure InitializeWizard(); 
begin 
    DefaultTop := WizardForm.Top; 
    DefaultLeft := WizardForm.Left; 
    DefaultHeight := WizardForm.Height; 
    DefaultBackTop := WizardForm.BackButton.Top; 
    DefaultNextTop := WizardForm.NextButton.Top; 
    DefaultCancelTop := WizardForm.CancelButton.Top; 
    DefaultBevelTop := WizardForm.Bevel.Top; 
    DefaultOuterHeight := WizardForm.OuterNotebook.Height; 

    WizardForm.InnerPage.Height := WizardForm.InnerPage.Height + (LicenseHeight - DefaultHeight); 
    WizardForm.InnerNotebook.Height := WizardForm.InnerNotebook.Height + (LicenseHeight - DefaultHeight); 
    WizardForm.LicensePage.Height := WizardForm.LicensePage.Height + (LicenseHeight - DefaultHeight); 
    WizardForm.LicenseMemo.Height := WizardForm.LicenseMemo.Height + (LicenseHeight - DefaultHeight); 
    WizardForm.LicenseNotAcceptedRadio.Top := WizardForm.LicenseNotAcceptedRadio.Top + (LicenseHeight - DefaultHeight); 
    WizardForm.LicenseAcceptedRadio.Top := WizardForm.LicenseAcceptedRadio.Top + (LicenseHeight - DefaultHeight); 

end; 

procedure CurPageChanged(CurPageID: Integer); 
begin 
    if CurPageID = wpLicense then 
    begin 
    WizardForm.Top := DefaultTop - (LicenseHeight - DefaultHeight) div 2; 
    WizardForm.Height := LicenseHeight; 
    WizardForm.OuterNotebook.Height := WizardForm.OuterNotebook.Height + (LicenseHeight - DefaultHeight); 
    WizardForm.CancelButton.Top := DefaultCancelTop + (LicenseHeight - DefaultHeight); 
    WizardForm.NextButton.Top := DefaultNextTop + (LicenseHeight - DefaultHeight); 
    WizardForm.BackButton.Top := DefaultBackTop + (LicenseHeight - DefaultHeight); 
    WizardForm.Bevel.Top := DefaultBevelTop + (LicenseHeight - DefaultHeight); 
    end 
    else 
    begin 
    WizardForm.Top := DefaultTop; 
    WizardForm.Left := DefaultLeft; 
    WizardForm.Height := DefaultHeight; 
    WizardForm.OuterNotebook.Height := DefaultOuterHeight; 
    WizardForm.CancelButton.Top := DefaultCancelTop; 
    WizardForm.NextButton.Top := DefaultNextTop; 
    WizardForm.BackButton.Top := DefaultBackTop; 
    WizardForm.Bevel.Top := DefaultBevelTop; 
    end; 
end; 

इसे एक नई जारी फ़ाइल में कॉपी करें और सफलतापूर्वक संकलित करने के लिए एक वैध लाइसेंस.txt फ़ाइल प्रदान करें। लिपि का परीक्षण inno 5.4.0 के साथ किया जाता है लेकिन इसे किसी भी 5.x के साथ काम करना चाहिए।

+0

बस यह उल्लेख करना चाहता था कि हमने अंत में इसका उपयोग नहीं किया। समस्या यह है कि यदि उपयोगकर्ता इंस्टॉलर को ले जाता है (कहें, एक अलग मॉनीटर पर), यह कोड इसे डिफ़ॉल्ट स्थिति में रीसेट करता है। जो काफी परेशान है। मैं इसे स्वीकार कर दूंगा क्योंकि यह एकमात्र उत्तर है जो प्रश्न को संबोधित करता है, लेकिन मैंने वर्डपैड बटन कोड को एक अलग उत्तर के रूप में भी पोस्ट किया है। –

0

यदि आप इनो की तुलना में लाइसेंसफाइल निर्देश का उपयोग करते हैं तो सादे पाठ या आरटीएफ फ़ाइल की अपेक्षा करता है। यदि आप एक आरटीएफ फ़ाइल प्रदान करते हैं तो आप फ़ॉन्ट और अन्य सरल स्वरूपण (बोल्ड, इटालिक इत्यादि) को अपनी इच्छानुसार सेट कर सकते हैं।

+0

क्षमा करें, इससे मदद नहीं मिलती है। मेरे पास एक आरटीएफ फ़ाइल है जिसे मैं एक बड़े बॉक्स में प्रदर्शित करना चाहता हूं। –

4

लाइसेंस बॉक्स का आकार बदलना बहुत अच्छा काम नहीं करता है, इसलिए इसके बजाय हमने वर्डपैड में लाइसेंस देखने के लिए एक बटन प्रदान करना समाप्त कर दिया। यह आश्चर्यजनक रूप से अच्छी तरह से काम करता है; मैं इसे अंत में पसंद आया। कोड:

procedure ViewLicenseButtonClick(Sender: TObject); 
var WordpadLoc: String; 
    RetCode: Integer; 
begin 
    RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WORDPAD.EXE', '', WordpadLoc); 

    // on NT/2000 it's a REG_EXPAND_SZ, so expand constant ProgramFiles 
    StringChange(WordpadLoc, '%ProgramFiles%', ExpandConstant('{pf}')); 
    // remove " at begin and end pf string 
    StringChange(WordpadLoc, '"', ''); 

    try 
    ExtractTemporaryFile('LicenseAgreement.rtf') 
    except 
    MsgBox('Cannot extract license file.', mbError, mb_Ok); 
    end; 

    if not Exec(WordpadLoc, '"' + ExpandConstant('{tmp}\LicenseAgreement.rtf') + '"', '', SW_SHOW, ewNoWait, RetCode) then 
    MsgBox('Cannot display license file.', mbError, mb_Ok); 
end; 

procedure CurPageChanged(CurPageID: Integer); 
var ViewLicenseButton: TButton; 
begin 
    if CurPageID = wpLicense then begin 
    ViewLicenseButton := TButton.Create(WizardForm.LicenseMemo.Parent); 
    ViewLicenseButton.Caption := '&View in WordPad'; 
    ViewLicenseButton.Width := 120; 
    ViewLicenseButton.Left := WizardForm.LicenseMemo.Left + 
         WizardForm.LicenseMemo.Width - ViewLicenseButton.Width; 
    ViewLicenseButton.Top := WizardForm.LicenseMemo.Top + 
         WizardForm.LicenseMemo.Height + 16; 
    ViewLicenseButton.OnClick := @ViewLicenseButtonClick; 
    ViewLicenseButton.Parent := WizardForm.LicenseAcceptedRadio.Parent; 
    end; 
end; 
+0

यदि आप शैलएक्सैक का उपयोग करते हैं तो यह आपके लिए ऐप पथ देखेगा, या आप इसे आरटीएफ को सिर्फ पीए दे सकते हैं और यह डिफ़ॉल्ट एप्लिकेशन में खुल जाएगा ... – Anders

+0

@ एंडर्स को पूर्व के बारे में पता नहीं था; बाद के लिए - मैं नहीं चाहता कि एमएस वर्ड खोलने के लिए कहां स्थापित किया जाए; जो बहुत लंबा लगता है। –

+1

एक और तरीका एक नई विंडो बनाने के लिए हो सकता है ([CreateCustomForm'] (http://www.jrsoftware.org/ishelp/index.php?topic=isxfunc_createcustomform) फ़ंक्शन का उपयोग करके) और इस फ़ॉर्म पर ['TRichEditViewer' ] (http://www.jrsoftware.org/ishelp/topic_scriptclasses.htm#TRichEditViewer) रेडियो बटन स्वीकार/अस्वीकार करने के साथ नियंत्रण और इस विंडो को सामान्य रूप से दिखाएं। – TLama

संबंधित मुद्दे