我想要做的是让用户浏览文件系统的某个特定值,如果文件名匹配则继续。 具体而言,我希望用户找到那里的PHP可执行文件,也是我想的目录(不知道我将如何从完整路径中提取目录)。NSIS选择一个文件
-1
A
回答
4
这可以通过自定义nsDialogs页面和nsDialogs :: SelectFileDialog很容易地实现,这是专门为此目的而设计的。
http://nsis.sourceforge.net/Docs/nsDialogs/Readme.html#ref-selectfiledialog
8
您可以用自定义页面做到这一点:
!include nsDialogs.nsh
!include FileFunc.nsh
Page Custom MyPageCreate MyPageLeave
Var PhpPath
Function MyPageLeave
${NSD_GetText} $PhpPath $0
${GetFileName} $0 $1
${IfNot} ${FileExists} $0
${OrIf} $1 != "php.exe"
MessageBox mb_iconstop "You must locate php.exe to continue!"
Abort
${Else}
#php path is in $0, do something with it...
${EndIf}
FunctionEnd
Function MyPageComDlgSelectPHP
Pop $0
${NSD_GetText} $PhpPath $0
nsDialogs::SelectFileDialog open $0 "php.exe|php.exe"
Pop $0
${If} $0 != ""
${NSD_SetText} $PhpPath $0
${EndIf}
FunctionEnd
Function MyPageCreate
nsDialogs::Create 1018
Pop $0
${NSD_CreateText} 0 5u -25u 13u "$ProgramFiles\PHP\php.exe"
Pop $PhpPath
${NSD_CreateBrowseButton} -23u 4u 20u 15u "..."
Pop $0
${NSD_OnClick} $0 MyPageComDlgSelectPHP
nsDialogs::Show
FunctionEnd
,或者您可以使用目录页:
!include LogicLib.nsh
Var PhpPath
Function .onInit
StrCpy $PhpPath "$ProgramFiles\PHP" ; Default (You could probably do better by checking the registry)
FunctionEnd
PageEx Directory
DirVar $PhpPath
DirVerify leave
PageCallbacks "" PhpPageShow PhpPageLeave
DirText "Select PHP folder" "PHP Folder" "" "Select PHP folder"
PageExEnd
Function PhpPageShow
;Hide space texts
FindWindow $0 "#32770" "" $HWNDPARENT
GetDlgItem $1 $0 0x3FF
ShowWindow $1 0
GetDlgItem $1 $0 0x400
ShowWindow $1 0
FunctionEnd
Function PhpPageLeave
GetInstDirError $0
${If} $0 <> 0
${OrIfNot} ${FileExists} "$PhpPath\php.exe"
MessageBox mb_iconstop "You must locate the php folder to continue!"
Abort
${EndIf}
FunctionEnd
相关问题
- 1. NSIS选择页面
- 2. 如何检查在NSIS中是否选择了一个组件?
- 3. NSIS - 单选框的标签不匹配的一个选择
- 4. 选择一个文件夹或文件
- 5. 基于语言选择的NSIS许可证文件
- 6. NSIS - 验证单选按钮选择
- 7. NSIS选择选项奇数行为
- 8. NSIS - 删除除一个文件以外的所有文件
- 9. 排除一个文件中NSIS文件复制命令(递归)
- 10. NSIS - 单选按钮来选择安装许多程序之一
- 11. OpenFileDialog预先选择一个文件
- 12. 随机选择一个文件
- 13. POST立即选择后一个文件
- 14. Java选择一个文件位置
- 15. 八度选择一个文件?
- 16. 只选择一个JSON文件
- 17. 用SaveFileDialog选择一个文件夹
- 18. 请选择一个文件Codeigniter错误
- 19. 使用宏来选择一个文件
- 20. 崇高文本2代替多重选择从多个选择一个文件在另一个文件
- 21. 用一个文件元素上载多个文件(没有多个选项)。并一次选择一个文件
- 22. NSIS - 我如何在.txt文件上写入用户选择的选项
- 23. VB.net在一个文件夹中选择文件和文件夹
- 24. NSIS配置文件
- 25. NSIS语言选择对话框顶部
- 26. 选择多个文件在文件选择
- 27. MultiFile选择多个文件
- 28. ckfinder选择多个文件
- 29. 如何用一个nsis脚本创建两个exe文件?
- 30. NSIS补丁(一个文件中有多个补丁)
我所期待的一个例子。我经历了很多页面,但我无法弄清楚。 –