PDA

View Full Version : سوال: تشخیص ویندوز و setup فایل و قرار گیریه dll صحیح



mehrdad1991h
پنج شنبه 14 دی 1391, 11:26 صبح
سلام
2 تا سوال دارم
من یه برنامه دارم که برای ویندوز XP یه نوع DLL و برای 7 هم یه DLL دیگه باید درش استفاده بشه
حالا من چه کنم که وقتی بای این پرروژه با ویژال استودیو فایل ستاپ میسازم بفهمه ویندوز چیه و اگر ایکس پی بود dll ایکس پی و اگر 7 بود dll 7 را بزاره کناره برنامه ؟:افسرده:

و یه مشکل دیگه هم دارم میخوام فایل لاگ برنامه را ذخیره کنم چجوری تو ویژال استودیو ادرس دهی کنم که از کنار برنامه ادرس شروع بشه ؟
مثال
ادرس برنامه:

D:\Program Files\ACHDD
البته ادرس برنامه متغیر هست و یوزر تعیین میکنه
میخوام یه جوری ادرس بدم که ادرس از فلدر ACHDD که همون فلدر برنامه هست شروع بشه !
چه کنم ؟

user6627
پنج شنبه 14 دی 1391, 11:59 صبح
سلام
اکثر نرم افزارها (مثل درایور کارت گرافیک) در هنگام نصب از کاربر نوع سیستم عاملش را میپرسند که بر اساس آن فایل نصب مورد نظر اجرا میشه البته در مورد ستاپ خود ویژوال نمیدونم این امکان باشه ولی در installSheild و امثال اون امکانات قدرتمندی وجود داره.
اما شما میتونید کل برنامه تون را نصب کنید سپس توسط یک فرم جداگانه که شروع کننده برنامه است میتونید نوع سیستم عامل را تشخیص بدید و فایل اجرایی مربوط به آن ویندوز را اجرا کنید. که در این صورت باید برنامه تون را براساس ویندوز تفکیک (پوشه بندی) کنید
و اما در مورد آدرس دهی میتونید از کلاس Environment استفاده کنید مثلا Environment.CurrentDirectory دایرکتوری جاری که نرم افزار از آنجا اجرا میشه را میده. همچنین میتونید به اینصورت آدرسدهی کنید مثلاً
فایل کنار برنامه قرار داره:
".\\File.txt"

فایل در پوشه ای که کنار برنامه است قرار دارد:
".\\Folder\\File.txt"

فایل در پوشه ای بیرون از محل برنامه که کنار پوشه برنامه است قرار دارد
(مثلا این پوشه و پوشه برنامه هردو در مسیر E:\\ Program قرار دارند)
"..\\Folder\\File.txt"

خلاصه که هرچه تعداد نقطه ها بیشتر باشه به مسیر بالاتری اشاره میکنه!

danialafshari
پنج شنبه 14 دی 1391, 12:10 عصر
سلام دوست عزیز
شما می تونی برای بدست آوردن نام ویندوز از کد زیر استفاده کنی:
MessageBox.Show(Environment.OSVersion.Version.ToSt ring());

ولی نام ویندوز رو بر نمیگردونه و می تونی از طریق زیر بفهمی که چه ویندوزی هست:

برخی از نگاشت های عدد نسخه ها به نام واقعی
PlatformID - Major - Minor -> Name
======================
Win32S ,, -> Win3.x
Win32Windows ,,0 - >Win95
Win32Windows ,,10 - >Win98
Win32Windows ,,90 - >WinMe
Win32NT, <5, -> WinNT
Win32NT, 5, 0 -> Win2K
Win32NT, 5, 1 -> WinXP
Win32NT, 6, -> WinVista

می تونی یه تابع براش بنویسی و شرط بزاری و با اطلاعات بالا مقایسه کنی و به جای ورژن نام ویندوز رو نشون بده
موفق باشی