1. State=C:\Program Files\default_install_dir, can I use some variable like $INSTDIR so it's not dependent of the C drive?
You have to write the folder name to the INI file with WriteINIStr everytime you need to show the page.
2. How do I show 'Browse' inside the browse button? Now it's showing only "..."
It's not possible only with InstallOptions. You would need to use
SendMessage and use
System plugin to call
SetWindowLong to set text and adjust the browse button.
1. There is a plugin called InstallOptionsEx (see my signature) which enables you to just write a common variable ($0-$9, $R0-$R9) to the INI file. The plugin automatically gets its contents when you reserve or show a page. (I plan to put the support for $INSTDIR in the future)
2. InstallOptionsEx also have the DirRequest control separated into
Text +
Button w/
DIRREQUEST flag so you can customize every aspect of the two controls, even use different notifications for each one.