اكتشف ما إذا كان هناك برنامج معين مثبت على جهاز المستخدم في Java

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

  •  20-09-2019
  •  | 
  •  

سؤال

لدي تطبيق Java يتطلب برامج معينة (أحدها Perl) قبل أن يتم تشغيله.ما اعتدت فعله للكشف عن Perl هو:

Runtime.getRuntime().exec("perl Test.pl");

وإذا كان هناك IOException أعلن أنه لا يوجد Perl.

ومع ذلك، اشتكى أحد المستخدمين من استمرار فشل التطبيق لأنه لم يضع بيرل في مساره المتغير.ولهذا السبب أنا أسأل:هل هناك أي طريقة لنظام التشغيل المشترك لاكتشاف ما إذا كان Perl (أو أي برنامج آخر) مثبتًا على نظام المستخدم والمسار إلى البرنامج؟

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

المحلول

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

والخيار الآخر كما ذكر الدون، هو لتثبيت البرنامج كما هو مطلوب بالنسبة إلى التثبيت، وهذا هو الخيار الأكثر شيوعا.

نصائح أخرى

وهذا النوع من الأسئلة يبدو أن تفرقع بين الحين والآخر والجواب <م> (تقريبا) دائما لا. السبب الأكثر العام عن الجواب سلبي هو أن يتم تشغيل جافا في بيئة الجهاز الظاهري متجانسة وهو حسب التصميم نفسه على جميع المنصات. تلك العمليات التي يمكن بعيدا لا مجردة / لا يعتمد عليه على ما لا يقل عن منصات أكثر المدعومة فقط لا يمكن أن يتم بسهولة. الكشف عن الأحداث الخارجية في نظام التشغيل بشكل عام مثل التي يتم تشغيل التطبيقات غير جافا أيضا السقوط / المثبتة إلى أن "ليس من السهل القيام به" الفئة.

وبالتأكيد يمكن أن يكون هناك حاجة / سوق للمكتبات JNI لغرض ولكن تلك توجيه بشدة من <م> عبر منصة متطلبات هذه الأسئلة تبدو دائما تريد أن وهذا هو السبب في الجواب القصير هو "لا" . بقدر ما أستطيع أن أرى، ما تفعلونه حاليا هو أنظف وسيلة للكشف عن بيرل إلا إذا كنت على استعداد لتشمل <لأ href = "http://www.ebb.org/perljvm/" يختلط = "noreferrer" > perljvm أو ما شابه في المشروع.

إذا كان المستخدم غير مستعد لذلك

  • قم بتثبيت Perl في مكان متفق عليه
  • قم بالإشارة إلى مكان تثبيت Perl عن طريق تخزين موقعه في متغير البيئة، أو ملف التكوين، أو سجل Windows، وما إلى ذلك.

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

لا يمكن الحصول على معلومات Windows الأصلية باستخدام Java SDK دون دعم واجهات برمجة التطبيقات الخارجية.بدلاً من استخدام واجهات برمجة التطبيقات الخارجية (التي تكون في الغالب مرخصة من LGPL وليست مفتوحة بالكامل)، يمكننا استخدام أوامر shell للحصول على نفس الشيء.

الخطوة 1 - التحقق من تثبيت التطبيق (Perl).

للتحقق من تثبيت التطبيق، استخدم ProcessBuilder أو Runtime.exec لتشغيل أحد أوامر PowerShell التالية،

get-itemproperty hklm: software microsoft windows currentversion uninstall* | Select-Object DisplayName | حيث {$ _. DisplayName -Match "Perl"}

استبدل كلمة "Perl" بالبرنامج الذي تختاره وقم ببث مخرجات هذه البرامج ومعالجتها.

إذا كان PERL (للسؤال أعلاه)، اتبع الخطوتين أدناه لتعيين المسار وتشغيل البرنامج النصي Perl من Java

الخطوة 2 - إذا كان ذلك متاحًا، فاضبطه على مسار البيئة باستخدام كود جافا.

الخطوة 3 – قم بتشغيل البرنامج النصي Perl الخاص بك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top