PDA

View Full Version : اجرای برنامه فقط از روی CD



earse+erse
شنبه 17 بهمن 1388, 14:45 عصر
سلام
مدیران اگه تکراری بود که فکر نمیکنم باشه حذف نکنین خواهش می کنم:افسرده::بوس::قلب:

__________________________________________________ __________________

چه طوری میتونیم با وی بی 6 یکاری کنیم که برنامه فقط با سی دی بالا بیاد و اصلا طرز کار این جور برنامه ها چیه

و چه طوری می تونیم یه کاری کنیم که سی دی فقط تو X سیستم نصب بشه (بدون نیاز به اتصال به اینترنت و پسورد و ...)

خیلی بهش نیاز دارم
ممنون

parselearn
شنبه 17 بهمن 1388, 16:44 عصر
سوال اول


Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long

Private Sub Form_Load()
Dim TempDrive As String
s = App.Path
s = Left(s, 3)
TempDrive = GetDriveType(s)
If TempDrive = "5" Then
MsgBox "Ready"
Else
MsgBox "UnReady"
End
End If
End Sub

البته قول نميدم. اگر ايميج گرفتن اجرا نشه

lordarma
شنبه 17 بهمن 1388, 17:15 عصر
سلام
مدیران اگه تکراری بود که فکر نمیکنم باشه حذف نکنین خواهش می کنم:افسرده::بوس::قلب:

__________________________________________________ __________________

چه طوری میتونیم با وی بی 6 یکاری کنیم که برنامه فقط با سی دی بالا بیاد و اصلا طرز کار این جور برنامه ها چیه

و چه طوری می تونیم یه کاری کنیم که سی دی فقط تو X سیستم نصب بشه (بدون نیاز به اتصال به اینترنت و پسورد و ...)

خیلی بهش نیاز دارم
ممنون


برای اینکه برنامه در X سیستم نصب بشود باید از سریال اختصاصی استفاده کنید،
یعنی اینکه کاربر به یک طریقی با پشتیبانی تماس بگیرد و سریال را دریافت نماید...
ابتدا قسمتی در برنامه قرار بده که شماره هارد یا CPU رو دریافت کنه و شماره به دست آمده را با استفاده از توابعی خاص تغییر بدهد و نمایش بدهد،
کاربر عدد را برای شما می فرستد و شما با توجه به اون عدد،
سریال ورودی را بهش می دهید، به این صورت، سریال هر سیستم اختصاصی خواهد بود و شما می توانید با ثبت اطلاعات در بانک اطلاعاتی که در سرور خود دارید، متوجه بشوید که برنامه در چند سیستم نصب شده است و همچنین می توانید جلوی نصب آن را بگیرید...
شاید کمی گنگ نوشته باشم!!! ، اگر سوالی بود همین جا مطرح کنید...

earse+erse
شنبه 17 بهمن 1388, 17:46 عصر
برای اینکه برنامه در X سیستم نصب بشود باید از سریال اختصاصی استفاده کنید،
یعنی اینکه کاربر به یک طریقی با پشتیبانی تماس بگیرد و سریال را دریافت نماید...
ابتدا قسمتی در برنامه قرار بده که شماره هارد یا CPU رو دریافت کنه و شماره به دست آمده را با استفاده از توابعی خاص تغییر بدهد و نمایش بدهد،
کاربر عدد را برای شما می فرستد و شما با توجه به اون عدد،
سریال ورودی را بهش می دهید، به این صورت، سریال هر سیستم اختصاصی خواهد بود و شما می توانید با ثبت اطلاعات در بانک اطلاعاتی که در سرور خود دارید، متوجه بشوید که برنامه در چند سیستم نصب شده است و همچنین می توانید جلوی نصب آن را بگیرید...
شاید کمی گنگ نوشته باشم!!! ، اگر سوالی بود همین جا مطرح کنید...
نه نه منظور من اون راه نبود من خودم هم اشاره کردم


چه طوری می تونیم یه کاری کنیم که سی دی فقط تو X سیستم نصب بشه (بدون نیاز به اتصال به اینترنت و پسورد و ...)


parselearn عزیز

متشکر ولی ممکنه سورسشو بزاری یه توضیحی هم درباره نرم افزار که با سی دی بالا میاد و ایمیج گرفتن بزاری؟

earse+erse
شنبه 17 بهمن 1388, 17:55 عصر
راه پیشنهادی من اینه:

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

lordarma
شنبه 17 بهمن 1388, 18:08 عصر
راه پیشنهادی من اینه:

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


فرض کن سیستم اش رایتر نداشته باشه!!!
همون یکبار کافیه تا برنامه ات پخش بشود...

parselearn
شنبه 17 بهمن 1388, 18:49 عصر
سورس همون بالايي درسته
اين پروژه

Mr'Jamshidy
شنبه 17 بهمن 1388, 18:55 عصر
من یک برنامه دیدم یک که اگر برنامه رو نصب میکردی چه داخل رایتر میزاشتی یا سی دی رام فرقی نداشت 3 بار بیشتر نصب نمیشد حتی در یک سیستم

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

-------
یا حق

ویرایش:
راستی یادم رفت بگم--
برنامه به راحتی هم رایت میشد اما بعد از نصب هیچ کدوم از فایل های داخل سی دی کار نمی کرد ((به هیچ عنوان))

parselearn
شنبه 17 بهمن 1388, 19:10 عصر
من از پروژه ايميج تهيه كردم
برنامه اجرا شد
اينم ضعف GetDriveType هست.

يعني شما حتي اگر بتونيد جلوي كپي رو بگيريد (حافظه رو پاك كنيد. البته اگر برنامه تون اتوران اجرا بشه (و جلوي اتوران رو نگرفته باشند))

نمي تونيد جلوي ايميج رو بگيريد

lordarma
شنبه 17 بهمن 1388, 21:04 عصر
من یک برنامه دیدم یک که اگر برنامه رو نصب میکردی چه داخل رایتر میزاشتی یا سی دی رام فرقی نداشت 3 بار بیشتر نصب نمیشد حتی در یک سیستم

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

-------
یا حق

ویرایش:
راستی یادم رفت بگم--
برنامه به راحتی هم رایت میشد اما بعد از نصب هیچ کدوم از فایل های داخل سی دی کار نمی کرد ((به هیچ عنوان))

امکانش وجود دارد که مکانیزم آن سی دی به گونه ای باشد که پس از هر بار نصب آسیبی به قسمت خاصی از سی دی بزند و پس از چند بار نصب اون قسمت از سی دی معیوب شود؟ (منظورم یه چیزی شبیه خش هست):متفکر:

earse+erse
شنبه 17 بهمن 1388, 22:23 عصر
من یک برنامه دیدم یک که اگر برنامه رو نصب میکردی چه داخل رایتر میزاشتی یا سی دی رام فرقی نداشت 3 بار بیشتر نصب نمیشد حتی در یک سیستم

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

-------
یا حق

ویرایش:
راستی یادم رفت بگم--
برنامه به راحتی هم رایت میشد اما بعد از نصب هیچ کدوم از فایل های داخل سی دی کار نمی کرد ((به هیچ عنوان))
منم یه همچین سی دی داشتم که به این فکر افتادم آخه کار باحالیه.

هر کی فهمید این گونه سی دی ها چه طوری کار میکنن به ما هم بگه

earse+erse
شنبه 17 بهمن 1388, 22:29 عصر
من از پروژه ایمیج تهیه کردم
برنامه اجرا شد
اینم ضعف GetDriveType هست.

یعنی شما حتی اگر بتونید جلوی کپی رو بگیرید (حافظه رو پاک کنید. البته اگر برنامه تون اتوران اجرا بشه (و جلوی اتوران رو نگرفته باشند))

نمی تونید جلوی ایمیج رو بگیرید

خوب با یه قفلی چیزی میشه جلوی ایمیج گرفتن رو گرفت

این فایلی که شما ضمیمه کردین برای بالا آمدن نرم افزار با سی دی، کار نمی کنه؟

parselearn
یک شنبه 18 بهمن 1388, 02:20 صبح
خوب با یه قفلی چیزی میشه جلوی ایمیج گرفتن رو گرفت

این فایلی که شما ضمیمه کردین برای بالا آمدن نرم افزار با سی دی، کار نمی کنه؟


منظورتون رو نفهميدم
كار كه مي كنه

فقط بايد جلوي ايميج گرفتن رو بگيريد

earse+erse
یک شنبه 18 بهمن 1388, 14:03 عصر
parselearn (http://barnamenevis.org/forum/member.php?u=48732) عزیز دستت درد نکنه

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

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

اینی که فهمیدم درسته؟

این ضمیمه رو باید تو کدوم فایل بزارم؟ تو اون یکی که تو سی دی بود یا اون یکی که تو هارد بود؟

متشکر

parselearn
دوشنبه 19 بهمن 1388, 09:18 صبح
Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long

Private Sub Form_Load()
Dim TempDrive As String
s = App.Path
s = Left(s, 3)
TempDrive = GetDriveType(s)
If TempDrive = "5" Then
MsgBox "Ready"
Else
MsgBox "UnReady"
End
End If
End Sub


اين كد چك مي كنه كه آدرسي كه برنامه در اون اجرا شده بايد در يك CD or Image باشه

اگر CD بود پيغام Ready رو ميده در غير اين صورت پيغام UnReady و خارج ميشه

در نتيجه بايد در فايلي كه درون CD هست قرار داده بشه

earse+erse
دوشنبه 19 بهمن 1388, 19:08 عصر
مرسی از دوست عزیزمون بخاطر پاسخ های کاملش

حالا یه بحث دیگه
همه ی شما اسم برنامه VisualDrive رو شنیدید که درایو مجازی می سازه. چی کار می تونیم بر علیه اون انجام بدیم؟

Babak.Hassanpour
دوشنبه 19 بهمن 1388, 21:40 عصر
همه ی شما اسم برنامه VisualDrive رو شنیدید که درایو مجازی می سازه. چی کار می تونیم بر علیه اون انجام بدیم؟
virtual به معنی مجازی نه visual (بصری)

هیچ کار

earse+erse
سه شنبه 20 بهمن 1388, 14:25 عصر
virtual به معنی مجازی نه visual (بصری)


حرف شما درسته با VB6 قاطی کردم:گیج:


هیچ کار

چه قدر صریح!:اشتباه::افسرده::گریه::چ شمک::متفکر::لبخندساده:

earse+erse
سه شنبه 20 بهمن 1388, 14:29 عصر
آقا باز یه چیز دیگه

حالا نرم افزار ما که تو هارد نصبه باید برنامه تو سی دی (برنامه اصلی) رو باز کنه!
سوال اینه که چه جوری این کاررو انجام بده چون همیشه سی دی رام درایو G نیست و واسه سیستم های دیگه فرق می کنه.

Babak.Hassanpour
سه شنبه 20 بهمن 1388, 14:54 عصر
بفرما دوست من.فقط قبلش یه دکمه روی فرم بزار.


Option Explicit

Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" _
(ByVal nDrive As String) As Long

Private Declare Function GetLogicalDriveStrings Lib "kernel32" _
Alias "GetLogicalDriveStringsA" _
(ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long

Const DRIVE_CDROM& = 5

Public Function GetDriveStrings() As String
' Wrapper for calling the GetLogicalDriveStrings api

Dim result As Long ' Result of our API calls
Dim strDrives As String ' String to pass to API call
Dim lenStrDrives As Long ' Length of the above string

' Call GetLogicalDriveStrings with a buffer size of zero to
' find out how large our stringbuffer needs to be
result = GetLogicalDriveStrings(0, strDrives)

strDrives = String(result, 0)
lenStrDrives = result

' Call again with our new buffer
result = GetLogicalDriveStrings(lenStrDrives, strDrives)

If result = 0 Then
' There was some error calling the API
' Pass back an empty string
' NOTE - TODO: Implement proper error handling here
GetDriveStrings = ""
Else
GetDriveStrings = strDrives
End If
End Function

Private Sub Command1_Click()
Dim strDrives As String

' Find out what drives we have on this machine
strDrives = GetDriveStrings()

If strDrives = "" Then
' No drives were found
MsgBox "No Drives were found!", vbCritical
Else
' Walk through the string and check the type of each drive
' displaying any cd-rom drives we find
Dim pos As Long
Dim drive As String
Dim drivetype As Long

pos = 1

Do While Not Mid$(strDrives, pos, 1) = Chr(0)
drive = Mid$(strDrives, pos, 3)
pos = pos + 4
drivetype = GetDriveType(drive)
If drivetype = DRIVE_CDROM Then
MsgBox "CD-ROM found at drive " & UCase(drive)
End If
Loop
End If
End Sub

Babak.Hassanpour
سه شنبه 20 بهمن 1388, 15:09 عصر
اگه کد کوتاهتر هم بخوای هست.فقط اسکریپت ران تایمه.از منوی پروجکت ؛ رفرنس ، microsoft scripting runtime رو تیک بزن


Dim CDPath as String
Private Sub Form_Load()
Dim fso As New Scripting.FileSystemObject
Dim drv As Drive

For Each drv In fso.Drives
If drv.DriveType = CDRom Then
List1.AddItem drv.Path

End If
Next drv
Set drv = Nothing
Set fso = Nothing
End Sub

اولی مطمئن تره

Mr'Jamshidy
سه شنبه 20 بهمن 1388, 21:03 عصر
آقا باز یه چیز دیگه

حالا نرم افزار ما که تو هارد نصبه باید برنامه تو سی دی (برنامه اصلی) رو باز کنه!
سوال اینه که چه جوری این کاررو انجام بده چون همیشه سی دی رام درایو G نیست و واسه سیستم های دیگه فرق می کنه.

یک راه دیگه هم هست

اول از همه که باید Setup برنامت رو خودت بسازی و به Setup فرمان بدی که مسیری که از اونجا ران شده و برنامه رو نصب کرده رو ذخیره کنه

حالا شما میتونی این آدرس رو ضمیمه فایل روی هارد کنی یا در رجیستری یا هر جای دیگه ذخیره کنی

اما من نظرم اینه که روی این کار نکنی چون خیلی پیش پا افتادس و با یک برنامه ساده مثل Nero یا CloneCD و یا ... به سادگی از برنامه Image بگیره و سپس نصب کنه پس دنبال یک راه دیگه باش

-------
یا حق

earse+erse
چهارشنبه 21 بهمن 1388, 22:31 عصر
عزیزانی که به من کمک کردین تا به جوابم برسم از تمام شما بی اندازه متشکرم و دستان شما را از دور می فشارم

فکر کنم تاپیک به نتیجه رسید.

(Babak.Hassanpour (http://barnamenevis.org/forum/member.php?u=10138) :

ای جان پسِر تی بیلا می سِر )