Compartilhar via


Como ocultar o botão Cancelar durante uma instalação

Você pode ocultar o botão Cancelar usado para cancelar uma instalação usando uma opção de linha de comando, a API do Windows Installer ou uma ação personalizada. O botão Cancelar pode ser oculto por parte ou por toda a instalação, dependendo de qual método você usa.

Ocultando o botão Cancelar da linha de comando

O botão Cancelar pode ficar oculto durante a instalação usando a opção de linha de comando (!). Isso só pode ser feito para uma instalação básica no nível da interface do usuário (/qb). O botão Cancelar está oculto para toda a instalação. Para saber mais, confira Opções de linha de comando e Níveis de interface do usuário. A linha de comando a seguir oculta o botão Cancelar e instala Example.msi.

msiexec /I example.msi /qb!

Ocultando o botão Cancelar de um aplicativo ou Script

Você pode escrever um aplicativo ou script para que oculte o botão Cancelar. Isso só pode ser feito para uma instalação básica no nível da interface do usuário para que o botão Cancelar fique oculto para toda a instalação.

Para ocultar o botão Cancelar de um aplicativo, defina INSTALLUILEVEL_HIDECANCEL ao chamar MsiSetInternalUI. O exemplo a seguir oculta o botão Cancelar e 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 o botão Cancelar do script, adicione msiUILevelHideCancel à propriedade UILevel do Objeto Installer. O exemplo VBScript a seguir oculta o botão Cancelar e instala Example.msi.

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

Ocultar o botão Cancelar para partes de uma instalação usando uma ação personalizada

Sua instalação pode ocultar e remover o botão Cancelar durante partes de uma instalação enviando uma mensagem INSTALLMESSAGE_COMMONDATA usando uma ação ou scripts personalizados de DLL. Para saber mais, confira Bibliotecas de link dinâmico, Scripts, Ações personalizadas e Envio de mensagens para o Windows Installer usando MsiProcessMessage.

Uma chamada para uma ação personalizada deve fornecer um registro. O campo 1 desse registro deve conter o valor 2 (dois) para especificar o botão Cancelar. O campo 2 deve conter o valor 0 ou 1. Um valor 0 no Campo 2 oculta o botão e um valor de 1 no Campo 2 desmarque o botão. Observe que alocar um registro de tamanho 2 com MsiCreateRecord fornece os campos 0, 1 e 2.

A ação personalizada de DLL de exemplo a seguir oculta o botão 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;
}

A Ação Personalizada VBScript a seguir oculta o botão 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