PDA

View Full Version : تشخیص نصب بودن دات نت فریم ورک



mahdad sepah
سه شنبه 24 اردیبهشت 1392, 09:21 صبح
سلام دوستان
من دارم یه برنامه چند رسانه ای مینویسم با c# که قرار است به صورت اتوران باشه حالا اگه کاربر دات نت فریم ورک نداشته باشه اجرا نمیشه،حالا من چه جوری باید تشخیص بدم دات نت فریم ورک نصب نیست و اگر نیست ستاپ اش اجرا بشه اگرم نصب بود که خود برنامه اجرا بشه

morteza_mt5
سه شنبه 24 اردیبهشت 1392, 09:49 صبح
با سلام
:لبخندساده:
دوست من اگه dot net framework نصب نباشه که اصلا کدت اجرا نمیشه و برنامه خطا میده .

بهتره از یه برنامه ستاپ ساز استفاده کنی و قبل از نصب برنامه چک کنی که دات نت نصب هست یا نه و اگه نصب نیست فایل setup دات نت اجرا بشه و نصب بشه .

mahdad sepah
سه شنبه 24 اردیبهشت 1392, 09:55 صبح
با سلام
:لبخندساده:
دوست من اگه dot net framework نصب نباشه که اصلا کدت اجرا نمیشه و برنامه خطا میده .

بهتره از یه برنامه ستاپ ساز استفاده کنی و قبل از نصب برنامه چک کنی که دات نت نصب هست یا نه و اگه نصب نیست فایل setup دات نت اجرا بشه و نصب بشه .
منم مشکلم همینه دیگه که اجرا نمیشه برنامم
هدف من اینه که برنامم به صورت اتوران بیاد بالا نه اینکه نصب بشه
تو سی دی های پرند اینجوریه اگه دات نت فریم ورک نصب نباشه خودش میاد میگه نصبش کنید بعدش برنامه میاد بالا

mthreat.info
سه شنبه 24 اردیبهشت 1392, 11:12 صبح
تو ریجستری بگرد (تو کتاب جفری ریچر توضیح داده بود)

shamriz_farzad
سه شنبه 24 اردیبهشت 1392, 11:21 صبح
سلام
من چندتا تاپیک راجع به UI گذاشتم اما کسی راهنماییم نکرد !!!
کسی می تونه بهم چیزی معرفی کنه ؟!

mehrdad1991h
سه شنبه 24 اردیبهشت 1392, 11:46 صبح
منم مشکلم همینه دیگه که اجرا نمیشه برنامم
هدف من اینه که برنامم به صورت اتوران بیاد بالا نه اینکه نصب بشه
تو سی دی های پرند اینجوریه اگه دات نت فریم ورک نصب نباشه خودش میاد میگه نصبش کنید بعدش برنامه میاد بالا

دقیقا باید از تو ریجستری چک کنی
یک نمونه برات میزارم
من نیاز داشتم اکروبار ردر را چک کنم این کد اکروبات ردر را چک میکنه
با یکم تغییر در همین کد به خواسته ات میرسی

try
{
Microsoft.Win32.RegistryKey adobe = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("Software").OpenSubKey("Adobe");
if (adobe != null)
{
Microsoft.Win32.RegistryKey acroRead = adobe.OpenSubKey("Acrobat Reader");
if (acroRead != null)
{
string[] acroReadVersions = acroRead.GetSubKeyNames();
string a = "The following version(s) of Acrobat Reader are installed: ";
string b = "";
foreach (string versionNumber in acroReadVersions)
{
b += versionNumber;
}
// MessageBox.Show(a + b);

}
else
{
MessageBox.Show("For see PDF you need for \"Adobe Acrobat Reader\"\r\nPlease install and try again !", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}


}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}

aliasghar2
سه شنبه 24 اردیبهشت 1392, 11:57 صبح
من فکر می کنم که شما می خواهید برنامتون رو پرتابل کنید و نیازی به نصب نداشته باشد
باید از نرم افزار های موجود برای این جور کارا استفاده کنید که با یکمی جستجو می تونی پیدا کنی

mahdad sepah
سه شنبه 24 اردیبهشت 1392, 11:58 صبح
دقیقا باید از تو ریجستری چک کنی
یک نمونه برات میزارم
من نیاز داشتم اکروبار ردر را چک کنم این کد اکروبات ردر را چک میکنه
با یکم تغییر در همین کد به خواسته ات میرسی

try
{
Microsoft.Win32.RegistryKey adobe = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("Software").OpenSubKey("Adobe");
if (adobe != null)
{
Microsoft.Win32.RegistryKey acroRead = adobe.OpenSubKey("Acrobat Reader");
if (acroRead != null)
{
string[] acroReadVersions = acroRead.GetSubKeyNames();
string a = "The following version(s) of Acrobat Reader are installed: ";
string b = "";
foreach (string versionNumber in acroReadVersions)
{
b += versionNumber;
}
// MessageBox.Show(a + b);

}
else
{
MessageBox.Show("For see PDF you need for \"Adobe Acrobat Reader\"\r\nPlease install and try again !", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}


}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}


دوست عزیزم اگه دات نت فریم ورک نصب نباشه که همین کدم اجرا نمیشه

morteza_mt5
سه شنبه 24 اردیبهشت 1392, 12:20 عصر
دوست من اینکه تو برنامه چک کنه به نظر بنده غیر ممکنه . چون اگه دات نت نباشه اصلا برنامه بالا نمیاد .
شاید بتونی قبلش با یه برنامه دیگه مثلا با دلفی رجیستری رو چک کنی که اگه نصب بود حالا برنامه شما بالا بیاد . وا گه نه یه کار دیگه بکنه .
به این لینک یه سر بزن
http://www.codeproject.com/Articles/18574/Is-NET-Framework-installed-on-this-machine

mahdad sepah
سه شنبه 24 اردیبهشت 1392, 12:24 عصر
من موندم شرکت پرند پس چه جوری این کارو انجام داده؟
اگه نصب نباشه خیلی شیک میاد میگه نصب نیست برای نصب کلیک کن اگرم نصب باشه که خود نرم افزار بالا میاد

c-sharp_South
سه شنبه 24 اردیبهشت 1392, 12:37 عصر
منم خیلی دوست دارم این موضوع به نتیجه برسه !
میتونه به کمک تمام برنامه نویس های سی شارپ بیاد.
ممنون میشم کسایی که اطلاعات دارن کمک کنن این تاپیک دقیقا به نتیجه برسه و حل بشه ...

hessam2003
سه شنبه 24 اردیبهشت 1392, 13:01 عصر
سلام.
دوست عزیز شما اگر از install sheild استفاده می کنید قسمتی به نام Pakaging داره اونجا میتونید .net freamwork. را تیکشو فعال کنید اون موقع اگر روی سیستم طرف نصب نباشه خودش خودکار اول net freamwork. را نصب میکنه.
اگرم که میخوایید دستی این کارو انجام بدید میتونید از تابع Shell به صورت مجازی freamwork را چک کنید و اگر نبود نصبش کنه و بعد بره سراغ اجرای برنامتون.
موفق باشید.

mahdad sepah
سه شنبه 24 اردیبهشت 1392, 13:24 عصر
بچه ها از اینکه در این بحث شرکت میکنید ممنونم ازتون ولی خواهش میکنم کامل بخونید من میخوام برنامه ام اتو ران اجرا بشه ستاپ نمییخوام

aliasghar2
سه شنبه 24 اردیبهشت 1392, 13:50 عصر
من فکر می کنم که شما می خواهید برنامتون رو پرتابل کنید و نیازی به نصب نداشته باشد
باید از نرم افزار های موجود برای این جور کارا استفاده کنید که با یکمی جستجو می تونی پیدا کنی
قبلا اینو من به شما گفته بودم اما دقت نکرده بودید

در ضمن اتوران پرند با دات نت نوشته نشده

شما باید اول باید برنامتون رو به وسیله نرم افزار زنوکد با دات نت ترکیب کنید که همونطور که دوستان دیگه گفتند باعث میشه حجمش بره بالا
بعد شما می تونید برنامتون رو با نرم افزار winrar پرتابل کنید

mehrdad1991h
سه شنبه 24 اردیبهشت 1392, 13:59 عصر
بچه ها از اینکه در این بحث شرکت میکنید ممنونم ازتون ولی خواهش میکنم کامل بخونید من میخوام برنامه ام اتو ران اجرا بشه ستاپ نمییخوام

بابا کاری نداره که ... :لبخند:
خیلی راحت میشه این موضوع را چک کرد (از نظر من!)
ببین با جاوا اسکریپت میشه با دلفی میشه با سی میشه و..... حالا کاری نداریم
این را هم داشته باش ممکنه به کارت بیاد [+ (http://social.msdn.microsoft.com/Forums/en-US/vbgeneral/thread/bd08f6ff-c090-409d-83fd-3fb3ea6deb75)] (تیکه به درد بخورش :javascript:alert(navigator.userAgent) و کد هایی که برای شناسایی نسخه های دات نت هست)

خوب پیشنهاد من
برنامه ی اصلی را به صورت DLL درش بیار
یه برنامه دیگه با زبان C باز کن
DLL که ساختی را داخلش قرار بده بعد

تو فرم لودش 2 تا نکته را باید چک کنی
اگر دات نت نصب نیست پیغام به کاربر نشون بدهد و با کلیکی که کاربر میکنه بره فایل نصب دات نت را اجرا کنه و....
در صورتی هم که نصب هست فایل DLL را باز کنه و به کاربر نشون بدهد

خوب با این کارا کاربر هم هیچی نمیفهمه و شما هم یک فایل اجرایی دادی به کاربرت فقط

دیگه مخفی کردن یک فرم و نشون ندادنش در تسک بار و اینا را هم که بلدی ؟ این کارا را هم برای فرم برنامه ای که به زبان سی مینویسی انجام میدی که چیزی مشخص نباشه....

اوکی هست الان ؟

mahdad sepah
سه شنبه 24 اردیبهشت 1392, 14:29 عصر
بابا کاری نداره که ... :لبخند:
خیلی راحت میشه این موضوع را چک کرد (از نظر من!)
ببین با جاوا اسکریپت میشه با دلفی میشه با سی میشه و..... حالا کاری نداریم
این را هم داشته باش ممکنه به کارت بیاد [+ (http://social.msdn.microsoft.com/Forums/en-US/vbgeneral/thread/bd08f6ff-c090-409d-83fd-3fb3ea6deb75)] (تیکه به درد بخورش :javascript:alert(navigator.userAgent) و کد هایی که برای شناسایی نسخه های دات نت هست)

خوب پیشنهاد من
برنامه ی اصلی را به صورت DLL درش بیار
یه برنامه دیگه با زبان C باز کن
DLL که ساختی را داخلش قرار بده بعد

تو فرم لودش 2 تا نکته را باید چک کنی
اگر دات نت نصب نیست پیغام به کاربر نشون بدهد و با کلیکی که کاربر میکنه بره فایل نصب دات نت را اجرا کنه و....
در صورتی هم که نصب هست فایل DLL را باز کنه و به کاربر نشون بدهد

خوب با این کارا کاربر هم هیچی نمیفهمه و شما هم یک فایل اجرایی دادی به کاربرت فقط

دیگه مخفی کردن یک فرم و نشون ندادنش در تسک بار و اینا را هم که بلدی ؟ این کارا را هم برای فرم برنامه ای که به زبان سی مینویسی انجام میدی که چیزی مشخص نباشه....

اوکی هست الان ؟
بابت جوابت ممنون دوست عزیزم
ولی یه کوچولو خیلی کلی توضیح دادی من دقیق نفهمیدم
الان من با c چی بنویسم دقیقا؟

aliasghar2
سه شنبه 24 اردیبهشت 1392, 14:53 عصر
این لینک رو مطالعه کن صرر نداره
http://www.banaie.ir/%D8%B1%D9%88%D8%B2%D8%A7%D9%86%D9%87/%D8%AA%D8%AE%D8%B5%D8%B5%DB%8C-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1/%D9%85%D8%AC%D8%A7%D8%B2%DB%8C-%D8%B3%D8%A7%D8%B2%DB%8C-%D8%A7%D8%AC%D8%B1%D8%A7%DB%8C-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%87%D8%A7-%D8%A8%D8%AF%D9%88%D9%86-%D9%86%DB%8C%D8%A7%D8%B2-%D8%A8%D9%87-%D9%86%D8%B5%D8%A8-%D9%BE%DB%8C%D8%B4-%D9%86%DB%8C%D8%A7%D8%B2-%D9%87%D8%A7.html

mehrdad1991h
سه شنبه 24 اردیبهشت 1392, 19:26 عصر
بابت جوابت ممنون دوست عزیزم
ولی یه کوچولو خیلی کلی توضیح دادی من دقیق نفهمیدم
الان من با c چی بنویسم دقیقا؟

ببین زبان برنامه نویسی C دات نت نیست به همین خاطر میتونه چک کنه که دات نت نصب هست یا نه
شما یه پروژه ی C باز کن در فرم اصلی 2 تا کلید و یک لیبل بگذار (بقیه ظاهرش با خودت)
بعد در رویداد فرم لود کلیک کن که بعدش وارد محیط کد نویسیش میشوی
خوب اینجا اول از همه باید 1 کار خیلی مهم قبل از هر کاری انجام دهی (باید پروژه ی تموم شده ات را به صورت رفرنس به پروژه ی فعلای که داریم با زبان C مینویسیم اضافه کنید)
بعد از این که رفرنس را اضافه کردید در رویداد فرم لود شروع میکنی به کد نویسی
حالا چی باید بنویسی ؟

در رویداد فرم لود به زبان C باید بنویسی....
1- اول از همه فرم را در تسکبار مخفی میکنی
2- بعد بری ریجستری را باز کنی و چک کنی که ایا دات نت نصب هست یا خیر (یه سرچ بکن نمونه برای این که ایا نصب هست یا خیر زیاده لینکی هم که من گذاشتم میتونه مفید باشه برای چک شدن نصب دات نت ) (یک متغیر بولین قرار بده که اگر نصب بود True و اگر نصب نبود false بشود )
نکته : باید تمام ورژن های دات نت را چک کنی یا حداقل اون ورژنی که خودت بهش نیاز داری (هر ورژنی در ریجستری کد و... فرق داره تو اون لینکی که گذاشتم کد های تمام ورزن ها را میتونی ببینی)
خوب الان نتیجه ی چک کردن یا true بوده که یعنی نصبه یا false که یعنی نصب نیست
3- اگر true بود اون DLL که به صورت رفرنس ایجاد کردی را نمایش میدی در غیر اینصورت همین فرمی که توشی را نمایش میدهی که بگی دات نت نصب نیست و لطفا کلیک کنید تا نصب شود تا هم کلیک میکنه کاربر فایل نصب دات نت را اجرا میکنی و... اوکی ؟