I looked at your sample script and have made a few obervations:
First, look at your FileExtract function:
Function FileExtract
File /a notepad.exe
File /a readme.txt
FunctionEnd
Since you are have not specified the path to the files, the compiler is going to assume the files are in the same directory as your install script. You should include the full path to the files like this:
Function FileExtract
File /a "C:\windows\notepad"
File /a "C:\pathToYourFile\readme.txt"
FunctionEnd
Next, look at this line:
Page instfiles confirm FileExtract ""
I wonder why you use the function FileExtract as your show function. It would be more logical to do away with the FileExtract function and instead put the commands directly in a section block. This way, the user can see the progress of file extraction and would have a progress bar to indicate how far along your installation is.
Third, look at this line:
InstallDir $PROGRAMFILES/Notepad
Couple suggestions here:[list=1][*]Use a backslash instead of a forward slash in the path.[*]Include quotes around the path. I usually do this mostly for good form. But it's also good practice to include quotes just in case you have a path with a space in the name. (ie "C:\program files").[/list=1]
And last, I noticed that you have set $INSTDIR to be "$PROGRAMFILES\Notepad" (from the command above). But, in the extraction function, you have not set an output directory. Insert this before your file commands:
SetOutPath "$INSTDIR"
(Alternatively, you can modify your file commands to include the /oname switch, which allows you to specify the output name/directory for each file. The drawback is that you can't use wild cards with the /oname switch.)
Edit:
Almost forgot:
The likely reason that your next button was disabled on your directory page was that the folder $PROGRAMFILES\notepad did not yet exist when the directory page was displayed. You'll either need to create the directory before displaying the page or (probably better) would be to utilize the "DirVerify leave" option, allowing you to confirm/create the directory before allowing the user to proceed. See the NSIS help for useage.