batch file - Inno सेटअप-बाह्य स्रोत(फाइल या फ़ोल्डर सामग्री) से घटकों/प्रकारों की गतिशील सूची बनाएं
batch-file components (1)
मेरे पास एक बैच फाइल है (सेटिंग परिवर्तक) जो किसी विशेष फ़ोल्डर में विशिष्ट फाइल स्वरूपों को सूचीबद्ध करने के लिए एक्सकोपी का उपयोग करता है, फिर मुझे एक नाम टाइप करने की अनुमति देता है और स्क्रिप्ट उस फ़ाइल को दूसरे स्थान पर कॉपी करने के लिए उस नाम का उपयोग करती है।
पहले xcopy बैकअप के रूप में मूल की प्रतिलिपि बनाता है ( केवल 1 प्रतिलिपि को बैकअप लेना ) तो फ़ाइल की प्रतिलिपि बनाता है (बैच में विस्तार तय है केवल फ़ाइल नाम की आवश्यकता है यह बहुत अच्छा काम करता है, लेकिन मुझे इनो सेटअप में करने का प्रयास करना अच्छा लगता है एक अच्छा साफ जीयूआई
मैं एक विशिष्ट निश्चित फ़ोल्डर में मिली फ़ाइलों की इस सूची से घटकों / प्रकारों की सूची को पॉप्युलेट करना चाहता हूं। या यहां तक कि उन नामों के साथ एक ini फ़ाइल बनाते हैं ( अतिरिक्त कदम लेकिन शायद बेहतर नियंत्रण ) मुख्य समस्या यह संभव होने से रोक सकती है, यह नहीं जानती कि यह कितनी प्रविष्टियां होगी, यह एक सरणी होगी। यदि केवल 1 प्रविष्टि या फ़ाइल केवल 1 विकल्प (1 या एक) अगर 4 तब उपयोगकर्ता 4 का 1 (ए, बी, सी या डी) चुन सकता है। नाम / विवरण बनाने के लिए मैं फ़ाइल नाम निकालेगा।
तो मेरे बैच के रूप में एक ही काम को पूरा करने पर, बैकअप (हमेशा हमेशा start.ini जैसे एक ही नाम) तो फ़ाइल की प्रतिलिपि करें उदाहरण example1.ini और अधिलेखन start.ini
ini सबसे अधिक लचीला हो सकता है क्योंकि मैं कल्पना करता हूं कि बाद में किए गए कार्यों को बदलने के लिए नए वर्गों को जोड़ना होगा।
क्या यह संभव है या इस कार्यक्रम को बहुत दूर खींच रहा है मेरे बैच के रूप में जल्दी नहीं है, लेकिन कम टाइपिंग और मैन्युअल कदम निरंतर उपयोग के लिए बेहतर हैं।
मुझे एक डायलॉग विंडो में सामग्री की सूची के लिए एक उदाहरण मिला लेकिन मुझे यह पता नहीं लगा कि इसका इस्तेमाल कैसे किया जा सके। TLama - एक निर्देशिका में सभी फाइलों की सूची
आप रनटाइम पर गतिशील रूप से घटकों को नहीं बना सकते (आप संकलन समय पर कर सकते हैं)
लेकिन CreateCustomPage
और CreateCustomPage
का उपयोग कर कस्टम डायनामिक घटकों जैसे पृष्ठ को लागू करना मुश्किल नहीं है।
फिर CurStepChanged(ssInstall)
आप चयनित फ़ाइलों / घटकों को अपनी आवश्यकता के अनुसार प्रोसेस करते हैं।
[Code]
const
SourcePath = 'C:\somepath';
var
CustomSelectTasksPage: TWizardPage;
ComponentsList: TNewCheckListBox;
procedure InitializeWizard();
var
FindRec: TFindRec;
SelectComponentsLabel: TNewStaticText;
begin
CustomSelectTasksPage :=
CreateCustomPage(
wpSelectComponents, SetupMessage(msgWizardSelectComponents),
SetupMessage(msgSelectComponentsDesc));
SelectComponentsLabel := TNewStaticText.Create(WizardForm);
SelectComponentsLabel.Parent := CustomSelectTasksPage.Surface;
SelectComponentsLabel.Top := 0;
SelectComponentsLabel.Left := 0;
SelectComponentsLabel.Width := CustomSelectTasksPage.Surface.Width;
SelectComponentsLabel.AutoSize := False;
SelectComponentsLabel.ShowAccelChar := False;
SelectComponentsLabel.WordWrap := True;
SelectComponentsLabel.Caption := SetupMessage(msgSelectComponentsLabel2);
WizardForm.AdjustLabelHeight(SelectComponentsLabel);
ComponentsList := TNewCheckListBox.Create(WizardForm);
ComponentsList.Parent := CustomSelectTasksPage.Surface;
ComponentsList.Top :=
SelectComponentsLabel.Top + SelectComponentsLabel.Height + ScaleY(8);
ComponentsList.Left := 0;
ComponentsList.Width := CustomSelectTasksPage.Surface.Width;
ComponentsList.Height := CustomSelectTasksPage.Surface.Height - ComponentsList.Top;
if FindFirst(ExpandConstant(AddBackslash(SourcePath) + '*.dat'), FindRec) then
begin
try
repeat
ComponentsList.AddCheckBox(FindRec.Name, '', 0, False, True, False, False, nil);
until not FindNext(FindRec);
finally
FindClose(FindRec);
end;
end;
end;
procedure CurStepChanged(CurStep: TSetupStep);
var
I: Integer;
FileName: string;
SourceFilePath: string;
TargetFilePath: string;
begin
if CurStep = ssInstall then
begin
for I := 0 to ComponentsList.Items.Count - 1 do
begin
if ComponentsList.Checked[I] then
begin
FileName := ComponentsList.Items[I];
SourceFilePath := AddBackslash(SourcePath) + FileName;
TargetFilePath := AddBackslash(ExpandConstant('{app}')) + FileName;
if FileCopy(SourceFilePath, TargetFilePath, False) then
begin
Log(Format('Installed "%s".', [FileName]));
end
else
begin
Log(Format('Failed to install "%s".', [FileName]));
end;
end;
end;
end;
end;