السلام عليكم ورحمة الله وبركاته
اسأل الله ان يتقبل منا ومنكم الصيام والقيام ويبارك لنا فيما بقي من رمضان ويوفقنا فيه للأعمال الصالحات وان يجعلنا من عتقائه من النار في هذا الشهر الكريم آمين
الفكرة باختصار: اريد ان يقوم البرنامج بالبحث عن نسخته التي تم تسطيبها مسبقا أم لا فان وجدها حذفها ونسخ الجديدة
والا يتم تسطيب البرنامج للمرة الأولي علي الجهاز (أرجو أن تكون الفكرة واضحة)
استعمل هذا الكود للبحث عن اسم البرنامج داخل الكمبيوتر ولكن يبدو أن هنالك خطأ ما حيث تأتيني رسالة أن الملف غير موجود بكل مرة
PHP كود :
If My.Computer.FileSystem.FileExists("MyAppName.exe") = True Then
MsgBox("File found")
Else
MsgBox("File not found")
End If
أرجو الافادة وجزاكم الله خيرا
هل إسم الملف الخاص بك
MyAppName.exe
إقتباس :هل إسم الملف الخاص بك
MyAppName.exe
نعم - وقد سمحت للعميل عند تسطيب البرنامج ان يحدد مسار التسطيب - أي ان مسار التسطيب لن يكون معلوما منذ البداية لذي اريد البحث عن اسم البرنامج فقط دون مساره
وجزاكم الله خيرا
لم أكن أعلم أن سؤالي صعب لهذه الدرجة حتي لا يجد من يرد عليه
أو أنه اتفه من أن يشغل به الطيبون بالهم
علي كل انا امزح
ولا زلت بانتظار جواب من الطيبين ، الذين أعلم ان اشغالهم، واشتغالهم بالعشر الآواخر قد منعتهم من التواجد - أسأل الله أن يتقبل منا ومنكم صالح الأعمال.
السلام عليكم ورحمة الله وبركاته
اخي الكريم عبد الله على اعتبار ان البرنامج يثبت عادة في مجلد 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 وهكذا
وجزاكم الله خيرا