NxSMSILoaderDlg plug-in

From NSIS Wiki
Jump to navigationJump to search
Author: saivert (talk, contrib)


Download

Updated August 14th 2007: File moved to new server.

NxS MSI LoaderDlg.7z (60,6 KB)

Overview

This plugin is my version of the Banner plugin. I decided to write it after I saw the horrible MSIBanner plugin which was supposed to look like the dialog displayed when Windows Installer packages are opened (.MSI extension), of course it didn't. That's why this plugin was born.

Usage

The following fragment of script code uses all of the options/parameters that NxS MSI LoaderDlg supports.

NxSMSILoaderDlg::show /NOUNLOAD "Title of dialog" \
  /top "Top text" \
  /sub "Sub text (more info)" \
  /h 1 \
  /pos 43 \
  /max 100 \
  /can

TIP: Copy & paste into your script and modify the parameters.

The parameters explained:

/top
This sets the top text (to the right of the icon).
/sub
Sets the subtext (above the progress bar control).
/h
Shows/hides dialog from taskbar. Requires a number: 1 means hide. 0 means show.
/pos
Sets the progress bar position.
/max
Sets the number of steps the progress bar control has. Default value is 100.
/can
Enables/disables Cancel button on dialog. Requires a number: 1 = enable, 0 = disable. Default is disabled.

Notes

Values for the /pos parameter range from 0 (zero) to 100 or the value specified for the /max parameter.

Any other text passed on the stack (not one of the parameters) are used as the title of the dialog. If you pass multiple strings not recognized as a parameter the last one of these strings are used for the title. The rest is ignored.

To update the dialog use e.g:

NxSMSILoaderDlg::update /NOUNLOAD /top "Checking something..." /sub "78% complete" /pos 78

To get handle of the dialog (HWND) use:

NxSMSILoaderDlg::getWindow /NOUNLOAD
Pop $0 ; $0 now contains the handle to the dialog

TIP: You don't need to use getWindow in order to modify the text. Just use the NxSMSILoaderDlg::Update function using the same syntax as NxSMSILoaderDlg::show.

To check if the Cancel button has been pressed use:

NxSMSILoaderDlg::HasUserAborted /NOUNLOAD
Pop $R0 ; $R0 now contains "1" if user clicked Cancel or "0" (zero) otherwise.

To destroy the dialog and free resources use:

NxSMSILoaderDlg::destroy

See Example.nsi for an example.

Modern UI

This plugin doesn't behave differently when the installes uses the Modern UI add-on by Joost Verburg.

Custom UI

This plugin can not be modified except if you recompile it. The source code should be included.

Some More Tricks

This plugin does not have any "tricks" like the Banner plugin has.

Credits

Based on Banner (written by brainsucker and kichik) and MSIBanner (written by Joel) plugin projects.