Bannan

Full Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Kumga2, ты можешь проверить наличие файла (IfFileExists) если знаешь, где он лежит. Если заданный существует, далее можешь делать с ним что хочешь. Или использовать кастомную функцию для выбора файла: Код: # Функция вызова диалога для выбора файла Function SelFileExe Pop $0 ; Сброс значения в регистр $0 ; Выделяем OPENFILENAME.lpstrFile буфер под полный путь и имя файла, адрес буфера в стек System::Call '*(&t${NSIS_MAX_STRLEN})i.s' ; Выделяем память под структуру OPENFILENAME, адрес структуры в регистр $0 System::Call '*(${OPENFILENAME})i.r0' ; Создаем lpstrFilter структуру с данными фильтра файлов, адрес структуры в регистр $3 System::Call "*(&t26 'Исполняемые файлы (*.exe)', &t6 '*.exe') i .r3" ; Передаем в структуру OPENFILENAME данные System::Call '*$0(${OPENFILENAME})(${OPENFILENAME_SIZE_VERSION_400},$hwndparent,,r3,,,, \ sr1,${NSIS_MAX_STRLEN},,,t"$EXEDIR",t"Выберите файл my_file_name.exe", \ ${OFN_HIDEREADONLY}|${OFN_FILEMUSTEXIST}|${OFN_ENABLEHOOK}|${OFN_EXPLORER}|${OFN_NOCHANGEDIR})' ; Устанавливаем имя файла в буфер lpstrFile System::Call "*$1(&t${NSIS_MAX_STRLEN}'my_file_name.exe')" ; Выполняем вызов функции GetOpenFileName выбора файла System::Call 'COMDLG32::GetOpenFileName(ir0)i.r2' ${If} $2 <> 0 System::Call "*$1(&t${NSIS_MAX_STRLEN}.r2)" StrCpy $MyPathInput $2 ${EndIf} ; Освобождаем память System::Free $1 System::Free $0 FunctionEnd | В этой функции "my_file_name.exe" - имя исполняемого файла, который нужно выбрать. Для других типов файлов измени функцию соответствующим образом. |