PDA

View Full Version : سوال: ساخت فایل EXE در حالت اجرا



askari021
یک شنبه 04 خرداد 1393, 22:21 عصر
سلام
من می خوام برنامه ای بسازم که شامل 2 تا فرم باشه که توی فرم اول بشه یک سری تنظیمات توی فرم دوم انجام داد و بعد در انتها گزینه وجود داشته باشه که بشه یک فرمت اجرایی EXE از فرم دوم ساخت
مثال فرض کنید من بخوام برنامه برای شبیه سازی آزمون تستی بسازم
توی فرم اول باید بشه سوالات و جوابا رو اضافه کرد و فرم دوم که یک آزمون رو نشون میده میخوام بشه ازش یه فرم اجرایی ساخت
عملاً می خوام از فرم موجود یک نسخه EXE جدید بسازم
کسی راهی بلده؟

rayson
دوشنبه 05 خرداد 1393, 00:43 صبح
سلام
من می خوام برنامه ای بسازم که شامل 2 تا فرم باشه که توی فرم اول بشه یک سری تنظیمات توی فرم دوم انجام داد و بعد در انتها گزینه وجود داشته باشه که بشه یک فرمت اجرایی EXE از فرم دوم ساخت
مثال فرض کنید من بخوام برنامه برای شبیه سازی آزمون تستی بسازم
توی فرم اول باید بشه سوالات و جوابا رو اضافه کرد و فرم دوم که یک آزمون رو نشون میده میخوام بشه ازش یه فرم اجرایی ساخت
عملاً می خوام از فرم موجود یک نسخه EXE جدید بسازم
کسی راهی بلده؟
سلام.
تا حالا ندیدم کسی چنین کاری انجام بده ولی یک راهکار دارم.
شما دو پروژه ایجاد میکنید با یک دیتابیس ، یکی برای طراحی سوالات و یکی هم برای پاسخ دادن به آن سوالات .
در پروژه اول که طراحی سوالات هست ، زمانی که می خواید به صفحه سوالات برید برای جواب دادن به آنها ، فایل Exe موجود درون پوشه debug آن(پروژه دوم) اجرا کنید با دستوران موجود که در C#‎‎ هست.:تشویق:
موفق باشید.

aliagamon
دوشنبه 05 خرداد 1393, 20:11 عصر
اگه واقعا نیازه که یه اگزه دیگه تولید کنین این امکان وجود داره .... خود دات نت امکان استفاده از کامپایلشو به شما میده ... میتونید یه برنامه ی دیگه generate کنید ... که ازش تو سرور های تروجان هم استفاده میشه .... نمیدونم انتی ویروس گیر بده یا نه اما در کل خوبه ...
از ICodeCompiler و CSharpCodeProvider استفاده کنید[جست و جو ] ... (تو همین انجمن یادمه بحث شده بود حدود 1 سال پیش :لبخند:)
البته روش استفاده از دو پروژه هم خوبه اما این جواب سوالتونه .... (بسته به نیاز هاتون هر دوتا راه حل هستن ... یه فرق کوچیک که دارن اینه دومی پرتابل میشه اما اولی یه دیتابیس همراهش میخواد)

AMIN_SG
دوشنبه 05 خرداد 1393, 20:47 عصر
سلام این رو قبلا درست کرده بود ولی تحت کنسول میشه و تحت وین فرم رو نمیدونم شاید بدردتون بخوره برای اینکه که کار کنه دو تا تکست باکس و دو باتن قرار بدید و تو یکی از باتن ها کد زیر رو بنویسید البته دقت کنید که باید using ,System.CodeDomSystem.CodeDom.Compiler رو هم انجام بدبد به صورت زیر

using System.CodeDom;
using System.CodeDom.Compiler;

CSCodeProvider codeProvider = new CSCodeProvider();
ICodeCompiler icc = codeProvider.CreateCompiler();
string Output = "c:\\Out.exe";
Button ButtonObject = (Button)sender;

TextBox2.Text = "";
CompilerParameters parameters = new CompilerParameters();
CompilerResults results = default(CompilerResults);
parameters.GenerateExecutable = true;
parameters.OutputAssembly = Output;
results = icc.CompileAssemblyFromSource(parameters, TextBox1.Text);

if (results.Errors.Count > 0) {
TextBox2.ForeColor = Color.Red;
CompilerError CompErr = default(CompilerError);
foreach ( CompErr in results.Errors) {
TextBox2.Text = TextBox2.Text + "Line number " + CompErr.Line + ", Error Number: " + CompErr.ErrorNumber + ", '" + CompErr.ErrorText + ";" + Environment.NewLine + Environment.NewLine;
}
} else {
TextBox2.ForeColor = Color.Blue;
TextBox2.Text = "Success!";
if (ButtonObject.Text == "Run")
Process.Start(Output);
}