Skip to content
⌘ NSIS Forum Archive

Ultra-Modern UI

269 posts

DrO#
am fed up of seeing people complaining about the missing buttons (which aren't depending on the colour scheme and how well your monitor is setup - they are just grey blobs by default which makes them visible 😉 ) so i've had a quick look at the plugin (which someone should have done ages ago rather than keep posting 'me too' replies) which does the skinning and it's due to an attempt in the code to not mis-handle link style controls from the InstallOptionsEx plugin.

the attached version (includes updated SkinnedControls plugin and UMUI.nsh to replace your existing ones) i hope will rectify this and seems to work ok with the example files i threw at it (mainly IOEx based ones and the script for UltraModernUI). if it is ok then i'll clean up my changes to the source code for SuperPat to put into the distro, etc.

-daz
LoRd_MuldeR#
Thanks a lot, DrO 😎

I tried your fixed version of SkinnedControls and it seems to work much better. All the "standard" buttons (Next, Back, Cancel, etc) are visible and skinned now! Unfortunately the "Show Details" button on the install page is still missing. This is on Windows 7, RC-1, 64-Bit. Hope the remaining problem can be fixed too.

[EDIT]

The "Show Details" button is now missing on Windows XP too, so the fix broke something 😕
DrO#
hmm, ok. wasn't aware of the UMUI installers showing that button in the first place but then again with the button style checks i'm having to do it's not that much of a surprise. what script are you using or is there a test script that shows the issue (just need something as i'm far too rusty on my nsis coding to remember what's needed to have that button show).

also at the moment i'm only working on a Vista x64 install but that should give the same results as Win7 i'd have hoped.

-daz
LoRd_MuldeR#
My script is available from my SVN:


But it's a pretty big script with lot of dependencies.
It will be more easy to reproduce the problem with one of the UMUI example script, I think.

You can try:
NSIS\Examples\UltraModernUI\Basic.nsi
DrO#
okies, will have a look into it on thursday night now (have prior commitments so won't be able to do any coding tonight now). though one non-drawn button out of all of them is better than before 😉. will post back once i've had a play around with things.

-daz
LoRd_MuldeR#
Originally posted by DrO
okies, will have a look into it on thursday night now (have prior commitments so won't be able to do any coding tonight now). though one non-drawn button out of all of them is better than before 😉. will post back once i've had a play around with things.

-daz
Thanks. Looking forward...
DrO#
lets see how this one works. is a better direct fix of the first issue against the original code but it also uses the mode i implemented to handle some edge cases for some InstallOptions buttons.

-daz
LoRd_MuldeR#
I can confirm that this versions works correctly on Windows XP (64-Bit) and Windows 7 RC-1 (64-Bit).

Great work 😁

Now I hope that SuperPat will include the fixed version in UMUI...
DrO#
that's a relief to know it's working 🙂
now i just need to provide the altered files that need to be included in svn for SuperPat...

-daz
SuperPat#
Nice work, Thanks a lot!

I will release a new version as soon as I received the fixed skinned controls source code and as soon as NSIS 2.45 will be released.

Can you see why the transparent icons background are grey with the InstallOptionsEx plugins (See the InstallOptions.nsi example)? Thanks.
DrO#
see how the icon thing works with the following test build. appears to work ok from a few quick tests (was due to the icon handling not respecting transparency in the same way the bitmap loader does - will now do the same for both)

-daz
SuperPat#
It works!

Can I ask you why your DLLs are smaller than mine (compiled in release mode with Visual 2005)?
Do you use visual studio 2008 or a particular option?
DrO#
yay 🙂

i've been compiling them in release mode with VS2003 and changed it to not use the Win98 loading optimisation (just a habit from the other projects i work on). also the Skinned Controls one was not set to remove unused sections / comdat stuff (whereas IOex was set to do so).

i'll have the altered source files uploaded probably later tonight but will leave you to alter the project files as needed (makes more sense if you're building with VS2005 rather than mess things up with the files i've got adjusted to load in VS2003).

-daz
DrO#
SuperPat: here's the edited source files.

-daz
LoRd_MuldeR#
I noticed a serious problem with UMUI and the UAC plugin: The UAC plugin will create two processes. The "outer" process is running with user privileges, the "inner" one with elevated rights. The "inner" process is the actual installer, but whenever it needs to do something as the normal user (e.g. launch an application that we don't want elevated) it will ask to the "outer" process to do that. So far this works fine and fixed my problems.

Now the UMUI problem: When UMUI changes the language, it will re-start the installer. When using UAC this means: The "inner" process will terminate (and re-start), the "outer" process will terminate after the "inner" has terminated. Now only the "inner" process (the new instance created by UMUI after language switch) is running, but the "outer" process is missing. Consequently all actions that needed the "outer" process will fail (do nothing in fact).

How can I workaround that problem? Thanks in advance 🙂
SuperPat#
New build version 2009-06-13

- Based on NSIS v2.45
- Fixed: The serial number page show validation error texts if the an abort page is inserted and if you cancel the page while the fields are not filled.
- Fixed: The SoftGrey Skin was show the SoftBule images

SkinnedControls plugin:
- Fixed: InstallOptionsEx button were not skinned (by daz)
- Fixed: Vista SP1, SP2 and Seven x64 buttons were not drawn (by daz)

InstallOptionsEx plugin updated to version 2.4.2b2:
- Compiled with VisualStudio 2008. Smaller dll.
- Added: skipValidation dll function: If a page contains fields with MinLen or MaxLen and ValidateText attributes, you can go to the next page by skipping the text validation.</li>
- Fixed: Memory access violation (by phalanger)
- Fixed: Transparent icons had a grey background (by daz)
- New: Two versions of the plugin are available: a legacy version and a version using the new NSIS plugin API.

Download
SuperPat#
Originally posted by LoRd_MuldeR
Now the UMUI problem: When UMUI changes the language, it will re-start the installer. When using UAC this means: The "inner" process will terminate (and re-start), the "outer" process will terminate after the "inner" has terminated. Now only the "inner" process (the new instance created by UMUI after language switch) is running, but the "outer" process is missing. Consequently all actions that needed the "outer" process will fail (do nothing in fact).

How can I workaround that problem? Thanks in advance 🙂
I have tried with UAC, but but I did not find any problems...
The inner process has a higher privilege level too.
Anders#
I should add that the UAC plugin is not tested or supported on other UI's. Having said that, you could probably move the call to the UAC plugin after the language selection (I have never used the UMUI and don't know how it works)
SuperPat#
Originally posted by Anders
I should add that the UAC plugin is not tested or supported on other UI's. Having said that, you could probably move the call to the UAC plugin after the language selection (I have never used the UMUI and don't know how it works)
I don't use the UAC plugin in UltraModernUI, just the instruction in packages script:
RequestExecutionLevel admin

I never tested the UAC plugin
LoRd_MuldeR#
Originally posted by SuperPat
I have tried with UAC, but but I did not find any problems...
The inner process has a higher privilege level too.
When using the UAC Plugin only the "inner" process is elevated. The "outer" process runs with RequestExecutionLevel user. This way the "inner" process, while being elevated, can ask the "outer" one to run jobs at user level. This is required, because once a process is elevated, all processes it creates are elevated too. But this causes serious problems. If you launch a normal application with elevated rights, then Drag&Drop will be disabled. And other strange things happen! So we need to be able to launch Non-elevated processes from an elevated installer. That's why the UAC Plugin is so important: It allows to run the "main" (inner) installer at elevated level and do the install tasks, but we can still launch user processes from the "outer" process.

Now the problem with UMUI is that it restarts the installer, when the language is changed. When using UAC Plugin, only the "inner" installer will be restarted. The "outer" one will simply terminate! Because the "outer" one was waiting for the "inner" one and the "inner" one has terminated, so the "outer" one does too. It can't know that the "inner" one created a child process, just before it terminated. Well, that's the usual ExecWait behavior. As a result only the "inner" (elevated) installer will be running after language change in UMUI. All calls that would involve the "outer" installer, such as UAC::Exec will fail! That's a serious problem and it means we can't use UMUI with UAC right now.

I came up with the following workaround for that:


Any comments would be welcome 🙂

It's really important to get UMUI working with UAC...
SuperPat#edited
New build version 2009-06-14

- Fixed: Problem with the UAC plugin when UMUI restart the installer.

Download
LoRd_MuldeR#edited
Originally posted by SuperPat
New build version 2009-06-14

- Fixed: Problem with the UAC plugin when UMUI restart the installer.

Download
Oh, wow. That was fast. Thanks!

But your "Download" link redirects to an empty folder. Do I miss something? 😕
SuperPat#
Oups, very old link, sorry (last post edited):



Moderator, please can you update the link in the first post?
logue#
I've made Japanese language file for UMUI.
SuperPat#
New build version 2009-12-06

- Based on NSIS v2.46
- Added: Japanese translation (by logue)

Download
SuperPat#
It seems that the world "u_l_t_r_a_m" is censored in this board, so I can't post link containing these characters and and the link of my signature does not work anymore...

Please, is an administrator could remove this word from the list?
LoRd_MuldeR#
SuperPat, thanks for the update 🙂

As a temporary workaround for the link problem, you could use:
http://*******.com/

EDIT: Arrgh, T.I.N.Y_U.R.L is censored as well 😢