मैं अपने एप्लिकेशन के लिए इंस्टॉलर बनाने के लिए इनो सेटअप का उपयोग कर रहा हूं। इंस्टॉलर बहुत बुनियादी है और बस कुछ फाइलों की प्रतिलिपि बनाता है। यह बहुत अच्छा काम करता है और मैं इसके साथ खुश हूं।इंस्टॉलेशन के दौरान इनो सेटअप लॉन्च निष्पादन योग्य (ड्राइवर स्थापित करने के लिए)
मैंने हाल ही में यूएसबी समर्थन लागू किया है और इसके लिए आईवीआई नींव से यूएसबी ड्राइवर स्थापित करने की आवश्यकता है। यह मूल रूप से एक exe फ़ाइल है जिसे सेटअप प्रक्रिया के दौरान कहीं लॉन्च किया जाना है। अब तक, उपयोगकर्ता को ड्राइवरों को अलग से स्थापित करना है, जो इतना सुरुचिपूर्ण नहीं है। मेरा पहला दृष्टिकोण यह था:
[Run]
Filename: "{app}\driver\IviSharedComponents_2.2.1.exe"; Description: "Install USB driver (IVI Foundation)"; Flags: postinstall skipifsilent
Filename: "{app}\driver\IviSharedComponents64_2.2.1.exe"; Description: "Install 64bit USB driver (IVI Foundation)"; Flags: postinstall skipifsilent
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, "&", "&&")}}"; Flags: postinstall skipifsilent
यह काम करता है, लेकिन उपयोगकर्ता को सही सीधा चुनना है। यहां का लाभ यह है कि वह इसे इंस्टॉल नहीं करना चुन सकता है (इस मामले में एप्लिकेशन केवल यूएसबी कार्यक्षमता को अनदेखा करता है जो ठीक है)। जो मैं वास्तव में चाहता हूं वह सिस्टम के प्रत्यक्ष रूप से पता लगाने और सेटअप प्रक्रिया को चलाने के लिए है। यह [Run]
अनुभाग में होना आवश्यक नहीं है, हालांकि मेरे पास इसके खिलाफ कुछ भी नहीं होगा (क्योंकि उपयोगकर्ता इसे इंस्टॉल नहीं करना चुन सकता है)।
मैं भी कुछ कोड मिल गया है और इस तरह इसे चलाने के लिए करने की कोशिश की:
[Code]
procedure CurStepChanged (CurStep: TSetupStep);
var
WorkingDir: String;
ReturnCode: Integer;
begin
if (ssInstall = CurStep) then
Log('Starting driver installation');
WorkingDir := ExpandConstant ('{app}\driver');
Exec ('IviSharedComponents_2.2.1.exe', '', WorkingDir, SW_SHOW, ewWaitUntilTerminated, ReturnCode);
end;
लेकिन इस स्थापना शुरू नहीं करता है (हालांकि मैं लॉग प्रविष्टि 'ड्राइवर स्थापना शुरू' देख सकते हैं)। क्या मेरे रास्ते में कुछ गड़बड़ है? मैं गलत क्या कर रहा हूं और मैं इस स्क्रिप्ट को सही तरीके से सही निष्पादन योग्य चुनने के लिए कैसे बदल सकता हूं?
संपादित करें: मैंने प्रस्तावित समाधान का उपयोग [Tasks]
प्रविष्टि के साथ किया था। कार्यान्वयन इस तरह दिखता है (केवल संदर्भ के लिए):
[Tasks]
Name: "install_usb"; Description: "Install USB drivers (IVI Foundation)"; GroupDescription: "External drivers:";
[Run]
Filename: "{app}\driver\IviSharedComponents_2.2.1.exe"; StatusMsg: "Installing USB driver (IVI Foundation)"; Check: Not IsWin64(); Tasks: install_usb; Flags: skipifsilent
Filename: "{app}\driver\IviSharedComponents64_2.2.1.exe"; StatusMsg: "Installing USB driver (IVI Foundation)"; Check: IsWin64(); Tasks: install_usb; Flags: skipifsilent
यह बहुत अच्छी तरह से काम करता है, आपकी मदद के लिए बहुत बहुत धन्यवाद!
बहुत अच्छा, बहुत बहुत धन्यवाद, यह वही है जो मैं चाहता था! :) – brimborium
मैंने अपने प्रश्न के निचले हिस्से में अपना अंतिम समाधान ('[कार्य] 'प्रविष्टि के साथ) भी जोड़ा। – brimborium
Thx, वास्तव में टाइपो। ;) – brimborium