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