Код:

Caption "Диалоговоое окно выбора файлов"
OutFile "OpenFile_Test.exe"
SilentInstall silent
!define OFN_READONLY 0x00000001
!define OFN_OVERWRITEPROMPT 0x00000002
!define OFN_HIDEREADONLY 0x00000004
!define OFN_NOCHANGEDIR 0x00000008
!define OFN_SHOWHELP 0x00000010
!define OFN_ENABLEHOOK 0x00000020
!define OFN_ENABLETEMPLATE 0x00000040
!define OFN_ENABLETEMPLATEHANDLE 0x00000080
!define OFN_NOVALIDATE 0x00000100
!define OFN_ALLOWMULTISELECT 0x00000200
!define OFN_EXTENSIONDIFFERENT 0x00000400
!define OFN_PATHMUSTEXIST 0x00000800
!define OFN_FILEMUSTEXIST 0x00001000
!define OFN_CREATEPROMPT 0x00002000
!define OFN_SHAREAWARE 0x00004000
!define OFN_NOREADONLYRETURN 0x00008000
!define OFN_NOTESTFILECREATE 0x00010000
!define OFN_NONETWORKBUTTON 0x00020000
!define OFN_NOLONGNAMES 0x00040000
#if(WINVER >= 0x0400)
!define OFN_EXPLORER 0x00080000 ; new look commdlg
!define OFN_NODEREFERENCELINKS 0x00100000
!define OFN_LONGNAMES 0x00200000
!define OFN_ENABLEINCLUDENOTIFY 0x00400000
!define OFN_ENABLESIZING 0x00800000
#endif /* WINVER >= 0x0400 */
#if (_WIN32_WINNT >= 0x0500)
!define OFN_DONTADDTORECENT 0x02000000
!define OFN_FORCESHOWHIDDEN 0x10000000
#endif // (_WIN32_WINNT >= 0x0500)
!define OPENFILENAME "(i,i,i,i,i,i,i,i,i,i,i,t,t,i,i,i,t,i,i,t,*v,i,i) i"
Section
Push `${OFN_ALLOWMULTISELECT}|${OFN_EXPLORER}` ;Flags
Push `Откройте файл` ;lpstrTitle
System::Call "*(&t1024) i .r1" ;lpstrFile
System::Call "*(&t25 'NSIS файл (*.nsi, *.nsh)', &t12 '*.nsi;*.nsh', &t9 'Все файлы', &t5 '*.*') i .r2" ;lpstrFilter
System::Call "Kernel32::GetModuleHandle(i) i.s" ;hInstance
Push $HWNDPARENT ;hwndOwner
System::Call "*${OPENFILENAME}(76,s,s,r2,,,0,r1,1024,,,,s,s,_) i.r0"
System::Call "Comdlg32::GetOpenFileName(i r0) i.r3"
StrCmp $3 0 0 +3
MessageBox MB_ICONINFORMATION|MB_OK " Вы не выбрали файл !"
Goto done
System::Call "*$1(&t1024 .r3)"
System::Call "*$0${OPENFILENAME}(,,,,,,,,,,,,,,.r4,_)"
IntOp $4 $4 - 1
StrLen $5 $3
StrCmp $4 $5 +3
MessageBox MB_ICONINFORMATION|MB_OK "Вы выбрали файл: $3"
Goto done
MessageBox MB_ICONINFORMATION|MB_OK "Вы выбрали в каталоге $3 , следующие файлы :"
StrCpy $5 $1
loop:
StrLen $4 $3
IntOp $5 $5 + $4
IntOp $5 $5 + 1
System::Call "*$5(&t1024 .r3)"
StrCmp $3 "" done
MessageBox MB_ICONINFORMATION|MB_OK "$3" ;Цикл для имен выбранных файлов
Goto loop
done:
System::Free $0
System::Free $1
System::Free $2
SectionEnd