NSIS license page - nsis

Is there anyway you could resize the rich textbox in the license page of an NSIS installer?
Thanks...

there are several choices that affect the size a little bit, checkbox vs button etc
Switch to the Modern UI if you are not already using it
Copy and resize one of the dialogs in \Contrib\UIs with resource hacker and use ChangeUI in your script
Call GetWindowRect/ScreenToClient/SetWindowPos with the system plugin at runtime in the show callback function for the page

Related

Inno Setup: Color for modal and browse directory windows

Is it possible to change inner background color for modal and browse directory windows in Inno Setup? In my case I want it should be white.
UPD: Same behaviour is on the inner pages of Inner Setup, but I've fixed it by setting WizardForm.InnerPage.Color := clWhite;
I'm using VclStylesInno for styling my installer with custom style spreadsheat.
You cannot change the color of these in Inno Setup itself, except by a custom build of Inno Setup or some addon DLL (see below).
All you can do is to re-implement these dialogs from the scratch:
For the "browse" dialog: Handle the WizardForm.DirBrowseButton.OnClick and use CreateCustomForm and TFolderTreeView to implement the browse dialog. Download Inno Setup code and copy the existing implementation from SelFolderForm.pas.
For an example of handling WizardForm.DirBrowseButton.OnClick, see
How to display localized Program Files name (display name) during installation?
For the "cancel" dialog: Implement the CancelButtonClick event function. Make sure you set Confirm to False to get rid of the default prompt. And implement your own. Again, use the CreateCustomForm.
It's a lot of work for a small gain. I'd not do it.
Instead, you can use VCL Styles for Inno Setup (DLL) to style Inno Setup windows (including all modal dialogs).
As turned out, the reason was in the "Colors" option in Bitmap Designer, which I use to modify my installer style. This option makes some additional styling for controls:

Choose a folder dialog for nsis

I have a problem with the skin that I am using for my nsis installer.
Is there a way to control to not apply skin to choose a folder dialog.
I am using Skincrafter plugin to apply this skin.
Generally if I load it after initializaiton, it applies to all pages/inner dialogs and child dialogs. I do not want Browse for a folder dialog to have a skin.
Can someone please provide any suggestions?
There is no way how to fix this from NSIS.
Asks the authors to add this feature for you or (if the sources are available) modify the it by yourself to fit your needs.
There are also some other skinning systems for NSIS - e.g. mine Graphical Installer (sorry for this little promo :) so you can try to use them.

How to make a single page installation wizard?

I made a python program and I compiled it using Py2exe and it works great.
As you know, all the big softwares shifted to 1-3 steps install. And many have just one page install in which they include their EULA. I found an example of this:
Image:
How to make just a single page wizard in NSIS ? Is it possible to do a single page installer like shows the above image ?
A NSIS installer is never going to be a one page wizard because the actual installing happens on a 2nd page.
There are probably two ways to create the every detail on one page wizard:
Use Resource Hacker to edit the directory page in one of the NSIS ui's in NSIS\Contrib\UIs to add a richedit control and in the script use ChangeUI to apply this new page then at run-time use one of the license plugins to fill the richedit control.
Create a custom page with nsDialogs.

nsis createting InternetShortcut not displaying icon

When I try to give custom icon while creating InternetShortcut that particulat icon is not there in created InternetShortcut. Default icon is comming.
Here is code:
WriteINIStr "$SMPROGRAMS\Launch_APP.url" "InternetShortcut" "URL" "http://localhost:9080/myapp/index.php"
WriteINIStr "$SMPROGRAMS\Launch_APP.url" "InternetShortcut" "IconFile" "$ReadmePath\A.ico"
CreateShortcut uses IShellLink to create shortcuts and is not supposed to be used to create internet shortcuts. The documented interface you are supposed to use to create internet shortcuts is IUniformResourceLocator. NSIS does not have a native instruction for this but it can be called by the system plugin using its COM syntax. To set the icon you would have to QueryInterface for IPropertySetStorage and set PID_IS_ICONFILE. In the end you are just going to end up with the same .ini file which is why a lot of examples (NSIS and other stuff) just write using the .ini API.
You could try adding IconIndex=0 to the .ini but my guess is that the icon path is wrong or icon caching is getting in the way.
Have you tried clearing the icon cache or testing on a different machine?
Thanks for using NSIS.
So - There is function CreateShortCut (nsis.sourceforge.net/Docs/Chapter4.html#4.9.3.4). it is intended to create any shortcut Windows supports. You should use it. If you find some specific case where it does not work, feel free to mail to Devs in NSIS contact list or create ticket in their bug-tracker.

How to add a progress bar so the user doesn't hit Cancel in a dialog?

I'm working with Installshield 2011 on a basic MSI project.
The problem I have is that the SetupInitialization dialog is taking about 2 to 3 minutes when performing upgrades. During those minutes the users only see:
Computing space requirements
And nothing seems to be happening.
I'd like to add some kind of progress bar so they become aware that something is happening and that they shouldn't hit cancel (We've documented that this steps takes a while, but of course everybody reads the documentation, right?)
I've tried adding an animated GIF file with some kind of progress bar, but seems like GIF files are not permitted in dialogs.
Now I'm exploring the Progress Bar control, but I'm not sure this is the right way to go.
Does anybody know how can I achieve what I need?
Thanks,
Unfortunately this is not supported by MSI packages.
Do you have custom actions in InstallUISequence? If you do, make sure that you set an Action Text for them. The initialization dialog should display the action text for all InstallUISequence actions executed before the first modal installation dialog.
If you don't have custom actions, but you have a very large installer, you have limited options.
A solution would be an external UI which can display an indeterminate progress. For example a HTML control. Not sure if InstallShield supports a custom progress bar in HTML, but you can try.

Resources