منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : أريد معرفة ما ان كان البرنامج موجود مسبقا علي الكمبيوتر ام لا
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم ورحمة الله وبركاته
اسأل الله ان يتقبل منا ومنكم الصيام والقيام ويبارك لنا فيما بقي من رمضان ويوفقنا فيه للأعمال الصالحات وان يجعلنا من عتقائه من النار في هذا الشهر الكريم آمين 


الفكرة باختصار: اريد ان يقوم البرنامج بالبحث عن نسخته التي تم تسطيبها مسبقا أم لا فان وجدها حذفها ونسخ الجديدة 
والا يتم تسطيب البرنامج للمرة الأولي علي الجهاز (أرجو أن تكون الفكرة واضحة)

استعمل هذا الكود للبحث عن اسم البرنامج داخل الكمبيوتر ولكن يبدو أن هنالك خطأ ما حيث تأتيني رسالة أن الملف غير موجود بكل مرة 
PHP كود :
       If My.Computer.FileSystem.FileExists("MyAppName.exe") = True Then
            MsgBox
("File found")
 
       Else
            MsgBox
("File not found")
 
       End If 

 أرجو الافادة وجزاكم الله خيرا
هل إسم الملف الخاص بك

MyAppName.exe
إقتباس :هل إسم الملف الخاص بك

MyAppName.exe

نعم - وقد سمحت للعميل عند تسطيب البرنامج ان يحدد مسار التسطيب - أي ان مسار التسطيب لن يكون معلوما منذ البداية لذي اريد البحث عن اسم البرنامج فقط دون مساره 
وجزاكم الله خيرا
لم أكن أعلم أن سؤالي صعب لهذه الدرجة حتي لا يجد من يرد عليه 
أو أنه اتفه من أن يشغل به الطيبون بالهم  Big Grin

علي كل انا امزح  Shy  ولا زلت بانتظار جواب من الطيبين ، الذين أعلم ان اشغالهم، واشتغالهم بالعشر الآواخر قد منعتهم من التواجد - أسأل الله أن يتقبل منا ومنكم صالح الأعمال.
السلام عليكم ورحمة الله وبركاته
اخي الكريم عبد الله على اعتبار ان البرنامج يثبت عادة في مجلد ProgramFiles وبالتالي سيتم البحث في المسار فأن وجد الاسم ستكون الرسالة موجود والا فلا

كود :
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       If (Not System.IO.Directory.Exists(My.Computer.FileSystem.SpecialDirectories.ProgramFiles & "\MyAppName\MyAppName.exe")) Then
           MsgBox("الكمبيوتر لا يمتلك برنامج \MyAppName\MyAppName.exe")
       Else
           MsgBox("الكمبيوتر يمتلك برنامج \MyAppName\MyAppName.exe")
       End If
   End Sub
جزاكم الله خيرا وبارك فيك 
إقتباس :على اعتبار ان البرنامج يثبت عادة في مجلد ProgramFiles

نعم صدقت ولكن ولو لاحظت حضرتك في ردي السابق أني قلت:

إقتباس :نعم - وقد سمحت للعميل عند تسطيب البرنامج ان يحدد مسار التسطيب - أي ان مسار التسطيب لن يكون معلوما منذ البداية

فكيف سيكون الكود في حال أن العميل حدد مسارا مختلفا عن المسار الافتراضي للتثبيت؟!! 

يعني باختصار اريد أن ابحث عن اسم البرنامج داخل الجهاز وتظهر لي في نتائج البحث  مساره (أين هو بالضبط)

 وجزاكم الله خيرا
هل البرنامج ينزل في مجلد خاص باسم الشركة مثلا أم فقط اسم مجلد البرنامج الاساسي ؟

لو أمكن صورة من شجرة مسار البرنامج
إقتباس :هل البرنامج ينزل في مجلد خاص باسم الشركة مثلا أم فقط اسم مجلد البرنامج الاساسي ؟

فقط اسم مجلد البرنامج الأساسي

وقد استعملت هذا الكود وخرجت معي نتائج صحيحة والحمد لله ولكن انتظر اقتراحاتكم علي الكود حيث ان الكود يتطلب تحديد اسم المجلد الحاوي للبرنامج ويفترض ان البرنامج تم تثبيته بالفولدر الخاص به بالدريف مباشرة أي هكذا مثلا: 
C:\AppFolder\AppName 
فهل يمكن تجاوز شرط معرفة اسم المجلد مثلا، وهذا هو الكود
PHP كود :
       Dim pas As String
        For Each drive In Environment
.GetLogicalDrives
            Dim driver 
As DriveInfo = New DriveInfo(drive)
 
           If driver.DriveType DriveType.Fixed Then
                pas 
drive
                On Error Resume Next
                For Each foundFile 
As String In My.Computer.FileSystem.GetFiles(pas "\AppFolder"FileIO.SearchOption.SearchTopLevelOnly"*.exe"
 
                   ListBox1.Items.Add(foundFile)
 
               Next
            End 
If
 
       Next 
وجزاكم الله خيرا
اخي الفاضل

اسمح لي سأستخدم طريقى اخرى في الكشف عن وجود البرنامج بالجهاز

ينستعلم من خلال قيم الريجستري

استخدم هذا الكود :

كود :
Dim PROG_Registry As Microsoft.Win32.RegistryKey = My.Computer.Registry.LocalMachine.OpenSubKey("Software\WOW6432Node\اسم مجلد البرنامج")
       If PROG_Registry Is Nothing Then

           'key does not exist
           MsgBox("Key does not exist")
       Else
           'key is valid, display actual name
           MsgBox(PROG_Registry.Name)
           MsgBox("Program Already Installed ")
       End If
إقتباس :اسمح لي سأستخدم طريقى اخرى في الكشف عن وجود البرنامج بالجهاز

جزاك الله خيرا طريقة جميلة وسريعة في الوصول للمطلوب 
ولكن هل قيم الرجستري ستختلف مع اختلاف نسخة الويندوز 
فقد وجدت  ان مسار البرنامج كما هو بالرجستري لدي كالتالي: 
إقتباس :Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\MyAppNme

فهل سأجد هذا المفتاح أيضا لدي الاجهزة الخاصة بالعميل بنفس الطريقة، مع العلم ان اصدارات الويندز ربما تختلف من جهاز لآخر فمنها ما يعمل علي ويندوز 7  ومنها ما يعمل علي ويندوز 10  وهكذا

وجزاكم الله خيرا