Share via


Ocultar el botón Cancelar durante una instalación

Puede ocultar el botón Cancelar que se usa para cancelar una instalación mediante una opción de línea de comandos, la API de Windows Installer o una acción personalizada. El botón Cancelar se puede ocultar para parte o para toda la instalación en función del método que use.

Ocultar el botón Cancelar desde la línea de comandos

El botón Cancelar se puede ocultar durante la instalación mediante la opción de línea de comandos (!). Esto solo se puede hacer para una instalación de nivel básico de la interfaz de usuario (/qb). El botón Cancelar se oculta para toda la instalación. Para más información, consulte Opciones de línea de comandos y Niveles de interfaz de usuario. La siguiente línea de comandos oculta el botón Cancelar e instala Example.msi.

msiexec /I example.msi /qb!

Ocultar el botón Cancelar de una aplicación o script

Puede escribir una aplicación o un script para ocultar el botón Cancelar. Esto solo se puede hacer para una instalación de nivel básico de la interfaz de usuario para que el botón Cancelar esté oculto durante toda la instalación.

Para ocultar el botón Cancelar de una aplicación, establezca INSTALLUILEVEL_HIDECANCEL al llamar a MsiSetInternalUI. En el siguiente ejemplo se oculta el botón Cancelar y se instala 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;  
}

Para ocultar el botón Cancelar del script, agregue msiUILevelHideCancel a la propiedad UILevel del objeto Installer. En el siguiente ejemplo de VBScript se oculta el botón Cancelar y se instala Example.msi.

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

Ocultar el botón Cancelar durante partes de una instalación mediante una acción personalizada

La instalación puede ocultar y mostrar el botón Cancelar durante determinadas partes de una instalación enviando un mensaje INSTALLMESSAGE_COMMONDATA mediante una acción o scripts personalizados de DLL. Para más información, consulte Bibliotecas de vínculos dinámicos, Scripts, Acciones personalizadas y Envío de mensajes a Windows Installer mediante MsiProcessMessage.

Una llamada a una acción personalizada debe proporcionar un registro. El campo 1 de este registro debe contener el valor 2 (dos) para especificar el botón Cancelar. El campo 2 debe contener el valor 0 o 1. Un valor de 0 en el campo 2 oculta el botón y un valor de 1 en el campo 2 lo muestra. Tenga en cuenta que asignar un registro de tamaño 2 con MsiCreateRecord proporciona los campos 0, 1 y 2.

La siguiente acción personalizada de DLL de ejemplo oculta el botón Cancelar.

#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;
}

La siguiente acción personalizada de VBScript oculta el botón Cancelar.

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