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:
Related
I'm making my own design for the Inno wizard, but I can't seem to find how to change the background color of the buttons (next/back/cancel).
Does anyone know?
I know it has to be in the [Code] section under procedure InitializeWizard();
And should look something like
WizardForm.NextButton.Color := $464646;
But obviously this one doesn't work, hence I'm looking for any suggestions. And please don't recommend plugins, not going to use any plugins. My style looks the way I wanted it to look aside from the buttons.
This is not possible in vanilla Inno Setup.
In Windows drawing buttons is a complex task because buttons typically contains several "layers" which are painted individually - like frame, shadows, body (not single color).
The easiest to achieve this is to write custom plugin for Inno Setup (either C/C++ or Delphi - based on your preferences) and use the WIndows API, however this requires some additional knowledge.
See https://learn.microsoft.com/en-us/windows/win32/controls/button-styles?redirectedfrom=MSDN#BS_OWNERDRAW for more info.
In my Inno Setup project, I have some file in the [Run] section with flag postinstall, so Inno Setup creates a check box for this file in "finished" page. And now my question is, how to access properties of this check box (like Left, Right, Name,...) in Code section? I want to add some other component under this check box on run time.
The checkboxes on the "finished" page are not individual controls.
All checkboxes are just items in WizardForm.RunList of type TNewCheckListBox.
For similar a question, see Custom TLabel not displaying on FinishedPage in Inno Setup.
Hello I made an Inno Setup Script which has a custom uninstaller forms during uninstall of the program.
Those uninstaller forms are created by me according to the way described in this post(question):
Custom Uninstall Page (not MSGBOX).
But creating Custom Forms like that is looking bit bad because there is no way to display any kind of "IMAGE" in those.
I want to display one sameBitmap Image in all of my notebook pages whose displayed after pressing "Yes" to the message box Are you sure....?.
Displaying this in a Notebook Page is very hard.How can I do this?
My Bitmap Image should be in the bottom of the Notebook Page.
An image of the first Notebook Page I created.
Thanks in Advance.
Put the image outside of the notebook and make sure the notebook does not cover the space reserved for the image. This is the way the installer wizard is implemented.
Or just clone the image on all pages.
To add a new image, use TBitmapImage.Create. See for example: inno setup bmp image appear on a single page
I'm using the following lines to change the MainPanel color and WizardSmallBitmapImage image:
[Setup]
WizardSmallImageFile=MyFile.bmp
[Code]
procedure InitializeWizard;
begin
WizardForm.MainPanel.Color := $00FFDBBF;
end;
In my setup I'm using the isxdl plugin for downloading prerequisites and the problem is that when its downloading progress page is shown, the MainPanel and WizardSmallBitmapImage components change their look back to the default as I've tried to illustrate on this picture:
Why does the wizard form header change when the isxdl plugin downloading page is shown and how to keep the modified look of the page header even for this page ?
The root of this problem lies deep inside the isxdl plugin which draws its own header, so what you see on that page is not Inno Setup's MainPanel and WizardSmallBitmapImage but elements drawn by that plugin, hardcoded in its source code.
In my view it would be unecessarily overcomplicated (if even possible) to intercept that plugin's window proc for overdrawing those elements with their actual look (in a response to the WM_PAINT message), so I would suggest you either building your own version of that plugin, or switching to a different plugin, e.g. Inno Download Plugin which is also easy to use and which doesn't break the wizard look.
I've been playing around with Inno Setup 5.3.6; trying to customize the installers colors. Mainly the banner that appears at the head of the installer. But as of yet i have no luck finding a way of doing this easily.
After reading through the documentation I found the BackColor, BackColor2, BackColorDirection and BackSolid parameter. But giving them different values has as of yet not given me any visual change whatsoever.
Quick example of what I'm trying to do
[Setup]
AppName=My Program
AppVerName=My Program version 1.4
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
BackColor=$E6B13A
BackColor2=$E5B13A
BackSolid=no
BackColorDirection=lefttoright
What I'm wondering is, does anyone know what colors BackColor and BackColor2 actually modifies? And if there is no simple way of changing the colors; is there any way to modify the upper banners color gradient programmatically using the [Code] segment?
The four parameters are described in the Cosmetic section of the documentation of the [Setup] section in the Inno Setup help. They do what you would expect, but not for the gradient in the upper area of the setup wizard, but for the background window that was customary a few years ago. This is considered legacy, but can be enabled by setting
[Setup]
...
WindowVisible=yes
(the default value is no). You can try this to see it in action, but IMO you shouldn't enable this for your installations unless you want them to look rather dated.
As for the top area of the wizard: It is not meant to have a gradient. If you use a tool like Spy++ to check the window hierarchy of the wizard, or open the Wizard.dfm.txt text file from the Inno Setup sources, you will find that there is a window of the class TPanel with the colour set to the default window colour (clWindow if you know Delphi, or the result of calling GetSysColor() with the COLOR_WINDOW constant). This is a solid colour, which you can change easily by adding this to your [Code] section:
procedure InitializeWizard();
begin
WizardForm.MainPanel.Color := clYellow;
end;
I don't think it is possible with the current Inno Setup versions to draw a gradient on this panel, because the panel itself has no canvas to draw on, and the TPaintBox class which could maybe be created in the right place and be used to draw the gradient isn't available (see list of classes in the "Support Classes Reference" section of the documentation).
this is an old question, but someone might stumble here like i did. The most elegant way to change the inno setup color schemes is by using a 3rd party tool called ISSkin