تمرير قيمة السلسلة لإعداد ابتكارات من التطبيق سطر الأوامر

StackOverflow https://stackoverflow.com/questions/612609

  •  03-07-2019
  •  | 
  •  

سؤال

وهذا السيناريو هو أن لدينا التطبيق العميل / الخادم مع العميل تثبيت كونه الإطلاق باستخدام إعداد ابتكارات الذي يقوم بتحميل العميل من الملقم المحدد من قبل IP / رقم المنفذ. نود أن تكون قادرة على الكشف عن ما إذا كان هناك الخادم على الشبكة المحلية عن طريق البث UDP، ويمكن أن يكتب التطبيق وحدة التحكم التي يفعل ذلك. المشكلة هي، كيف يمكننا تمرير المعلومات من التطبيق وحدة التحكم لالمثبت؟

ويمكنني التقاط رمز الإرجاع، ولكن هذا لا يمكن إلا أن كثافة العمليات. بقدر ما استطيع ان اقول، وظائف الوحيدة لقراءة الملف في إعداد ابتكارات هو في المعالج لذلك نحن لا يمكن قراءة ملف تم إنشاؤه في وقت التشغيل من قبل التطبيق وحدة التحكم. الشيء الوحيد الذي يمكنني أن أفكر في العودة إلى عدد صحيح حيث 4 أرقام الأولى هي موقف 'و: قبل الميناء ومن ثم تحليل الخروج القيمة، والتي يبدو hackish، واهية، وعرضة للخطأ، ولا سيما بالنظر إلى أنا لست على دراية بشكل وثيق مع إعداد ابتكارات تركيب / وظائف لبناء سلسلة.

وأي اقتراحات؟

هل كانت مفيدة؟

المحلول

لا أعرف كيفية تحميل معلمة من سطر الأوامر، ولكن يمكنك استخدام LoadStringFromFile لتحميل محتويات ملف أو GetIniString لقراءة معلمة من ملف ini.

وبشكل أعم، والبحث عن "دعم وظائف المرجعي" في ملف الإعداد مساعدة ابتكارات. هذه الصفحة سوف يعطيك قائمة بجميع وظائف ابتكارات (وليس بما في ذلك المعالج). إذا لم تتمكن من العثور على هذه الصفحة (إذا وجدت سوى معلومات حول المعالج) فإنك قد تكون تبحث في ملف _ تعليمات خاطئة. لاحظ أن إعداد الجدول مساعدة ابتكارات محتويات ليس كل ما كبيرة ولكن مؤشر جيد للغاية.

يتم توثيق

ومعلمات سطر الأوامر في صفحة "إعداد معلمات سطر الأوامر". فمن الممكن أن كنت قد تكون قادرة على خداع ابتكارات باستخدام أحد المعلمات الحالية، ولكن باستخدام يبدو وكأنه ملف ini مثل ذلك سيكون النهج الأكثر وضوحا.

نصائح أخرى

إذا كنت ترغب في تحليل وسائط سطر الأوامر من التعليمات البرمجية في إعداد ابتكارات، ثم استخدام أسلوب مماثل لهذا. ما عليك سوى الاتصال المثبت من سطر الأوامر كما يلي:

c:\MyInstallDirectory>MyInnoSetup.exe -myParam parameterValue

وبعد ذلك يمكنك الاتصال GetCommandLineParam مثل هذا أينما كنت في حاجة إليها:

myVariable := GetCommandLineParam('-myParam');
{ ================================================================== }
{ Allows for standard command line parsing assuming a key/value organization }

function GetCommandlineParam (inParam: String):String; 
var 
  LoopVar : Integer; 
  BreakLoop : Boolean; 
begin 
  { Init the variable to known values } 
  LoopVar :=0; 
  Result := ''; 
  BreakLoop := False; 

  { Loop through the passed in array to find the parameter } 
  while ( (LoopVar < ParamCount) and 
      (not BreakLoop) ) do 
  begin 
    { Determine if the looked for parameter is the next value } 
    if ( (ParamStr(LoopVar) = inParam) and 
       ( (LoopVar+1) < ParamCount )) then 
    begin 
      { Set the return result equal to the next command line parameter } 
      Result := ParamStr(LoopVar+1); 

      { Break the loop } 
      BreakLoop := True; 
    end 

    { Increment the loop variable } 
    LoopVar := LoopVar + 1; 
  end; 
end; 

ويساعد هذا الأمل ...

وInnoSetup يتضمن لغة تمديد باسكال تشبه تفسر التي يمكن استخدامها لكثير من الأشياء أثناء وقت التشغيل المثبت.

وعلى سبيل المثال، وأنا أعلم أنه يمكن قراءة السجل، وأنا واثق إلى حد ما أنه يمكن قراءة الملفات، على الأقل من بعض المجلدات. لديك التطبيق وحدة التحكم في الوضع يمكن أن يكتب ملف مؤقت أو إسقاط واحد أو أكثر من مفاتيح التسجيل التي تحتوي على معلومات مطلوبة في بقية المثبت، والتي يمكن إرجاعها من بيئة البرمجة في البرنامج النصي الإعداد السليم. المثبت حتى يمكن تنظيف ملف مؤقت و / أو في وقت لاحق المفاتيح.

ومن دليل إعداد ابتكارات:

{المعلمة: ParamName | القيمة_الافتراضية}

Embeds a command line parameter value.
    * ParamName specifies the name of the command line parameter to read from.
    * DefaultValue determines the string to embed if the specified command 
      line parameter does not exist, or its value could not be determined.

مثال:

[إعداد]  معرف التطبيق = ...  APPNAME = {المعلمة: exe_name | س ع ص} إكس

وأكثر: شبكة الاتصالات العالمية كوم downloadatoz / دليل / في / ابتكارات-إعداد / topic_consts.htm

يجب upvoted الجواب مجهول المذكورة أعلاه.

وكنت قادرا على تمرير وسيطة لبلدي المثبت من قبل أشير فقط إلى المعلمة بالاسم في البرنامج النصي:

{param:filePath|abc}

وبعد ذلك عند استدعاء المثبت تمرير قيمة المعلمة باستخدام الشكل المطلوب:

MyInnoSetup.exe /filePath=../foo.exe
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top