Skip to content
⌘ NSIS Forum Archive

InstallOptionsEx 2.4.5 beta 1 unofficial Released

57 posts

kichik#
With so many changes, wouldn't it be nicer to arrange it under http://sf.net/projects/nsis-ioex?
SuperPat#edited
False translation, I wanted to say:
Can you look at that?

I have found a third problem with DIRREQUEST Dialog:
When you click on it, It doesn't go to the directory indicated in the Text control.

I have reuploaded the lastest dev version with a little fix (but we must check it):
Sometime, the plugin crach when it tries to show the DIRREQUEST Dialog.
Sheik#
Hi SuperPat,

This one is pretty tough...

I can "capture" the drawing by going to:

case WM_DRAWITEM:

And changing:

if(pField->nType == FIELD_LABEL || pField->nType == FIELD_LINK) {

to:

if(pField->nType == FIELD_LABEL || pField->nType == FIELD_LINK || pField->nType == FIELD_BUTTON) {

But it doesn't really draw it right...
But we do get "..." which is more than we got before...

Hopefully this can help you track it down more.
Sheik#
Hi kichik,

Yes.
Quite honestly, I am hoping this thread dies soon, that means all the bugs that SuperPat and I are finding are fixed. =)

We aren't actually doing any new developement on IoEx...
(At least, I sure am not).

We are just trying to clean up most of the bugs.
Once thats done, this thread will go away.

Scott
Sheik#
SuperPat,
BTW, there is obviously an interaction problem with it and your skinnedbutton plugin.
If I yank the skinnedbutton from your test, the buttons get drawn right.
Maybe the fix here is as simple as sending a message to the skinnedbutton to redraw itself...
(This obviously should be happening automagically, but maybe thats the bug, that IOEX isn't sending it.)

Scott
Sheik#
SuperPat,
Another test I did.
Get rid of all your color changing stuff from the test2 script.

Even with doing that, the 2 pushbuttons don't show up.

The only way I can get them to show up, is if I get rid of
the skinnedbutton calls, so that the regular buttons get used.

Scott
SuperPat#
not nothing alas...

And you for the problem of the transparent icons on a coloured background where the SetCtlColors function doesn't have any effects?
kichik#
Originally posted by Sheik
Hi kichik,

Yes.
Quite honestly, I am hoping this thread dies soon, that means all the bugs that SuperPat and I are finding are fixed. =)

We aren't actually doing any new developement on IoEx...
(At least, I sure am not).

We are just trying to clean up most of the bugs.
Once thats done, this thread will go away.

Scott
That too should be on the project page. It's the centralized place for ioex development. I'm sure deguix will not mind giving you access so you can upload the fixes there as well.
deguix#
That too should be on the project page. It's the centralized place for ioex development. I'm sure deguix will not mind giving you access so you can upload the fixes there as well.
Unbelievable as it may be seen, I thought about this yesterday, but I forgot about it. I now assigned full rights to SuperPat.

I can also help you with development, but sincerely, I can't stand coding in C++...
SuperPat#
Thank you but just a detail, my login on sourceforge is superpat45, not superpat (it was already taken).
deguix#
I updated the project file releases. Now it shows all SuperPat's versions merged into beta package (2.4.5 beta 1) and alpha package (2.4.5 beta 2 alpha 1-6 -> I named your builds as alphas there). Also, I updated the InstallOptionsEx page at the nsis.sf.net to reflect this. I don't like to update CVS when there's only few people working on project (yields 1 as I still don't want to come back to development). If there's anything wrong with all this, just ask me.
SuperPat#
New development version:

Changelog (2.4.5 beta 2 alpha 7 7/Apr/2007):
# From now, it is an official version.
# Added: setFocus dll function: Set the focus on the specified control in parameter. It was designed to be used in your leave script functions. Prefer to use the FOCUS flag if you can.
# The compilation option USE_FOPEN_S was renamed in USE_SECURE_FUNCTIONS (in VisualStudio 2005 only)).
# Fixed: Applied IO Patch that kill some compiler warnings under Linux and mingw32.
# Fixed: Use installer's name for message boxes (IO patch #1661677).
# Size optimization: msdn now says SHGetMalloc returns the same allocator CoTaskMemFree uses and a little debugging backs this even on Windows 95.


Known bugs:
_ Transparent Icons are not transparent in the page...
_ Button are not drawn if I use my SkinnedButton plugin... whereas that work very well with InstallOptions
_ When you use the DIRREQUEST Dialog, It doesn't go to the directory indicated in the Text control.
See the test2.nsi Example


Download
SuperPat#
New development version:

Changelog (2.4.5 beta 2 alpha 8 20/Apr/2007):
# Added: New control type VLine and HLine (IO patch #1683189).

Known bugs:
_ Transparent Icons are not transparent in the page...
_ Button are not drawn if I use my SkinnedButton plugin... whereas that work very well with InstallOptions
_ When you use the DIRREQUEST Dialog, It doesn't go to the directory indicated in the Text control.
See the test2.nsi Example


Download
Yathosho#
will there ever be drag&drop support for file and directory dialogs (i havn't checked "your" version yet)?
SuperPat#
New development version:

Changelog (2.4.5 beta 2 alpha 9 12/May/2007):
* Fixed: A problem in the DIRREQUEST that doesn't go to the folder indicated in the RefFields State or in its State key.
* Disable the X button for InstallOptions pages as well when CancelEnabled is used.

Known bugs:
* Transparent Icons are not transparent in the page...
* Button are not drawn if I use my SkinnedButton plugin... whereas that work very well with InstallOptions


Download
Afrow UK#
I've updated the link in the first post. In my experience people tend to click the first link for a download in a topic without checking if it is the latest.

Stu
Animaether#
I just realized that, as of NSIS 2.42, InstallOptionsEx will fail if used as a drop-in replacement of the existing InstallOptions. The new MUI header no longer uses the /NOUNLOAD flags, thus causing crashes with InstallOptionsEx which has not been updated to take advantage of the new API.

I understand there will be no further updates to InstallOptionsEx, and moving to nsDialogs is encouraged, just dropping this note here (will also adjust the wiki) for the record.
SuperPat#
I will release a new version 2.4.5 b2 (not alpha) of the plugin this week-end with a lot of bug fixes.
Two versions of the DLL will be released, a legacy version and a version using the new NSIS plugin API. The last one can be use as replacement of InstallOptions for ModernUI with NSIS 2.42 and more.
SuperPat#
InstallOptionsEx version 2.4.5 beta 3 released

After seven years since the last beta version, this is the new InstallOptionsEx version 2.4.5 beta 3.

A big thank to Tallmaris (Leandro Tramma) for the initial unicode compatibility.

Changelog:
  • Added: Full unicode support;
  • Added: make_unicode dll function for Unicode build: Convert an ANSI INI file to the UNICODE charset;
  • Applied patches from the original InstallOptions source repository.


Download
Nutzzz#
I got excited playing with Anders' SysCompImg plugin which allows us to resize the checkboxes on the components page. However, I need a custom treeview for my installer, so I need to use InstallOptions or EmbeddedLists. Of course, these don't support High DPI. I was wondering whether you, @SuperPat, were willing to take a look at that for IOex?

Whatever the answer, I'd like to also request a couple of other features for treeview while I'm at it:

* Support for specifying icons to use at the various levels of the treeview, like EmbeddedLists
* One or both of the following:
- For non-checkbox mode, allow a checkbox-style state to specify bold/expanded (alternatively, allow expansion of all items by default and a way to specify that a given level of the treeview is bolded)
- For checkbox mode, allow a selection of the text in checkbox mode to optionally trigger the checkbox (or at least allow it to trigger a NOTIFY event)
Anders#
I might be able to let you set the checkboxes for any listview/treeview you want as long as the state images are in the same order as the NSIS checkbox bitmaps.
Nutzzz#
@Anders: Yes, InstallOptions and EmbeddedLists both use the standard checkbox layout, but unfortunately checkboxes are only part of the problem.

In IOex's case, the lines of text are crowded together and overlapping. EmbeddedLists doesn't have that problem. However, both have the problem of tiny expand/collapse buttons, checkboxes, and/or icons.
almulder#
Need some help with InstallOptionsEx Validation. In InstallOptions we use Flags=Notif

Need some help with InstallOptionsEx Validation. In InstallOptions we use Flags=Notify and then we did somehting like this in the function

  ReadINIStr $0 "$PLUGINSDIR\test.ini" "Settings" "State"
StrCmp $0 0 validate ; Next button?
StrCmp $0 2 supportx ; "Install support for X"?
StrCmp $0 9 clearbtn ; "Clear" button?
StrCmp $0 11 droplist ; "Show|Hide" drop-list?
Abort ; Return to the page
But in InstallOptionsEx they say they did away with it in favor of the new method.

This is from the InstallOptionsEx Readme file:
Step 5: Validate the Output
If you want to validate the input on the page, for example, you want to check whether the user has filled in a textbox, use the leave function of the Page command and Abort when the validation has failed:
Function ValidateCustom

ReadINIStr $R0 "$PLUGINSDIR\test.ini" "Field 1" "State"
StrCmp $0 "" 0 +3
MessageBox MB_ICONEXCLAMATION|MB_OK "Please enter your name."
Abort

FunctionEnd

Step 6: Return Value
After you have called the DLL, InstallOptionsEx adds one string to the stack, with one of the following values:
success - The user has pressed the Next button
back - The user has pressed the Back button
cancel - The user has pressed the Cancel button
error - An error has occurred, the dialog cannot be displayed.
Usually, you don't need to check this value, but you still have to remove it from the stack (have a look at the example above).
You only have to check this value if you need something really special, such as doing something when the user pressed the Back button.
Can someone help me with figuring out new method? If you look at the code file below there is an old and new section and in the new section you will see what I am trying to do. Need help with the code.
Here is a ini file and code file:

ini file

[Settings]
NumFields=5

[Field 1]
Type=Label
Left=160
Right=235
Top=9
Bottom=18
Text="DropDown 1"
txtAlign=Center


[Field 2]
Type=DROPLIST
ListItems=Option 1a|Option 1b|Option 1c
State=
Flags=
Left=160
Right=235
Top=18
Bottom=25

[Field 3]
Type=Label
Left=240
Right=295
Top=9
Bottom=18
Text="DropDown 2"
txtAlign=Center


[Field 4]
Type=DROPLIST
ListItems=Option 2a|Option 2b|Option 2c
State=
Flags=
Left=240
Right=295
Top=18
Bottom=28

[Field 5]
Type=Button
Flags=NOTIFY
State=
Text="More Info"
Left=200
Right=250
Top=125
Bottom=140
txtAlign=Center
code file

!include WinVer.nsh
!include LogicLib.nsh
!include x64.nsh
!include FileFunc.nsh
!include MUI2.nsh
!include WinMessages.nsh
!include InstallOptions.nsh
!include Sections.nsh
!include nsDialogs.nsh

!define MUI_HEADERIMAGE

!define TEMP1 $R0 ;Temp variable

Page custom ShowCustom LeaveCustom ;Custom page. InstallOptions gets called in SetCustom.
!insertmacro MUI_LANGUAGE "English"

Function .onInit
InitPluginsDir
File /oname=$PLUGINSDIR\pagesetup.ini "pagesetup.ini"
FunctionEnd


Function ShowCustom
InstallOptionsEx::initDialog "$PLUGINSDIR\pagesetup.ini"
Pop $0
InstallOptionsEx::show
Pop $0
FunctionEnd


#Old Method
/*
Function LeaveCustom
ReadINIStr $0 "$PLUGINSDIR\pagesetup.ini" "Settings" "State"
StrCmp $0 0 validate ; Next button?
StrCmp $0 5 Infobtn ;
Abort ; Return to the page
Infobtn
MessageBox MB_OK|MB_USERICON|MB_TOPMOST "Infobtn Pressed"
Abort ; Return to the page

validate:
MessageBox MB_OK|MB_USERICON|MB_TOPMOST "Next Pressed"
#Some Code to check if Field 2 and Field 4 have something selected
Abort
FunctionEnd
*/

#New Method
Function LeaveCustom
#Not sure correct code

#If Back Btn Pressed goto backbtn
#If Cancel Btn Pressed goto cancelbtn
#If Next Btn Pressed goto nextbtn
#If Info btn Press goto infobtn

backbtn:
MessageBox MB_OK|MB_USERICON|MB_TOPMOST "Backbtn Pressed"
Abort

cancelbtn:
MessageBox MB_OK|MB_USERICON|MB_TOPMOST "Cancelbtn Pressed"
Abort

nextbtn:
MessageBox MB_OK|MB_USERICON|MB_TOPMOST "Nextbtn Pressed"
Abort

infobtn:
MessageBox MB_OK|MB_USERICON|MB_TOPMOST "Infobtn Pressed"
Abort

FunctionEnd

Section

SectionEnd