EnumCDs plug-in
From NSIS Wiki
(Redirected from Enumerate CD-ROM Drives)
Jump to navigationJump to search
Author: cube (talk, contrib) |
EnumCDs.zip (3 KB)
Plug-in originally written by cube. Tweaked, compiled and uploaded by KiCHiK
Description
This plug-in will return every available CD-ROM drive on the user's machine one by one.
This plug-in requires NSIS 2.
Put EnumCDs.dll in the Plugins directory under the directory where you installed NSIS.
How To Use
To use it call EnumCDs::next with the /NOUNLOAD flag, and keep popping the results, the CD-ROM drive letters, one by one until the plug-in pushes "done". Then call EnumCDs::next once more without the /NOUNLOAD flag, pop the second "done" and you're done.
Example
again: EnumCDs::next /NOUNLOAD Pop $0 StrCmp $0 "error" done DetailPrint $0 StrCmp $0 "done" done again done: EnumCDs::next Pop $0
System plug-in alternative
!include LogicLib.nsh !define /IfNDef DRIVE_CDROM 5 Section System::Call 'KERNEL32::GetLogicalDrives()i.r3' ${ForEach} $2 0 26 + 1 IntOp $1 1 << $2 ${If} $3 & $1 IntOp $1 65 + $2 IntFmt $1 "%c:\" $1 System::Call 'KERNEL32::GetDriveType(tr1)i.r4' ${If} $4 = ${DRIVE_CDROM} DetailPrint "Drive $1" ${EndIf} ${EndIf} ${Next} SectionEnd