Possible to hide all details in NSIS installation progress page? - nsis

Using the Nullsoft Scriptable Install System (NSIS), I'm looking for a way to hide the details on the MUI_PAGE_INSTFILES page when having a setup with Modern UI 2.
Currently an example of what I have is this:
And this would be what I want to achieve:
(German only, sorry)
As you see, there is no information about the individual file being copied as well as no way to show the details.
I've searched the documentation of Modern UI 2 but found no function to call to make these two controls (label and button) hidden.
My question is:
Is there a way to hide the file label and the details button that are being shown during a setup installation progress?
Solved
With the help of Anders, I've managed to do what I want:
First, I put
ShowInstDetails nevershow
ShowUninstDetails nevershow
at the top of my NSI file. Next, I put
SetDetailsPrint none
inside at the beginning of the Section "All files" section, and I put
SetDetailsPrint none
inside at the beginning of the Section "Uninstall" section.
Both, my setup and my uninstaller now runs without showing details.

ShowInstDetails nevershow + SetDetailsPrint none
ShowInstDetails nevershow
Section
SetDetailsPrint none
SectionEnd

Related

NSIS: How to remove/hide MUI_LICENSEPAGE_TEXT_BOTTOM?

Hello to you who is reading this post. About a week ago I discovered NSIS and have just about managed to finish my first installer script. I managed to find answers to pretty much all of my questions through web searches, and have managed to create a pretty elaborate installer. There is one issue I can't figure out, as everything I have tried does not work and I can't find a solution online that I understand or is specific enough to be applied to this issue.
I'm using the modern UI "MUI2". I found some code to increase the size of the rich textbox on the license page which works great, but now the text at the bottom of the window (MUI_LICENSEPAGE_TEXT_BOTTOM) overlaps it and causes some visual bugs. Setting it to an empty string does not work and setting it to a single space does not work. I managed to get it to disappear with "FindWindow" and "GetDlgItem", but I'm not exactly a programmer so I don't have the intelligence or knowledge on how to set these up correctly. What I did manage to pull off, it also removed the rich textbox, and after several hours of defeat I finally gave up and turned to the internet.
It's kind of mind blowing to me that NSIS does not provide a simple way to remove controls. I don't want the "text bottom" label there at all, I want it gone or at the very least hidden. I know the handle I'm trying to remove is "1006" because I opened up the installer in Resource Hacker and removed the label from there. What bugs the me most is that actually worked perfectly and removes the label, but it also corrupts the installer and I have to use NCRC on command line to launch it. So scratch that as a workable solution...
TL;DR my question is: how do I hide or get rid of MUI_LICENSEPAGE_TEXT_BOTTOM?
MUI2 already has a variable you can use:
!include MUI2.nsh
!define MUI_PAGE_CUSTOMFUNCTION_SHOW HideMui2Text
!insertmacro MUI_PAGE_LICENSE
!insertmacro MUI_LANGUAGE "English"
Function HideMui2Text
ShowWindow $mui.LicensePage.Text 0
FunctionEnd
If you wanted to do it manually it would be
FindWindow $0 "#32770" "" $HWNDPARENT ; Find inner page
GetDlgItem $1 $0 1006 ; Find control
ShowWindow $1 0
When using Resource Hacker you need to copy the base file from NSIS\Contrib\UIs and in your script define MUI_UI to the path of your modified UI file.

NSIS -- Customize existing button?

Thanks for reading this.
I am making a program and I choose to package it using NSIS after getting disappointed by Inno.
I am trying to make a 2 steps install wizard. I could accomplish this by using Nsdialogs and a custom page.
Please see this image: here
Is it possible to change the "Install" button to became "I Agree" as in the license page?
and if this is possible, can this button be colored?
I have searched about this and I found some talk about a plugin called 'Buttonevent'. I download it and I saw the examples. AS I understood this can be used only to Add new buttons Not to change existing ones.
please help me if there is any clues.
That's a lot of code for a one-line solution. LicenseText is the attribute you are looking for. You should also consider using the license page as it is intended, too.
Page License
!include nsDialogs.nsh
Page Custom MyPageCreate
Page InstFiles
Function MyPageCreate
nsDialogs::Create 1018
Pop $0
GetDlgItem $1 $hwndparent 1 ; Get handle to Install/Next button
${NSD_SetText} $1 "$(^AgreeBtn)"
nsDialogs::Show
FunctionEnd
Changing button colors is a lot of work and cannot be done in NSIS without a plugin...

Hiding NSIS Dialog

I am new to NSIS so bear with me:
I am using NSIS (legacy code...) for making sure that .NET is installed before launching a .NET application.
If it is not installed, I am installing it for the user, but I would prefer getting user's approval before playing hooky with his system.
I was able to display the message to the user:
using this code:
WriteIniStr $MissingItemsIniFilename 'Field 2' 'State' '$R2'
WriteIniStr $MissingItemsIniFilename 'Settings' 'CancelEnabled' 1
InstallOptions::Dialog $MissingItemsIniFilename
Pop $1 ;get button action
my problem is that after user clicks Next the "dialog" is not closing and shows:
So my question is, How can I close the dialog?
Extra information:
I am using InstallOptions for showing the dialog.
I looked into nsDialogs but could not find there a solution that worked for me (might be due to lack of experience in NSIS).
Please let me know if any other information is required...
If you want to hide the entire installer you can do:
HideWindow
ExecWait ...
BringToFront
otherwise you should probably move that ExecWait to a Section...

Run installer minimized + NotifyIcon

I have my command line options that work for my installer, which involves the plugin NotifyIcon. Because of this plugin, I can not run my installer silently through the command line. It has one custom page MUI page over. Two questions occured to me, so if anyone can help, please do so.
I'm using MUI, so I know I have to use a separate function and then define MUI_CUSTOMFUNCTION_GUIINIT myGuiInit ! I load the code correctly and icon works for me properly.
Running the installation mínimimizado. I've dealt with "HideWindow" on . MyGuiInit OnInit and also in my own functions, and anywhere else I could think of, but that does not work very well. What I need is that the first boot installation window minimized and the icon appears on the task bar (this already works for me) and when you press the icon on the taskbar window is restored installation to continue with the installation normally.
I don't really understand your question but if you want to start the installer minimized you can do:
!define MUI_CUSTOMFUNCTION_GUIINIT myGuiInit
Function myGuiInit
System::Call 'USER32::PostMessage(i$hwndparent,i0x0112,i0xF020,i0)'
FunctionEnd

NSIS scripts-Changing header text. Also using same variable in both installer and uninstaller section

I am writing an installer using NSIS. I wanna know how to change or write a description(text on white header)on custom pages? For eg: I am inserting a customized page after the directory page and the description remains the same i.e Choose Install Location...
But I wanna change it according to my page requirement. How should I change this text?
Also I wanna access a variable in uninstaller section which is set with some string in installer section. Please help me on this...
Okay, you seem to have two questions there.. probably best to post them separately :)
For setting the title of the customized page, simply use the following macro (I've got mine placed just prior to calling nsDialogs::Create)
!insertmacro MUI_HEADER_TEXT $(MY_CUSTOM_TITLE) $(MY_CUSTOM_SUBTITLE)
Where MY_CUSTOM_TITLE and MY_CUSTOM_SUBTITLE are variables set elsewhere.
You will need to save the string value of the variable during installation by writing it out to a file or registry setting, and then later during uninstallation reading that value from the same location.
I think you need to do this:
!define MUI_DIRECTORYPAGE_TEXT_DESTINATION "My alternate Choose Install Location text"
You could also edit the language files. This is assuming you are using MUI for your custom pages:
http://nsis.sourceforge.net/Docs/Modern%20UI/Readme.html

Resources