Archive: Modern UI


Modern UI
Is it just me or is a config using the Modern UI 10 times more confusing?

I mean, compare Examples\example2.nsi and Examples\Modern UI\basic.nsi. There's a world of difference in readability and simplicity.

For example, why does the Modern UI have to specifically keep track of which page it's on? In example2.nsi they're automatically handled by NSIS. Why the change?

Don't get me wrong, I love the Modern UI look and feel, but it just seems to me that it could be implemented in a much simpler fashion.

If I'm missing the forest for the trees, accept my most humble apologies, but please enlighten me.

-Brad


Re: Modern UI
example2.nsi is using the build-in UI. However, the Modern UI has its own custom controls that aren't on the default UI. Therefore, it has to keep track of which page its own, so it can set the text of the custom elements. For most people the default installer is fine. But for more advanced installers, you will have to use more advanced scripts.


We actually had this discussion here: http://forums.winamp.com/showthread....hreadid=106639

and I felt the people behind the new ModernUI really failed to see the point. I think I see their point on how much you can do with it however it is definitely missing the ease that the regular UI has...

I certainly wish it was easier...I'd convert more (all) of my scripts to it, but its simply not worth the time it takes.

If you check out this thread; http://forums.winamp.com/showthread....hreadid=109508
you'll find that someone has created a program to do most of the work for you...its not 100% bug free at this point but it works and may help you out.


Originally posted by Dick4
We actually had this discussion here: http://forums.winamp.com/showthread....hreadid=106639

and I felt the people behind the new ModernUI really failed to see the point. I think I see their point on how much you can do with it however it is definitely missing the ease that the regular UI has...

I certainly wish it was easier...I'd convert more (all) of my scripts to it, but its simply not worth the time it takes.

If you check out this thread; http://forums.winamp.com/showthread....hreadid=109508
you'll find that someone has created a program to do most of the work for you...its not 100% bug free at this point but it works and may help you out.
The Modern UI, to me, is just a wonderful example of what can be done with NSIS 2.0. There isn't another installer available that has the customizability that NSIS has. If you want ease of use and a huge overhead, you can use Inno Setup. But, of course, then you will be stuck with their interface. I don't know how easier you can make an system as customizable as NSIS. If you don't want to use the Modern UI system, use the standard scripts. Joost is improving the Modern UI system almost everyday. It is 100% easier to use than the first revison of it was. Plus, NSIS 2 hasn't been released yet. I suspect some people's frustration could be trying to keep up with the changes. Well once Modern UI become's more stabilized I'm sure you will not see as many changes.

rainwater,

I understand that a custom user interface requires more setup. I'm not complaining about that. I _am_ complainging about the unecessary complexity. Not only do I have to read Basic.nsi, but system.nsh and English.nlf to figure out what's going on.

Why can't one define a UI in generic terms instead of defining each and every page. For example have a UI config file that looks like this:

PageOne_String1: "${NAME} Setup"
PageOne_String2: "This will install ${NAME} on your system."
PageOne_StringN: "More text here"
PageTwo_String1: "Choose your options."
PageTwo_String2: "Blah blah"

That way the user can (re)define his strings in the install config w/out the headache of looking up all of the macros.

Or how about making NSIS require a UI template that defines the basic look and feel (size, colors, string placement etc)?


Brad said it well there...I think it just looks confusing the way it is now...if it was like this, I don't think it would be as bad.

Right now all of it is done using the macros if I'm not mistaken. Maybe if it didn't take 3 lines to say

"HeaderPage2 = XXXXX"

It would be nicer if it could be 1 line instead of.


!insertmacro MUI_HEADER_START 2
!insertmacro MUI_HEADER_TEXT 1033 "Choose Components" "Choose the components you want to install."
!insertmacro MUI_HEADER_STOP 2


Is it even possible to incorporate changes like this? The first option is obviously easier to read and understand. If you don't know what that Macro refers to, you're just copy/pasting and replacing text...hoping that it works when you comile.

Have a look at Contrib\Modern UI\System.nsh, there is all the Modern UI code. The whole Modern UI works just using the NSIS scripting language!

These macro's just add a piece of code to your NSIS script, to make it a lot easier to use.

The SetPage function can be used for InstallOptions etc, that's why you have to insert 3 macro's, you can insert your own stuff between the START and STOP macro's (see InstallOptions.nsi).


Originally posted by Joost Verburg
Have a look at Contrib\Modern UI\System.nsh, there is all the Modern UI code. The whole Modern UI works just using the NSIS scripting language!

These macro's just add a piece of code to your NSIS script, to make it a lot easier to use.
I think we all understand that the UI is created with standard NSIS code. And I'm sure we all agree that macros CAN make our life easier. The macros may be easier for you to use because you created them and know exactly what's happening. To me, and apparently a good number of other people, they make things more confusing.

Granted, I just started playing with NSIS a couple of days ago, but it was certainly a pain to figure out what was going one between Basic.nsi, system.nsh and language.nlf. And I'm no programming newbie either. I was coding assembly on the Apple][ back in '84.

I guess what I and others, are try to get at is, can we take a harder look and see if there's a better or simpler way to do this? For starters, detailed comments in Basic.nsi and system.nsh would go a long way to helping people. Also, I finally clued in, but it would also be easier if the sections were grouped together in Basic.nsi. That way it would look much more similar to the other non-Modern UI examples. It's just a tad overwhelming when you first look at the basic example. :)

Joost, if it hasn't been said recently, thank you for spending the time and effort to make the extremely cool Modern UI. If I didn't think it was awesome, I wouldn't be taking the time to try to make it simpler - I'd just use the standard UI.

Because the Modern UI is made using NSIS code, you always need to insert some extra code to your scripts. "ModernUI on" is just not possible.

Of course I want to make it as easy as possible! Modern UI 1.3 is a lot easier than the first version. I also want to make it easier to use extensions like InstallOptions, that's why I integrated IO support, so you won't have to use all that MultiIni stuff.

I'm also working on a new system which will make it much easier to create basic Modern UI scripts.

If you got a good suggestion to make it easier, which is also technically possible, tell me. But just comments like 'I want it to be easier' are not very useful, I know that everyone wants it to be as easy as possible.


If someone can come up with a better solution, I would love to hear it. AFAIK, there is no easier solution. If you look at the system.nsh, you will see all of the coding that Joost has already done for you. The commands can't be built into NSIS if thats what you are looking for. If they were, what if I wanted to create my own UI. Then you would have a bunch of wasted code in NSIS, which would result in a larger installer size.


Originally posted by rainwater
If someone can come up with a better solution, I would love to hear it. AFAIK, there is no easier solution. If you look at the system.nsh, you will see all of the coding that Joost has already done for you. The commands can't be built into NSIS if thats what you are looking for. If they were, what if I wanted to create my own UI. Then you would have a bunch of wasted code in NSIS, which would result in a larger installer size.
When I get some time (which I don't have now since I'm trying to get my app to market) I'll see if I can come up with something.

I've already mentioned at some things like making NSIS look for a UI template in my second post on this thread. In other words, don't have ANY interface built into NSIS, just have it read a UI config file to determine what to put in. Am I making sense?

Originally posted by BradWaite


When I get some time (which I don't have now since I'm trying to get my app to market) I'll see if I can come up with something.

I've already mentioned at some things like making NSIS look for a UI template in my second post on this thread. In other words, don't have ANY interface built into NSIS, just have it read a UI config file to determine what to put in. Am I making sense?
We have already been thinking about things like that. There are a lot of other things which can be improved, such as the scripting language.

But it all requires a lot of work, so it won't be in NSIS 2. Maybe NSIS 3 :D

The Modern UI 1.3 has a new macro system for basic scripts which is a lot easier (this is now possible because kichik made !ifdef etc. support in macro's) :D