Masquage du bouton Annuler pendant une installation

Vous pouvez masquer le bouton Annuler utilisé pour annuler une installation en utilisant une option de ligne de commande, l’API Windows Installer ou une action personnalisée. Le bouton Annuler peut être masqué pour tout ou partie de l’installation en fonction de la méthode que vous utilisez.

Masquage du bouton Annuler à partir de la ligne de commande

Le bouton Annuler peut être masqué pendant l’installation en utilisant l’option de ligne de commande (!). Ceci peut être effectué seulement pour une installation au niveau de l’interface utilisateur de base (/qb). Le bouton Annuler est masqué pour toute l’installation. Pour plus d’informations, consultez Options de ligne de commande et Niveaux d’interface utilisateur. La ligne de commande suivante masque le bouton Annuler et installe Example.msi.

msiexec /I example.msi /qb!

Masquage du bouton Annuler à partir d’une application ou d’un script

Vous pouvez écrire une application ou un script pour masquer le bouton Annuler. Ceci peut être effectué seulement pour une installation au niveau de l’interface utilisateur de base afin que le bouton Annuler soit masqué pour toute l’installation.

Pour masquer le bouton Annuler depuis une application, définissez INSTALLUILEVEL_HIDECANCEL lors de l’appel de MsiSetInternalUI. L’exemple suivant masque le bouton Annuler et installe Example.msi.

#include <windows.h>
#include <stdio.h>
#include <Shellapi.h>
#include <msi.h>
#include <Msiquery.h>
#include <tchar.h>
#pragma comment(lib, "msi.lib")

int main()  
{

INSTALLUILEVEL uiPrevLevel = MsiSetInternalUI( INSTALLUILEVEL(INSTALLUILEVEL_BASIC | INSTALLUILEVEL_HIDECANCEL), 0); 
UINT uiStat = MsiInstallProduct(_T("example.msi"), NULL);

return 0;  
}

Pour masquer le bouton Annuler à partir d’un script, ajoutez msiUILevelHideCancel à la propriété UILevel de l’objet Installer. Le VBScript suivant masque le bouton Annuler et installe Example.msi.

Dim Installer As Object
Set Installer = CreateObject("WindowsInstaller.Installer")
Installer.UILevel = msiUILevelBasic + msiUILevelHideCancel
Installer.InstallProduct "example.msi"

Masquage du bouton Annuler pour des parties d’une installation en utilisant une action personnalisée

Votre installation peut masquer et afficher le bouton Annuler pendant certaines parties d’une installation en envoyant un message INSTALLMESSAGE_COMMONDATA en utilisant une action personnalisée de DLL ou un script. Pour plus d’informations, consultez Bibliothèques de liens dynamiques, Scripts, Actions personnalisées et Envoi de messages à Windows Installer en utilisant MsiProcessMessage.

Un appel à une action personnalisée doit fournir un enregistrement. Le champ 1 de cet enregistrement doit contenir la valeur 2 (deux) pour spécifier le bouton Annuler. Le champ 2 doit contenir la valeur 0 ou 1. La valeur 0 dans le champ 2 masque le bouton et la valeur 1 dans le champ 2 affiche le bouton. Notez que l’allocation d’un enregistrement de taille 2 avec MsiCreateRecord fournit les champs 0, 1 et 2.

L’exemple d’action personnalisée de DLL suivant masque le bouton Annuler.

#include <windows.h>
#include <stdio.h>
#include <Shellapi.h>
#include <msi.h>
#include <Msiquery.h>

UINT __stdcall HideCancelButton(MSIHANDLE hInstall)
{
    PMSIHANDLE hRecord = MsiCreateRecord(2);
    if ( !hRecord)
        return ERROR_INSTALL_FAILURE;

    if (ERROR_SUCCESS != MsiRecordSetInteger(hRecord, 1, 2)
     || ERROR_SUCCESS != MsiRecordSetInteger(hRecord, 2, 0))
        return ERROR_INSTALL_FAILURE;

    MsiProcessMessage(hInstall, INSTALLMESSAGE_COMMONDATA, hRecord);

    return ERROR_SUCCESS;
}

L’exemple d’action personnalisée de VBScript suivant masque le bouton Annuler.

Function HideCancelButton()

    Dim Record
    Set Record = Installer.CreateRecord(2)

    Record.IntegerData(1) = 2
    Record.IntegerData(2) = 0

    Session.Message msiMessageTypeCommonData, Record
 
    ' return success
    HideCancelButton = 1
    Exit Function

End Function