تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
تشغيل ملف من الريسورس
#1
السلام عليكم ورحمة الله وبركاته.
لدى مجلد لبرنامج محمول لتسريع الكمبيوتر حملته من الانترنت ووضعت هذا المجلد  فى الريسورس كى أجمع كل ملفاته وأشغل فقط ملف ال  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

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

الرد }}}
تم الشكر بواسطة:
#2
(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 فالبرنامج لا يعمل لان غير موجود بجوار ملفاته كما هو بالصورة
الرد }}}
تم الشكر بواسطة: عبد العزيز البسكري
#3
اهلا بك أخى ..
لا أريد شغيل البرنامج من الرسورس والصورة اللى فوق بها كل ملفات البرنامج ومجلداته داخل الريسورس
الرد }}}
تم الشكر بواسطة:
#4
الله المستعان
الرد }}}
تم الشكر بواسطة:
#5
السلام عليكم ورحمة الله وبركاته اظن ان البرنامج لكي يعمل يجب ان تكون جميع مكتباته وفولدراته بجواره

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

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

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

كان اسمه Silent

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

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

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



الله يكرمك أخى وانا فعلا واضع كل جميع مكتباته
 وفولدراته بجواره  داخل الريسورس مع الملف التنفيذى...
الرد }}}
تم الشكر بواسطة:
#7
أول نقطة
يجب أن تضيف "\" في نهاية تعريف المتغير 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 مع جميع ملفاته ومجلداته
ثم فك الضغط عنه في المسار المطلوب وبعدها تشغيله

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


تمنياتي لك بالتوفيق
الرد }}}
تم الشكر بواسطة: Anas Mahmoud , ابو روضة , ابو روضة
#8
الطريقة الابسط كما اشار لها الاخ هي ضغط جميع الملفات في ملف واحد وليكن اسمه 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/2222...hat-folder
https://docs.microsoft.com/en-us/dotnet/...etcore-3.1
https://docs.microsoft.com/en-us/dotnet/...etcore-3.1
الرد }}}
تم الشكر بواسطة: ابو روضة , ابو روضة
#9
جزاكم الله كل الخير أخوتى الكرام ماشاء الله ولا حول ولا قوة إلا بالله....

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

أنا أعمل على فريم ورك 4 فهل هذا الخطأ يحتاج الى فريم أعلى 
الرد }}}
تم الشكر بواسطة:
#10
اجل اخي zipArchive موجودة من اول 4.5

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

الفكرة في النهاية واحدة
الرد }}}
تم الشكر بواسطة: عبد العزيز البسكري


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [سؤال] منع الوصول أو تشغيل الريجيسترى dr.programming 4 408 12-06-25, 12:24 AM
آخر رد: أبو خالد الشكري
  [سؤال] تغيير الفورم الرئيسي عند تشغيل البرنامج في Visual Studio مع .NET 8؟ silverlord 2 659 09-03-25, 03:52 AM
آخر رد: silverlord
  [سؤال] اضافة ملف Pdf الى الريسورس واستخراجه الى مسار معين .. ackore 6 614 15-11-24, 02:51 AM
آخر رد: justforit
  [مثال] تشغيل البرنامج كمسؤول alswade 2 468 30-10-24, 07:08 PM
آخر رد: aliday03
Exclamation [VB.NET] ممكن كود تشغيل ملف صوت MP3 الورد الصناعي 10 948 20-10-24, 03:08 PM
آخر رد: salamandal
Rainbow تشغيل او إيقاف نظام الإنترنت مؤقتا YousefOkasha 5 2,512 16-10-24, 11:57 AM
آخر رد: بوحمد
  كيف يمكن اضافة عناصر للكومبوبوكس اثناء تشغيل البرنامج عن طريق المستخدم haithammoftah 3 2,168 30-09-24, 12:52 AM
آخر رد: asmarsou
Lightbulb [سؤال] مشكلة تظهر عند بدء تشغيل البرنامج أبو خالد الشكري 3 500 19-08-24, 05:16 PM
آخر رد: Zuhare
  ماهو كود ب .net يقوم باعادة تشغيل مستكشف ملفات الووندوز windows explorer bassant 6 765 21-07-24, 01:46 PM
آخر رد: bassant
  [VB.NET] رسالة خطا عند تشغيل المشروع asd103 2 445 03-07-24, 10:42 AM
آخر رد: asd103

التنقل السريع :


يقوم بقرائة الموضوع: