2015-12-17 11 views
8

इस सवाल का समान:
How to set the progress bar value in the [Run] section of the Inno Setup install script?इनो सेटअप: रन सेक्शन पर प्रोग्रेस बार में हेरफेर कैसे करें?

Inno सेटअप [Run] अनुभाग के लिए हो जाता है जब, प्रगति बार 100% पर पता चलता है और इस स्थिति में बंद हो जाता है।

मेरे पास इस Run अनुभाग में स्थापित कई फ़ाइलें हैं, जिन्हें मैं प्रगति पट्टी को पुनरारंभ करना और इसे नियंत्रित करना चाहता हूं, क्योंकि यह प्रत्येक प्रोग्राम को स्थापित करता है।

स्थिति संदेश बदलना आसान है (StatusMsg), लेकिन प्रगति मुझे कुछ याद आ रही है। क्या आप लोग मेरी मदद कर सकते हैं, कृपया?

उदाहरण:

[Run] 
Filename: "msiexec.exe"; Parameters: "/i ""msxml.msi"" /quiet"; \ 
    StatusMsg: "MSXML..."; Flags: runascurrentuser 
Filename: "msiexec.exe"; Parameters: "/i ""capicom_dc_sdk.msi"" /quiet"; \ 
    StatusMsg: "CAPICOM..."; Flags: runascurrentuser 

मैं दौरान यह स्थापना है प्रगति बार नियंत्रित करना चाहते हैं के बाद से, मैं क्या करना है पता नहीं है। मैंने शायद BeforeInstall पैरामीटर का उपयोग करके सोचा, WizardForm.ProgressGauge.Position = 0; और AfterInstall पैरामीटर में में, WizardForm.ProgressGauge.Position = 100;, लेकिन इंस्टॉलेशन के दौरान कैसे बदला जाए, प्रगति पट्टी को 0 पर सेट करने के लिए एक कोड बनाना।

धन्यवाद।

+0

तुम भी कैसे जानते हैं कि कैसे उप स्थापना पेश करने के लिए है कि अपने मुख्य संस्थापक में, चल रहा है होगा? –

+0

मुझे डेल्फी के बारे में बहुत कुछ पता नहीं है, लेकिन विंडोज़ में कुछ एपीआई है जो प्रक्रिया निष्पादित होने पर लौटाती है। विचार यह जांचना था कि प्रक्रिया सक्रिय है या नहीं, प्रक्रिया समाप्त होने तक प्रगति करें। फिर फिर शून्य पर जाएं और अगले में शुरू करें। लेकिन यदि यह संभव नहीं है, तो मैं शुरुआत में कुछ सिमुलेशन आज़माउंगा, शून्य पर जाउंगा, और प्रत्येक प्रक्रिया के बाद, प्रत्येक में 10% की तरह थोड़ा ऊपर जाएं। – KurayamiArai

+0

* "प्रक्रिया समाप्त होने तक प्रगति करें" * लेकिन आपको नहीं पता कि प्रक्रिया कब खत्म होगी, तो आप किस प्रतिशत को दिखाने के लिए गणना करते हैं? –

उत्तर

10

प्रगति पट्टी को अपडेट करना मुश्किल होगा, जबकि दूसरी प्रक्रिया चल रही है।

मुझे इसका प्रयास करने का एक बिंदु नहीं दिख रहा है, क्योंकि आप उप-इंस्टॉलर की प्रगति को बताने में असमर्थ हैं, इसलिए आपको पता नहीं चलेगा कि प्रगति पट्टी को अपडेट करना है।

विशेष मामलों के अलावा, जब उप-इंस्टॉलर अपनी प्रगति की रिपोर्ट करने के लिए एक एपीआई प्रदान करता है।
एक उदाहरण के लिए देखें:


उप संस्थापक समाप्त की संख्या के अनुसार प्रगति बार अद्यतन करने के लिए, आप कर सकते हैं:

[Run] 
FileName: "process1"; BeforeInstall: UpdateProgress(0); AfterInstall: UpdateProgress(33) 
FileName: "process2"; AfterInstall: UpdateProgress(66) 
FileName: "process3"; AfterInstall: UpdateProgress(100) 

[Code] 

procedure UpdateProgress(Position: Integer); 
begin 
    WizardForm.ProgressGauge.Position := Position * WizardForm.ProgressGauge.Max div 100; 
end; 

करने के लिए फ़ाइलों और बाकी स्थापित करने के लिए प्रगति दायरे के भीतर विभाजित करने के लिए उप-संस्थापक चल रहा है, यह देखने
Inno Setup - Prevent extraction of files from setting progress bar to 100%


एक और विकल्प "मार्की" (= अनंत) प्रगति बार शैली का उपयोग करना है।

Progress bar control styles देखें।

[Run] 
FileName: "process1"; BeforeInstall: SetMarqueeProgress(True) 
FileName: "process2" 
FileName: "process3"; AfterInstall: SetMarqueeProgress(False) 

[Code] 

procedure SetMarqueeProgress(Marquee: Boolean); 
begin 
    if Marquee then 
    begin 
    WizardForm.ProgressGauge.Style := npbstMarquee; 
    end 
    else 
    begin 
    WizardForm.ProgressGauge.Style := npbstNormal; 
    end; 
end; 

enter image description here

, यहां तक ​​कि Windows XP पर काम करता है अब और आधिकारिक माइक्रोसॉफ्ट दस्तावेज में सूचीबद्ध नहीं होने के बावजूद। विंडोज एक्सपी एसपी 3 पर परीक्षण किया गया।

enter image description here

+0

पहला ऐसा था जो मैंने किया था। दूसरा एक अच्छा विकल्प है। बहुत बहुत धन्यवाद। – KurayamiArai

+0

मैंने देखा कि यह केवल विंडोज 6 पर और उसके बाद काम करता है? क्या आप विंडोज संस्करण की जांच करने के लिए inno सेटअप में एक आसान तरीका जानते हैं, इसलिए XP की तरह विंडोज़, जो संस्करण 6 से नीचे है, त्रुटि नहीं देगा? – KurayamiArai

+0

Windows XP शायद सूचीबद्ध नहीं है क्योंकि यह अब माइक्रोसॉफ्ट द्वारा समर्थित नहीं है। लेकिन यह वहां भी काम करता है, मैंने उत्तर पोस्ट करने से पहले इसका परीक्षण किया है। –

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