منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
تشغيل ملف من الريسورس - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : تشغيل ملف من الريسورس (/showthread.php?tid=31959)

الصفحات: 1 2


تشغيل ملف من الريسورس - ابو روضة - 02-11-19

السلام عليكم ورحمة الله وبركاته.
لدى مجلد لبرنامج محمول لتسريع الكمبيوتر حملته من الانترنت ووضعت هذا المجلد  فى الريسورس كى أجمع كل ملفاته وأشغل فقط ملف ال  exe لكن هناك خطأ ولا يعمل البرنامج وهذا هو الكود

PHP كود :
Dim Dir As String My.Computer.FileSystem.SpecialDirectories.Temp
        Dim Filename 
As String Dir "StartupManager.exe"
 
       IO.File.WriteAllBytes(FilenameMy.Resources.StartupManager)
 
       Process.Start(Filename

وهذه صورة توضح طلبى




RE: تشغيل ملف من الريسورس - bidaya - 03-11-19

(02-11-19, 11:57 PM)ابو روضة كتب :
السلام عليكم ورحمة الله وبركاته.
لدى مجلد لبرنامج محمول لتسريع الكمبيوتر حملته من الانترنت ووضعت هذا المجلد  فى الريسورس كى أجمع كل ملفاته وأشغل فقط ملف ال  exe لكن هناك خطأ ولا يعمل البرنامج وهذا هو الكود

PHP كود :
Dim Dir As String My.Computer.FileSystem.SpecialDirectories.Temp
        Dim Filename 
As String Dir "StartupManager.exe"
 
       IO.File.WriteAllBytes(FilenameMy.Resources.StartupManager)
 
       Process.Start(Filename
مرحبا اخي ابو روضة
هل تقصد تشغيل البرنامج من الرسورس ام في مجلد temp
اذ كان من المجلد temp فالبرنامج لا يعمل لان غير موجود بجوار ملفاته كما هو بالصورة


RE: تشغيل ملف من الريسورس - ابو روضة - 03-11-19

اهلا بك أخى ..
لا أريد شغيل البرنامج من الرسورس والصورة اللى فوق بها كل ملفات البرنامج ومجلداته داخل الريسورس



RE: تشغيل ملف من الريسورس - ابو روضة - 25-09-20

الله المستعان



RE: تشغيل ملف من الريسورس - Anas Mahmoud - 25-09-20

السلام عليكم ورحمة الله وبركاته اظن ان البرنامج لكي يعمل يجب ان تكون جميع مكتباته وفولدراته بجواره

لايكفي اخراج ال exe لوحده ولكن عليك اخراج الفولدر كامل بنفس ترتيب الملفات

سأحاول ان اجد لك طريقة اخي الكريم

كان فيه زمان طريقة بتعمل كل الفايلات اللي مع ال Exe في فايل واحد Exe

كان اسمه Silent

مش عارف لسة موجودة ولا ايه


RE: تشغيل ملف من الريسورس - ابو روضة - 25-09-20

(25-09-20, 05:57 PM)Anas Mahmoud كتب : السلام عليكم ورحمة الله وبركاته اظن ان البرنامج لكي يعمل يجب ان تكون جميع مكتباته وفولدراته بجواره

لايكفي اخراج ال exe لوحده ولكن عليك اخراج الفولدر كامل بنفس ترتيب الملفات

سأحاول ان اجد لك طريقة اخي الكريم



الله يكرمك أخى وانا فعلا واضع كل جميع مكتباته
 وفولدراته بجواره  داخل الريسورس مع الملف التنفيذى...


RE: تشغيل ملف من الريسورس - enjoy - 25-09-20

أول نقطة
يجب أن تضيف "\" في نهاية تعريف المتغير Dir مثل
PHP كود :
Dim Dir As String My.Computer.FileSystem.SpecialDirectories.Temp "\" 

النقطة الثانية يجب إخراج جميع الملفات بنفس طريقتك
PHP كود :
IO.File.WriteAllBytes(Dir "StartupManager.exe"My.Resources.StartupManager

الملفات المتشابهة بالاسم ومختلفة بالنوع مثل StartupManager.exe وStartupManager.dll
ستجد أن إسم أول وحاد منهما تمت إضافته هو StartupManager
ولكن الثاني سيكون StartupManager1 باضافة رقم (1) يجب الانتباه لهذا الأمر عند إخراجه فيكون مثلا
PHP كود :
IO.File.WriteAllBytes(Dir "StartupManager.exe"My.Resources.StartupManager)
IO.File.WriteAllBytes(Dir "StartupManager.dll"My.Resources.StartupManager1' لاحظ رقم 1 في نهاية ملف الريسورس 

النقطة الثالثة إذا كان هناك مجلدات تخص البرنامج StartupManager فيجب إنشاءها واستخراج الملفات الخاصة به داخلها
مع الانتباه لمسار المجلد أن ينتهي بـ "\" لتلافي حدوث مشكلة

وفي النهاية تستطيع تشغيل البرنامج
PHP كود :
Process.Start(Dir "StartupManager.exe"

قد تكون فعلت كل هذا ولكن المشكلة لديك كانت في عدم وجود "\" في نهاية المسار Dir

لفحص أي مسار تنشئه قم بعده بعمل مسج لإظهار محتواه فقط لتتأكد من وجود "\" ان الكود يسير بشكل صحيح
ثم احذف او عطل سطر مسج الاختبار

قد يكون الكود مثل
PHP كود :
Dim Dir1 As String My.Computer.FileSystem.SpecialDirectories.Temp "\"
IO.File.WriteAllBytes(Dir1 + "
GUDownloader.exe", My.Resources.GUDownloader)
IO.File.WriteAllBytes(Dir1 + "
StartupManager.exe", My.Resources.StartupManager)
IO.File.WriteAllBytes(Dir1 + "
StartupManager.dll", My.Resources.StartupManager1) ' لاحظ رقم 1 في نهاية ملف الريسورس

Dim Dir2 = My.Computer.FileSystem.SpecialDirectories.Temp & "
\data\"
IO.Directory.CreateDirectory(Dir2)
IO.File.WriteAllBytes(Dir2 + "
datafile.bin", My.Resources.Datafile)
IO.File.WriteAllBytes(Dir2 + "
!!!!!!!!!!.!!!", My.Resources.!!!!!!!!!!)
'
'
'
Dim Dir3 = My.Computer.FileSystem.SpecialDirectories.Temp & "
\!!!\"
IO.Directory.CreateDirectory(Dir3)
'
'
'

Process.Start(Dir1 + "
StartupManager.exe") 


أتمنى أن أكون أفدتك في تطببيق فكرتك




هناك فكرة ضغط البرنامج StartupManager مع جميع ملفاته ومجلداته
ثم فك الضغط عنه في المسار المطلوب وبعدها تشغيله

لكن طريقة هذه الفكرة لا تحضرني حاليا
واعتقد أنها قد تحتاج مكتبة ضغط وفك الضغط عن الملفات


تمنياتي لك بالتوفيق


RE: تشغيل ملف من الريسورس - Anas Mahmoud - 25-09-20

الطريقة الابسط كما اشار لها الاخ هي ضغط جميع الملفات في ملف واحد وليكن اسمه Archive.zip ، الملفات موضوعه داخله مباشرة وليست داخل فولدر اولا يجب الانتباه لهذا الامر


الان يمكننا اضافة هذا الملف Zip الى resources ومن ثم استدعاءه على هيئة MemoryStream ومن ثم اخراجه باستخدام ZipArchive التابعة لفضاء الاسماء Imports System.IO.Compression


كود :
Imports System.IO
Imports System.IO.Compression

الاجراء التالي لفك ضغط ملف zip من ال resources :
كود :
    Sub UnZipFromByte(Archive As Byte(), Path As String)
        If Directory.Exists(Path) Then Directory.Delete(Path, True)
        Using ZipStream As New MemoryStream(Archive)
            Using Zip As New ZipArchive(ZipStream)
                Zip.ExtractToDirectory(Path)
            End Using
        End Using
    End Sub

استخدامه :
كود :
       UnZipFromByte(My.Resources.Archive, "StartupManager")
       Process.Start("StartupManager\StartupManager.exe")

نقوم بفك الضغط في مجلد StartupManager بجوار البرنامج ومن ثم نقوم بتشغيل StartupManager\StartupManager.exe

المصادر :
https://stackoverflow.com/a/21404060/14137871
https://stackoverflow.com/questions/2222718/c-sharp-delete-a-folder-and-all-files-and-folders-within-that-folder
https://docs.microsoft.com/en-us/dotnet/api/system.io.compression?redirectedfrom=MSDN&view=netcore-3.1
https://docs.microsoft.com/en-us/dotnet/api/system.io.compression.ziparchive?view=netcore-3.1


RE: تشغيل ملف من الريسورس - ابو روضة - 25-09-20

جزاكم الله كل الخير أخوتى الكرام ماشاء الله ولا حول ولا قوة إلا بالله....

لكن عذراً هناك خطأ بسيط

أنا أعمل على فريم ورك 4 فهل هذا الخطأ يحتاج الى فريم أعلى 



RE: تشغيل ملف من الريسورس - Anas Mahmoud - 25-09-20

اجل اخي zipArchive موجودة من اول 4.5

لا ادري ما الاسهل ، تغيير الفريم وورك ام البحث عن طريقة اخرى لفك الضغط

الفكرة في النهاية واحدة