PDA

View Full Version : ساخت فایل exe به وسیله برنامه



Veteran
پنج شنبه 01 تیر 1391, 12:45 عصر
سلام دوستان خوبین.
ما 2 تا تکست باکس داریم با باتن.میخوایم اطلاعاتی رو در این تکست باکس ها وارد کنیم.
روی باتن کلیک کنیم و یک فایل exe ساخته باشه با 2 تا تکست باکس که مقادیرشون همون مقادیری باشن که توی برنامه اول زدیم.
توی vb6 بلدم اما vb.net نه !:اشتباه:

ROSTAM2
پنج شنبه 01 تیر 1391, 17:03 عصر
فايل EXE از چي قراره ساخته بشه بالاخره كدي دستوري دستوراتي

اگه مي خوايد پروژه اي رو BUILD كنيد و به EXE تبديل بشه ؟؟؟ توي SNIPPETS فكر كنم كد Build Project باشه يا من اشتباه مي كنم و الا بگيد كد بگذارم ...



توی vb6 بلدم اما vb.net نه !


توي vb6 چجوريه كدش؟؟؟ با ارسال پارامتر به برنامه vb اينكارو مي كنيد يا راه ديگه اي داره؟؟؟

Veteran
پنج شنبه 01 تیر 1391, 17:20 عصر
نه حاجی منظور این نیست.
فیلم رو ببینین.

ROSTAM2
پنج شنبه 01 تیر 1391, 17:44 عصر
اين كه اصلا مشخص نيست فايل رو چطور مي سازه شايد از قبل ساخته شده و بعد از وارد كردن اطلاعات تو يه فايل جانبي اون ها رو به مقصد كپي مي كنه و اطلاعات رو از فايل جانبي مي خونه؟؟؟

اين دستور آدرس پرو‍ژه رو مي گيره و اون رو build مي كنه::

Dim B As New Microsoft.Build.BuildEngine.Project
B.Load($SolutionPath$)
MsgBox(B.Build())


راستي فهميدم منظورتون چيه !!!!!!!!!!!! :بامزه:

Veteran
پنج شنبه 01 تیر 1391, 18:25 عصر
نه داداش اینجوری نیست !

Mani_rf
پنج شنبه 01 تیر 1391, 19:58 عصر
سلام. می خواهید پروژهی خاصی را در زمان اجرا کامپایل و فایل Exe از آن بگیرید؟

Veteran
پنج شنبه 01 تیر 1391, 20:28 عصر
نه داداش.
بزار ی مثال واضح بزنم.
کیلاگر هارو دیدین که ادرس ایمیل و پسورد بهشون میدی بعد در نهایت یک فایل بهت میده exe بهت میده که اگر کاربر اونو اجرا کنه اطلاعاتش به همون ادرس ایمیلی میره که در اول تنظیم شده ؟
این فایل exe ساخته نمیشه.
از همون اول توسط برنامه نویس برنامه ساخته میشه و در ریسورس برنامه اصلی قرار میگیره.
برنامه اصلی اجرا میشه اطلاعات رو میگیره که همون ادرس ایمیل و پسورد هست.
ی دکمه هم داره که فایل رو میسازه وقتی ما روش کلیک میکنیم در واقع اطلاعات رو میگیره میده به فایلی که توی ریسورس هست بعد فایل توی ریسورس رو استخراج میکنه و در یک مسیری به کاربر میده
که اگه اجرا بشه اطلاعات میره به ایمیل

barnamenevisforme
پنج شنبه 01 تیر 1391, 22:38 عصر
سلام
اگه برنامه رو توی vb6 دارید ،بهتر نیست یه update به vb.net انجام بدید و احیانا اگه ایرادی داشت مورد به مورد مطرح ورفع کنید؟

Alirezanet
شنبه 03 تیر 1391, 03:48 صبح
سلام این جور که متوجه شدم شما میخاید برنامتون بتونه تولید برنامه دیگه ای کنه !
خوب سادست به این تیکه کد نگاه بنداز مشکلت رفع میشه !

فقط به جای RichTextBox باید کدت رو قرار بدی (منظور کده برنامه جدیده! ) که باید کامل باشه !

موفق باشی !

Dim ProviderOption As New Dictionary(Of String, String) From {{"CompilerVersion", "v3.5"}}
Dim VbProvider As New VBCodeProvider(ProviderOption)
Dim CompileParams As New CompilerParameters With {.OutputAssembly = "C:\Foo.EXE",
.GenerateExecutable = True}

Dim result As CompilerResults = VbProvider.CompileAssemblyFromSource(CompileParams , RichTextBox1.Text)
Console.WriteLine("Number of Errors: {0}", result.Errors.Count)
For Each r As CompilerError In result.Errors
Console.WriteLine(r.ErrorText)
Next

نمونه کدی که باید قرار بدی هم :
Module Module1

Sub Main()
' هرچی دله تنگت خواست :D
End Sub

End Module

Alirezanet
شنبه 03 تیر 1391, 04:24 صبح
کلا 1 متدش کردم راحت تر استفاده کنید :
Friend Function CreateConsoleApplication(ByVal VBSourceCode As String, ByVal WhereToSave As String) As Boolean
Try
Dim provider As Microsoft.VisualBasic.VBCodeProvider
Dim compiler As System.CodeDom.Compiler.ICodeCompiler
Dim params As System.CodeDom.Compiler.CompilerParameters
Dim results As System.CodeDom.Compiler.CompilerResults

params = New System.CodeDom.Compiler.CompilerParameters
params.GenerateInMemory = False

params.TreatWarningsAsErrors = False
params.WarningLevel = 4
'Put any references you need here - even you own dll's, if you want to use one

Dim refs() As String = {"System.dll", "Microsoft.VisualBasic.dll"}
params.ReferencedAssemblies.AddRange(refs)
params.GenerateExecutable = True
params.OutputAssembly = WhereToSave

provider = New Microsoft.VisualBasic.VBCodeProvider
results = provider.CompileAssemblyFromSource(params, VBSourceCode)
For Each r In results.Errors
Console.WriteLine(r.ToString)
Next
Return True
Catch ex As Exception
MessageBox.Show(ex.ToString)
Return False
End Try
End Function

فقط نکتش اینه که کدی که میخواید بنویسید براش رو حتما کامل بنویسید یعنی مثلا اگه خواستید بنویسید Console.WriteLine("xxx") بنویسید System.Console.WriteLine("xxx") همین
موفق باشی

koorosh-soft
شنبه 03 تیر 1391, 21:29 عصر
اینجوری کل سورس لازمه که !

Alirezanet
یک شنبه 04 تیر 1391, 00:15 صبح
اینجوری کل سورس لازمه که !

دوست عزیز اگه میخوای برنامت برنامه تولید کنه باید براش کد بنویسی ! ویزاردی که نمیشه !!!!!!!!!

کل سورس منظورت چیه !؟

4 خط کد مینویسی اجرا بشه انجام میده کار خاصی نداره !

koorosh-soft
شنبه 10 تیر 1391, 13:24 عصر
دوست عزیز اگه میخوای برنامت برنامه تولید کنه باید براش کد بنویسی ! ویزاردی که نمیشه !!!!!!!!!

کل سورس منظورت چیه !؟

4 خط کد مینویسی اجرا بشه انجام میده کار خاصی نداره !

منظورم از کل سورس لازمه این بود که حجم رو طوری کاهش بدیم ! مثلا بتونیم به Resource برنامه دومی دسترسی پیدا کنیم ! ولی اگر کل کد لازم باشه CODE DOM اگر اشتباه نکنم مطمئن تره !