Nascondere il pulsante Annulla durante un'installazione
È possibile nascondere il pulsante Annulla usato per annullare un'installazione usando un'opzione della riga di comando, l'API Windows Installer o un'azione personalizzata. Il pulsante Annulla può essere nascosto per parte o per tutta l'installazione a seconda del metodo usato.
Nascondere il pulsante Annulla dalla riga di comando
Il pulsante Annulla può essere nascosto durante l'installazione usando l'opzione della riga di comando (!). Questa operazione può essere eseguita solo per un'installazione a livello di interfaccia utente di base (/qb). Il pulsante Annulla è nascosto per l'intera installazione. Per altre informazioni, vedere Opzioni della riga di comando e livelli di interfaccia utente. La riga di comando seguente nasconde il pulsante Annulla e installa Example.msi.
msiexec /I example.msi /qb!
Nascondere il pulsante Annulla da un'applicazione o da uno script
È possibile scrivere un'applicazione o uno script per nascondere il pulsante Annulla . Questa operazione può essere eseguita solo per un'installazione a livello di interfaccia utente di base in modo che il pulsante Annulla sia nascosto per l'intera installazione.
Per nascondere il pulsante Annulla da un'applicazione, impostare INSTALLUILEVEL_HIDECANCEL quando si chiama MsiSetInternalUI. Nell'esempio seguente viene nascosto il pulsante Annulla e viene installato 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;
}
Per nascondere il pulsante Annulla dallo script, aggiungere msiUILevelHideCancel alla proprietà UILeveldell'oggetto Installer. L'esempio VBScript seguente nasconde il pulsante Annulla e installa Example.msi.
Dim Installer As Object
Set Installer = CreateObject("WindowsInstaller.Installer")
Installer.UILevel = msiUILevelBasic + msiUILevelHideCancel
Installer.InstallProduct "example.msi"
Nascondere il pulsante Annulla per parti di un'installazione usando un'azione personalizzata
L'installazione può nascondere e annullare il pulsante Annulla durante le parti di un'installazione inviando un messaggio di INSTALLMESSAGE_COMMONDATA usando un'azione o script personalizzati della DLL. Per altre informazioni, vedere Librerie di collegamento dinamico, script, azioni personalizzate e invio di messaggi a Windows Installer tramite MsiProcessMessage.
Una chiamata a un'azione personalizzata deve fornire un record. Il campo 1 di questo record deve contenere il valore 2 (due) per specificare il pulsante Annulla . Il campo 2 deve contenere il valore 0 o 1. Un valore pari a 0 in Campo 2 nasconde il pulsante e un valore pari a 1 in Campo 2 annulla il pulsante. Si noti che l'allocazione di un record di dimensioni 2 con MsiCreateRecord fornisce campi 0, 1 e 2.
L'azione personalizzata dll di esempio seguente nasconde il pulsante Annulla .
#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'azione personalizzata VBScript seguente nasconde il pulsante Annulla .
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